function loadLink (urly, div) {
    return loadLink (urly, div, "");
}

function loadLink (urly, div, param) {
    var req = new Request.HTML({url:urly, 
        onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
            $(div).innerHTML = responseHTML;
            afterAjaxCalls();
        },
        onFailure: function() {
            $(div).set('text', 'ERROR');
        }
    });
    if (param) req.send(param);
    else req.send();
}

function submitFormInDiv (form, div) {
	var req = new Request.HTML({url:form.action, 
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			$(div).innerHTML = responseHTML;
			if (setupTinyMCE) setupTinyMCE();
			// alert(responseHTML);
			afterAjaxCalls();
		},
		onFailure: function() {
			$(div).set('text', '');
		}
	}).post(form);
} 

function loadDiv (urly, div) {
	var req = new Request.HTML({url:urly + '?rid=' + randomNumber(), 
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			$(div).innerHTML = responseHTML;
			if (setupTinyMCE) setupTinyMCE();
			// alert(responseHTML);
			afterAjaxCalls();
		},
		onFailure: function() {
			$(div).set('text', '');
		}
	}).send();
} 

function randomNumber () {
	return Math.floor(Math.random()*1000000001);
}


var toggletext = new Object();
toggletext[""] = "";			
toggletext["Weitere Informationen anzeigen"] = "Weitere Informationen ausblenden";
toggletext["weitere Informationen anzeigen"] = "weniger Informationen anzeigen"; 
toggletext["Mehr Bilder einblenden"] = "Weniger Bilder anzeigen"; 
toggletext["Bilder &amp; Details einblenden"] = "Bilder &amp; Details ausblenden"; 
toggletext["Bilder &amp; Details ansehen"] = "Bilder &amp; Details ausblenden"; 
toggletext["Details zu Preis und Verfügbarkeit einblenden"] = "Details zu Preis und Verfügbarkeit ausblenden";
toggletext["Weitere Wochen anzeigen"] = "Weitere Wochen ausblenden"; 
toggletext["Details"] = "Details ausblenden"; 
toggletext["Details einblenden"] = "Details ausblenden"; 
toggletext["Details der Reservierung / Stornierung anzeigen"] = "Details der Reservierung / Stornierung ausblenden"; 
toggletext["Weitere Suchoptionen zeigen"] = "Weniger Suchoptionen";
toggletext["Karte vergrößern"] = "Karte verkleinern";	


var flipText = function(tog) {
	if (!tog) return;
	tog.origtext = tog.get('html');	
	if (!tog.offtext || tog.offtext == "") {
		tog.offtext = tog.origtext;
		tog.ontext = toggletext[tog.offtext.trim()];
		if (!tog.ontext) tog.ontext = tog.offtext;
	}
	return tog;
}; 

var initKlippklappBoxes = function(kkToggles, contentDiv, headerDiv) {
	if (!kkToggles) kkToggles = $$('.klippklapp .listitem .header a.toggle');
	if (!contentDiv) contentDiv = 'div.inhalt';
	if (!headerDiv) headerDiv = 'div.header';
  
	if (kkToggles.length > 0) {
		kkToggles.each(function(tg) {
			var header = tg.getParent(headerDiv);
			var box = header.getNext(contentDiv);
			
			if (box) {
        if (!header.hasClass('header_open')) {
          var boxFx = new Fx.Slide(box).hide();	
					if (isIE7) {
						$$('div.calendarHolder').hide();
					}
        }
        else {
          var boxFx = new Fx.Slide(box);
        }        
        tg.addEvent('click', function(evt) {
          evt.stop();
          if (!header.hasClass('header_open')) {
            boxFx.cancel();
            boxFx.slideIn();
            header.addClass('header_open');
						if (isIE7) {
							// $$('div.calendarHolder').show();
							(function() { box.getElement('div.calendarHolder').show() }).delay(500);
						}
          }
          else {
            boxFx.cancel();
            boxFx.slideOut();
            header.removeClass('header_open');
						if (isIE7) {
							box.getElement('div.calendarHolder').hide();
						}
          }				
        });	
			}
		});
	}
};

// Nachträglich Aufklappen des ersten Elements. Alle anderen bleiben zugeklappt.

var initPresseKlippklapps = function() {     
  var kkToggles = $$('.klippklapp .listitem .header a.toggle');
  var contentDiv = 'div div.inhalt';
  var headerDiv = 'div.header';  
  if (kkToggles.length > 0) {
    kkToggles.each(function(tg, index) {
      var header = tg.getParent(headerDiv);      
      var box = header.getNext(contentDiv);      
      if (box) {
        if (index != 0) {
          var boxFx = new Fx.Slide(box).hide();	
          header.removeClass('header_open')
        }
        else {
          header.addClass('header_open');
        }    
      }
    });
  }
};

var initContentToggles = function() {
	var toggles = $$("a.contenttoggle");
	if (toggles.length > 0) {
		toggles.each(function(toggle) {
			var otext = toggle.get('html');
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}				
			var box = toggle.getNext();
			if (!toggle.hasClass('toggleopen')) {
				box.setStyle('display', 'block');
				var boxFx = new Fx.Slide(box).hide();	
			}
			else {
				var boxFx = new Fx.Slide(box);
			}			
			toggle.addEvent('click', function(evt) {
				evt.stop();				
				if (!toggle.hasClass("toggleopen")) {
					boxFx.cancel();
					boxFx.slideIn();
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}		
				else {
					boxFx.cancel();
					boxFx.slideOut();
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});			
		});
	}
};

var initTextToggles = function() {
	var toggles = $$("a.texttoggle");
	if (toggles.length > 0) {
		toggles.each(function(toggle) {
			var otext = toggle.get('html');
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}
			//console.log("toggle :", toggle);
			//console.log("toggle.offtext :", toggle.offtext);
			//console.log("toggle.ontext :", toggle.ontext);
			
			var p = toggle.getPrevious('p');
			if (!p) {
				p = $(toggle.get('rel'));
			}
			var text = p.get('html');
			//console.log("T:", text);
			
			// Ein-/Ausblenden ohne Effekt
			/*
			var shortText = text.substr(0, 140) + '...';
			//console.log("S:", shortText);
			if (!toggle.hasClass('toggleopen')) {
  			p.set('html', shortText);
				toggle.set('html', toggle.offtext);
  		}
			toggle.addEvent('click', function(evt) {
				evt.stop();	
				if (!toggle.hasClass("toggleopen")) {
					p.set('html', text);
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}
				else {
					p.set('html', shortText);
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});
			*/
			
			// mit SlideIn-/Out-Effekt. Dafür wird der abgeschnittene Textteil als Blockelement behandelt.
			var trunc = p.getElement('span.truncate');
			var hellip = new Element('span', { html: '&hellip;' }).inject(trunc, 'before').hide();	
			
			var truncFx = new Fx.Slide(trunc);
			if (!toggle.hasClass('toggleopen')) {
  			truncFx.hide();
				hellip.show();
				toggle.set('html', toggle.offtext);
  		}
			else {
				toggle.set('html', toggle.ontext);
			}
			toggle.addEvent('click', function(evt) {
				evt.stop();	
				if (!toggle.hasClass("toggleopen")) {
					hellip.hide();
					truncFx.cancel();
					truncFx.slideIn();
					toggle.addClass('toggleopen').set('html', toggle.ontext);
				}
				else {
					hellip.show();
					truncFx.cancel();
					truncFx.slideOut();
					toggle.removeClass('toggleopen').set('html', toggle.offtext);
				}
			});
		});
	}
};

// Sortierbare Tabellenspalten
var initSortableTables = function() {
	var sortableTables = $$('table.sortable');
	if (sortableTables.length > 0) {
		sortableTables.each(function(tbl) {
		  var parserArray = new Array();
      tbl.getElements('th').each(function(th) {
        if (th.hasClass('sorts')) {
          parserArray.push('string');
        }
        else {
          parserArray.push('none');
        }
      });
			var myTable = new HtmlTable(tbl, {
				zebra : true,
				sortIndex : null,
				parsers : parserArray,
				classHeadSort : 'table-sorted-asc',
				classHeadSortRev : 'table-sorted-desc'
			});
			myTable.enableSort();		
		});
	}
};

// zus. Formularmodule einblenden
var initOptionalModules = function() {
	var modules = $$('.optionalmodule');			
	var toggles = $$('a.addmodule');
	if (toggles.length > 0 ) {
		toggles.each(function(toggle) {
			var module = toggle.getPrevious('.optionalmodule');
			if (module) {
				module.hide();										
				toggle.store('module', module);
				toggle.store('moduleIndex', 0);
			}		
			toggle.addEvent('click', function(evt) {
				evt.stop();
				var module = toggle.retrieve('module').clone();
				var mIndex = toggle.retrieve('moduleIndex') + 1;
				module.getElements('input').each(function(input) {
					input.set('name', input.get('name').replace(/index/, mIndex));
				});		
				module.show().inject(toggle, 'before');
				toggle.store('moduleIndex', mIndex);
			});			
		});			
	}			
};
		
// Tooltipps
var activateToolTips = function() {
	var tips = $$('a.tooltipp');			
	tips.each(function(tip) {
		var cont = $(tip.get('href').substr(tip.get('href').indexOf('#')+1));		
		if ($chk(cont) && cont.style.display == 'none') {
			tip.addEvent('click', function(evt) {		
				evt.stop();
				cont.setStyle('display','block');
				var par = cont.getOffsetParent();
				var pos = $(par).getPosition();
				if (pos.x == 0) {
					pos.x = tip.getPosition().x;			
					var l = pos.x + 'px';
				}
				else {
					var l = evt.page.x - pos.x + 'px';
				}
				var contSize = cont.getSize();			
				var t = evt.page.y - pos.y - cont.getSize().y + 'px';
				cont.setStyles({ 'top': t, 'left': l });
				
				if (Browser.Engine.trident && Browser.Engine.version < 5) {
					var iframe = new Element('iframe');
					iframe.setStyles({
						'width': cont.getSize().x,
						'height': cont.getSize().y,
						'position': 'absolute',
						'top': '0px',
						'left': '0px'
					});
					iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';					
					iframe.inject(cont, 'top');
				}						
			});
			cont.getElement('a.tt_close').addEvent('click', function(evt) {
				evt.stop();
				cont.setStyle('display','none');
			});
		}
	});
}
var showToolTip = function(containerId, evt, x, y) {
	var cont = $(containerId);	
	if ($chk(x) && $chk(y)) {		
		cont.setStyles({ 'display':'block', 'top': x + 'px', 'left': y + 'px' });		
		if (isIE6) {
			var iefixIframe = new Element('iframe', { 
				'styles': { position: 'absolute', zIndex: -1 }
			}).inject(cont, 'top');
			iefixIframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
		}		
	}
	else if ($defined(evt.page)) {
		cont.setStyles({ 'display':'block', 'top': evt.page.x + 'px', 'left': evt.page.y + 'px' });		
	}
	else {
		cont.setStyle('display','block');
	}	
	cont.getElement('a.tt_close').addEvent('click', function(evt) {
		evt.stop();
		cont.setStyle('display','none');
		if (isIE6) iefixIframe.setStyle('display','none');
	});
}
		
// Mouseover für Buttons
var initRollOvers = function() {
	var btns = $$('a.greenbtn img, a.buchenbtn img, a.silverbtn img, input.imgbtn');	
	if (btns.length > 0) {			
		btns.each(function(btn) {
			if (!$defined(btn.hover)) {
				btn.hover = new Image();
				btn.normal = new Image();
				btn.normal.src = btn.src;						
				if (btn.src.indexOf('.png') != -1) {
					btn.hover.src = btn.src.replace(/\.png/, "_o\.png");
				}
				else if (btn.src.indexOf('.gif') != -1) {
					btn.hover.src = btn.src.replace(/\.gif/, "_o\.gif");
				}
				else {
					btn.hover.src = btn.src.replace(/\.jpg/, "_o\.jpg");
				}								
				btn.addEvent('mouseover', function(evt) {				
					btn.src = btn.hover.src;
				});
				btn.addEvent('mouseout', function(evt) {
					btn.src = btn.normal.src;
				});
			}
		});
	}
}


var ie6IFrameFix = function(hn) {
	var iframe = new Element('iframe', {
		'width': '938px',
		'height': '270px',
		'position' : 'absolute',
		'top' : '0px',
		'left' : '0px',
		'border' : 'none',
		'z-index' : -1
	}).set('frameborder','0');
	iframe.inject(hn, 'top');
};

// URL Parameter auslesen - Syntax: var param = getURLParam(param)
var getURLParam = function(strParamName) {
	var strReturn = "";
	var strHref = window.location.href;
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return strReturn;
};

// Anreise- / Abreise Datepicker mit SDSelect
var initArrivalDepartureDatePicker = function(arrivalInput, departureInput, nightsSelect, tweakX, tweakY) {		

	if (!tweakX) tweakX = 0;
	if (!tweakY) tweakY = 0;
	var arrive = $(arrivalInput);
	var depart = $(departureInput);
	var ctNights = new SDSelect($(nightsSelect));
	//console.log("arrive :", arrive, " - depart: ", depart , " - ctNights: ", ctNights);
	var dateArr = new Array();
		
	var initParams = new Object();
	var ai = new Object();
	ai[arrivalInput] = 'd.m.Y';
	initParams[arrivalInput] = ai;
	var di = new Object();
	di[departureInput] = 'd.m.Y';
	initParams[departureInput] = di;
	
	var myCal = new Calendar( initParams );	
	myCal.setOptions({ 
		pad: 1,
		direction: .5, 
		tweak: { x: tweakX, y: tweakY },
		onHideStart: function() {				
			myCal.calendars.each(function(kal, i) {
				//console.log("kal :", kal);
				dateArr[i] = kal.val;				
				//console.log("dateArr :", dateArr[0]);
				if (dateArr[0] == null) {
					var newArrive = new Date(myCal.calendars[1].val.getTime() - (ctNights.value * 1000 * 3600 * 24) + (1000 * 3600));
					arrive.value = myCal.format(newArrive, 'd.m.Y');
					myCal.calendars[0].val = newArrive;
				}				
				else if (dateArr[1] == null) {
					var newDepart = new Date(myCal.calendars[0].val.getTime() + (ctNights.value * 1000 * 3600 * 24) + (1000 * 3600));
					depart.value = myCal.format(newDepart, 'd.m.Y');
					myCal.calendars[1].val = newDepart;
				}
				else {
					var naechte = ((dateArr[1] - dateArr[0]) / (3600 * 24 * 1000)).round().toInt();
					if (naechte <= 0) naechte = 1;
					ctNights.options.selectedIndex = naechte - 1;
					ctNights.textSpan.set('html', ctNights.options[ctNights.options.selectedIndex].text);
				}
			});
		},
		onShowComplete: function() {	  
			if (isIE8) {				
				myCal.calendars.each(function(kal, i) {						 
					if (kal.visible) {
						var captLinks = $('capt_'+kal.id).getElements('a');
						captLinks.each(function(l, ind){													
							if ((captLinks.length == 1 && ind == 0) || ind == 1) {
								l.setStyles({ 'position' : 'absolute', 'top' : '15px', 'right' : '0px', 'backgroundImage' : 'url(/bw/v3/img/ico/scrollfwd.gif)' });
							}
							else {
								l.setStyles({ 'position' : 'absolute', 'top' : '15px', 'right' : '15px', 'backgroundImage' : 'url(/bw/v3/img/ico/scrollback.gif)' });
							}
						});
					}
				});
			}
		}
	}); 			
	
	ctNights.addEvent("change", function(evt) {		
		ctNights.onChange();		
		var newDepart = new Date(myCal.calendars[0].val.getTime() + (ctNights.value * 1000 * 3600 * 24) + (1000*3600));			
		depart.value = myCal.format(newDepart, 'd.m.Y');
		myCal.calendars[1].val = newDepart;
	});
	
	ctNights.addEvent("focus", function(evt) {
		var cal = myCal.calendars[1];			 
		if (cal.visible) {	
			myCal.toggle(cal);
		}			
	});	
};

// con_gallery_kompakt
var initConGalleryCompact = function(){
	var carousels = new Array();
	var thumbnailGalleries = $$('.thumbnailgallery');
	//console.log("thumbnailGalleries :", thumbnailGalleries);
	if (thumbnailGalleries.length > 0) {
  	thumbnailGalleries.each(function(tGallery, index) {
			if (!tGallery.getParent('div.singlepreviewgallery')) {
	  		var imgCarousel = tGallery.getElement('.viewport .gc_sliderlist');
	  		//console.log("imgCarousel :", imgCarousel);
				if (imgCarousel) {
					var carouselID = "carousel_" + index;
					imgCarousel.set('id', carouselID);
					var items = imgCarousel.getElements('a');
					var prevID = "prev_" + index;
					var previous = tGallery.getElement('div.blaettern a.prev');
					previous.set('id', prevID);
					var nextID = "next_" + index;
					var next = tGallery.getElement('div.blaettern a.next');
					next.set('id', nextID);
					var listEls = imgCarousel.getElements('li');
					var liClass = 'el_' + index;
					listEls.each(function(li){
						li.set('class', liClass);
					});
					
					items.each(function(item){
						var image = item.getElement('img');
						var src = image.get('src');
						item.setStyles({
							'background-image': 'url(' + src + ')',
							'background-repeat': 'no-repeat'
						});
						if (!isIE7 && !isIE6) {
							item.setStyles({
								'background-position': 'center center'
							});
						}
						image.setStyle('visibility', 'hidden');
					});
					
					if (items.length > 5) {
						carousels[index] = new iCarousel(carouselID, {
							idPrevious: prevID,
							idNext: nextID,
							idToggle: "undefined",
							item: {
								klass: liClass,
								size: 81
							}
						});
						Mediabox.scanPage();
					}
					else {
						tGallery.getElement('div.blaettern').setStyle('display', 'none');
					}
				}
			}
			else {
				// Single Preview Image Gallery				
				var firstLink = tGallery.getElement('.viewport .gc_sliderlist li a');
				var firstImage = firstLink.getElement('img');
				firstImage.set('src', firstImage.get('src').replace(/_w124/, "_w212")).setStyle('height','auto');
				firstLink.setStyles({
					'height': 'auto',
					'width': 'auto',
					'position': 'absolute',
					'z-index': '9'
				});
				firstLink.inject(tGallery, 'top');
				firstLink.getElement('img.zoom').setStyles({
					'right': '3px',
					'bottom': '5px'
				});
				tGallery.getElement('.viewport').setStyle('display', 'none');				
				tGallery.getElement('div.blaettern a.prev').setStyle('display', 'none');
				tGallery.getElement('div.blaettern a.next').setStyle('display', 'none');
			}
		});
	}
};

// Hotelview Image Gallery Thumbnail Carousel
var initHotelViewGalleryThumbnailCarousel = function(){
	var hotelViewSmallImgCarousel = $('hotelviewsliderlist');
	var myImages = new Array();
	
	if (hotelViewSmallImgCarousel) {
		var items = hotelViewSmallImgCarousel.getElements('a').unique();

		items.each(function(item) {
			var image = item.getElement('img');
			var imgSrc = image.get('src');
			// doppelte Images entfernen
			if (!myImages.contains(imgSrc)) {
	  		myImages.push(imgSrc);

		  	item.setStyles({
		  		'background-image': 'url(' + imgSrc + ')',
		  		'background-repeat': 'no-repeat',
		  		'background-position': 'center center'
		  	});
		  	image.setStyle('visibility', 'hidden');
		  	
		  	if (item.hasClass("movie")) {
		  		var playBtn = new Element('img', {
		  			'src': '/bw/v3/img/ico/playsymbol_32.png',
		  			'alt': 'Play',
		  			'class': 'play',
		  			'title': 'Play'
		  		}).inject(item);
		  	}
		  }			
			else {
				// doppeltes Image mit letztem Image ersetzen
				items.getLast().replaces(item);
				// leere Lis löschen
				var liColumns = hotelViewSmallImgCarousel.getElements('li.sl_col');
				liColumns.each(function(liCol) {
					if (liCol.getChildren().length == 0)
						liCol.dispose();
				});				
			}
		});

		if (myImages.length > 5) {		
			new iCarousel("hotelviewsliderlist", {
				idPrevious: "previous",
				idNext: "next",
				idToggle: "undefined",
				item: {
					klass: "sl_col",
					size: 81
				}
			});
			Mediabox.scanPage();
		}
		else {
			hotelViewSmallImgCarousel.getParent().getNext('div.blaettern').setStyle('display', 'none');
		}
	}
};

// Hotelview Big Image Carousel
var initHotelViewBigImgCarousel = function(){	
	var sliderlist = $('hotelviewsliderlist_lg');
	if (sliderlist) {			
		//var  baseUrl = "http://www.bestwestern.de/";		
		var baseUrl = "";	
		
		var categories = ['Hotel', 'Zimmer', 'Gastronomie', 'Tagung', 'Umfeld'];		
		if (window.imageUrlArray_movie && imageUrlArray_movie.length > 0) {
			categories.unshift('Movie');
		}
		
		if (window.imageUrlArray_tvtrip && imageUrlArray_tvtrip.length > 0 && imageUrlArray_tvtrip[0] != '') {
			categories.unshift('tvtrip');
		}
		
		var objects = [];
		var lbImgs = [];
		var galleryNavLinks;
		var galleryNav = $('gallerynav');
		
		// ObjektArray erstellen
		(function() {			
			var imgs = [];
			var descs = [];
			var cnt = 0;
			categories.each(function(cat) {
				var imgA = eval("imageUrlArray_" +cat.toLowerCase());
				var descA = eval("descArray_" +cat.toLowerCase());	
				var catImgA = [];
				var catDescA = [];			
				
				// Voraussetzung: jedes Img hat eine entsprechende Descr (auch "")
				if (typeof(imgA) != "undefined" && imgA.length > 0) catImgA = imgA;
				if (typeof(descA) != "undefined" && descA.length > 0) catDescA = descA;
				
				catImgA.each(function(img, index) {
					var o = new Object();
					o['src'] = baseUrl + img;
					o['desc'] = catDescA[index];
					o['category'] = cat.toLowerCase();
					objects.push(o);
				});			 
				
				if (typeof(imgA) != "undefined" && imgA.length > 0) {
					var galleryNavLink = new Element('a', {
						'href': '#',
						'rel': cat.toLowerCase()
					});
					if (cat == 'movie' || cat == 'tvtrip') {
					  galleryNavLink.set('html', 'Video');
					}
					else {
					  galleryNavLink.set('html', cat);
					}
					if (cnt > 0) {
						var s = new Element('span', {
							'class': 'trenner',
							'html': '|'
						});
						galleryNav.grab(s);
					}
					galleryNav.grab(galleryNavLink);
					cnt += 1;
					
					if ($('threesixty')) $('threesixty').inject(galleryNav, 'bottom');
				}
			});			
		})();
		
		// ListElemente erstellen
		(function() {		
			objects.each(function(o, index) {
				lbImgs[index] = new Element('img', {
					'src' : o.src,
					'alt' : ''
				});		
				var cat = o.category;	
				var zoomImg;
				
				//console.log("category :", cat);
				if (cat == 'movie' || cat == 'tvtrip') {
				 zoomImg = new Element('img', {
						'src' : '/bw/v3/img/ico/movie.png',
						'alt' : 'Zoom',
						'class' : 'btn_zoom',
						'title': 'Play'
					});
					playImg = new Element('img', {
						'src' : '/bw/v3/img/ico/playsymbol.png',
						'alt' : 'Play',
						'class' : 'btn_play',
						'title': 'Play'
					});
				}
				else {
					zoomImg = new Element('img', {
						'src' : '/bw/v3/img/ico/zoom.png',
						'alt' : 'Zoom',
						'class' : 'btn_zoom'
					});
				}

				var li = new Element('li', { 'class' : 'sl_img', 'rel' : cat });
				var imgholder = new Element('div', { 'class' : 'imgholder' });				
				var imglink;
				
				if (cat == 'movie') {
					imglink = new Element('a', {
						'href': o.desc,
						'class': 'zoom_img',
						'rel': 'lightbox',
						'title': ''
					});
				}
				else if (cat == 'tvtrip') {				  
					imglink = new Element('a', {
						'href': $('tvtriplink') ? $('tvtriplink').get('href') : o.src.replace(/web451/g, "web757"),
						'class': 'zoom_img',
						'rel': 'lightbox[flash 660 522]',
						'title': ''
					});
				}
				else {
					imglink = new Element('a', {
						'href': o.src.replace(/web451/g, "web757"),
						'class': 'zoom_img',
						'rel': 'lightbox[bigimg]',
						'title': o.desc
					});
				}
				
				imglink.grab(lbImgs[index]);
				if (cat == 'movie' || cat == 'tvtrip') {
					imglink.grab(playImg);
				}	
				imglink.grab(zoomImg).inject(imgholder);
				
				if (isIE6 || isIE7) {
					var iecenter = new Element('div', { 'class': 'iecenter' }).inject(imgholder);
				}
				li.grab(imgholder).inject(sliderlist);								
			});
			galleryNavLinks = $$('.hotelview_gallery div#gallerynav a');	
		})();
		
		var highlightGalleryNavLink = function(r) {
			galleryNavLinks.each(function(g) {
				if (g.get('rel') == r) {
					g.set('class', 'active');
				}
				else {
					g.removeClass('active');
				}
			});
		}
		
		var myBigImgSlider = new iCarousel("hotelviewsliderlist_lg", {  
			idPrevious: "previous_lg",  
			idNext: "next_lg",  
			idToggle: "undefined",  
			iCarouselAttached: true,
			item: {  
				klass: "sl_img",  
				size: 420  
			},
			onPrevious: function() {
				highlightGalleryNavLink(this.aItems[this.atScreen].get('rel'));
			},
			onNext: function() {
				highlightGalleryNavLink(this.aItems[this.atScreen].get('rel'));
			}
		});
			
		if (loadgallery != undefined) {
			var items = $('hotelviewsliderlist_lg').getElements('li.sl_img');
			var goTo;
			var isSet = false;
			items.each(function(item, index) {
				if (item.get('rel') == loadgallery  && !isSet) {
					goTo = index;
					isSet = true;
				}
			});
			myBigImgSlider.goTo(goTo);
		}
		
		highlightGalleryNavLink(myBigImgSlider.aItems[myBigImgSlider.atScreen].get('rel'));			
		Mediabox.scanPage();
		
		if (galleryNavLinks.length > 0) {
			galleryNavLinks.each(function(gnl) {
				var rel = gnl.get('rel');
				var items = $('hotelviewsliderlist_lg').getElements('li.sl_img');
				var goTo;
				var isSet = false;
				items.each(function(item, index) {
					if (item.get('rel') == rel && !isSet) {
						goTo = index;
						isSet = true;
					}
				});
				
				if (!gnl.hasClass('hv_togglePopUp') && goTo != 'undefined') {
					gnl.addEvent('click', function(evt) {
						evt.stop();
						myBigImgSlider.goTo(goTo);
						galleryNavLinks.each(function(g) {
							if (g != gnl) {
								g.removeClass('active');
							}
							else {
								g.set('class', 'active');
							}						
						});
					});
				}
			});
		}
		
		var videoPopupToggles = $$('a.hv_togglePopUp');
		videoPopupToggles.each(function(tg) {
			tg.addEvent('click', function(evt) {
				eX = evt.client.x;
				eY = evt.client.y;
				var rel = $(tg.get("rel"));

				if (rel.style.display != 'block') {
					rel.setStyles({
						'left': ((eX / 2) - 200) + 'px',
						'top': (eY - 315) + 'px',
						'display': 'block'
					});
				}
				else {
					rel.setStyles({
						'display': 'none'
					});
				}
				evt.stop();
			});
		});		
	}
};
    	
    	
var Fenster = null;
function neuesFenster(meineSeite,meinName,w,h,scroll,optionen) {
  LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
  TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
  settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+','+optionen;
  Fenster = window.open(meineSeite,meinName,settings);
}


var initSortableLists = function() {
	var sortableLists = $$('ul.sortableList');
	if (sortableLists.length > 0) {
		var mySortables = new Sortables(sortableLists, {
			revert: { duration: 500, transition: 'cubic:out' },
			clone: true,
			handle: 'div.imgholder',
			constrain: true,
			onStart: function(element,clone) {
				element.tween('opacity', 1, 0.2);
				clone.tween('opacity', 1, 0.8);
			},
			onComplete: function(element){
				element.set('opacity', 1);
				this.serialize(1, function(element, index){
					element.getElement('input.sortkey').value = index;
				});
				sortComplete(); // Hook für weitere Funktionen, z.B. zum Speichern
			}
		});
	}
}

var eliminateEmptyHeadlines = function() {
	$$('h3').each(function(h){
		if (h.get('text').clean() == "") {
			h.dispose();
		}
	});	
};

