var ths;
var tds;
var rows;
var mapOpen = false;
var mapStarted = false;
var umkreisMapStarted = false;
var mapCenter;
var umkSlider;
var ajaxLoader;
var hotelArray = [];
var allHotelArray = [];
var clusterArray = [];
var openBars = [];
var inputArray;
var mooFlowInputHasFocus = false;
var isIE6 = false;
var isIE7 = false;
var isIE8 = false;
var soEditButtons;
var matrixNavEls;
var allTipz;
var moreLinks;
var bars;
var myTips;
var thumbnailArray = [];
var datepicker;
var lastTab;
var isUKS;
var modifiers = new Array('reisedaten', 'karte', 'umkreis', 'schlagworte');
var moreoptionstoggle;
var umkreistoggle;
var tabs;
var slidervalue;
var setupTinyMCE;

	
window.addEvent('domready', function() {	
	if(Browser.Engine.trident && Browser.Engine.version < 5) {
		isIE6 = true;
	}
	if(Browser.Engine.trident && getInternetExplorerVersion() == 7) {
		isIE7 = true;
	}
	if(Browser.Engine.trident && getInternetExplorerVersion() == 8) {
		isIE8 = true;
	}
	

	// Suchoptionen
	if ($('suchopt')) {		
		tabs = $$('#suchopt ul.tablist li a');		
		
		umkreistoggle = flipText($('umkreistoggle'));
		moreoptionstoggle = $('moreoptionstoggle');
		var mapHolder = $("optmap");
		currentTab = 'reisedaten';	
		

		tabs.each(function(tab) {
			var cont = tab.get('href').substr(tab.get('href').indexOf('#')+1);
			tab.addEvent('click', function(evt) {				
				evt.stop();

				if ($(cont).getStyle('display') == 'none') {
					modifiers.each(function(mod){
						$(mod).fade('out');
						$(mod).setStyle('display', 'none');
							
						if (mod == cont) {
							$(mod).fade('hide');
							$(mod).setStyle('display', '');
							$(mod).fade('in');
							
							tabs.each(function(t) {
								t.getParent().removeClass('selected');
							});
							tab.getParent().addClass('selected');
							currentTab = cont;	
							
							switch(cont) {
								case 'reisedaten':
									moreoptionstoggle.setStyle('display', '');
									umkreistoggle.setStyle('display', 'none');
									hideEditButtons();
									// console.log("LASTTAB: ", lastTab);
									if (lastTab == 'umkreis') {
										$('ss_ort').value = "";
									}
									isUKS = false;
									alterSearchformSubmit();
									break;
									
								case 'karte':				
									// console.log("click karte");					
									umkreistoggle.setStyle('display', '');
									moreoptionstoggle.setStyle('display', 'none');
									initializeKartensuche.delay(300);
									showEditButtons();		
									isUKS = false;
									alterSearchformSubmit();							
									break;
									
								case 'umkreis':				
									// console.log("click umkreis");		
									umkreistoggle.setStyle('display', 'none');
									moreoptionstoggle.setStyle('display', 'none');									
									// console.log("umkreisMapStarted :", umkreisMapStarted);

									if (!umkreisMapStarted) {						
										if ($('slideholder')) {
											initSlider.delay(1000);
										}								
										initializeUmkreissuche.delay(300);
										umkreisMapStarted = true;
									}
									else {										
										refreshUmkreisSuche();					
									}
									// showEditButtons();
									modifyEditButtons();
									isUKS = true;
									alterSearchformSubmit();
									break;
									
								default:
									moreoptionstoggle.setStyle('display', 'none');
									umkreistoggle.setStyle('display', 'none');
									showEditButtons();		
									isUKS = false;							
									alterSearchformSubmit();
									break;
							}												
						}
					});
				}				
			});
			
			if (cont == 'reisedaten' && $('reisedaten').getStyle('display') != 'none') {
				soEditButtons = $$('#meineauswahl a.edit');
				hideEditButtons();
			}
		});	
		
		soEditButtons = $$('#meineauswahl a.edit');				
		setupEditButtons();
		
		
		// Aufruf per URL-Parameter
		if (window.selectedSearchTab !== undefined && selectedSearchTab != "") {
		  var cont = selectedSearchTab;
		}
		else {
		  var cont = getURLParam('so');
		}
		
		if ($chk(cont) && $(cont) && $(cont).getStyle('display') == 'none') {
			$each(['reisedaten', 'karte', 'umkreis', 'schlagworte'], function(mod) {		
				if (mod == cont) {
					$(mod).setStyle('display','');
					$$('#suchopt ul.tablist li a').each(function(t) {
						if (t.get('href').substr(t.get('href').indexOf('#')+1) == cont) {
							t.getParent().addClass('selected');
						}
						else {
							t.getParent().removeClass('selected');
						}
					});
					if (cont == 'karte') {
						// console.log("KARTE ");	
						umkreistoggle.setStyle('display', '');
						moreoptionstoggle.setStyle('display', 'none');
						if(!mapStarted) {
							initializeKartensuche.delay(600);
							mapStarted = true;
						}
						showEditButtons();
						isUKS = false;
						alterSearchformSubmit();
					}
					else if (cont == 'reisedaten') {
						umkreistoggle.setStyle('display', 'none');
						moreoptionstoggle.setStyle('display', '');
						hideEditButtons();
						isUKS = false;
						alterSearchformSubmit();
					}
					else if (cont == 'umkreis') {		
						// console.log("UMKREIS");				
						umkreistoggle.setStyle('display', 'none');
						moreoptionstoggle.setStyle('display', 'none');
						if(!umkreisMapStarted) {
							initializeUmkreissuche();
							umkreisMapStarted = true;
						}
						if ($('slideholder')) {
							initSlider();
						}
						showAddress($('uks_ort').value);
						modifyEditButtons();
						isUKS = true;
						alterSearchformSubmit();
					}
					else {
						umkreistoggle.setStyle('display', 'none');
						moreoptionstoggle.setStyle('display', 'none');
						showEditButtons();
						isUKS = false;
						alterSearchformSubmit();
					}
				}
				else {
					$(mod).setStyle('display','none');				
				}
			});
			lastTab = cont;
		}
		
		if ($('moreoptions')) {
			var mo = $('moreoptions');
			var toggle = flipText($('moreoptionstoggle'));
			if (moreoptions_open) {
				var moEf = attachEffectAndShowSearchOptions(mo);
				toggle.set('html', toggle.ontext);
				toggle.addClass('open');
			}
			else {
				var moEf = attachEffect(mo);
			}
			
			toggle.addEvent("click", function(evt) {
				evt.stop();
				toggleEffect(moEf, mo);		
				if (toggle.get('html') == toggle.ontext) {
					toggle.set('html', toggle.offtext);
					toggle.removeClass('open');
					moreoptions_open = false;
				}
				else {
					toggle.set('html', toggle.ontext);
					toggle.addClass('open');
				}
			});	
		}

		umkreistoggle.addEvent('click', function(evt) {
			evt.stop();
			if (mapOpen) { // Map verkleinern
				umkreistoggle.set('html', umkreistoggle.offtext);
				umkreistoggle.removeClass('open');
				mapHolder.setStyles({
					'height': '248px',
					'margin-bottom': '0px'
				});
				mapOpen = false;
			}
			else { // vergrössern
				umkreistoggle.set('html', umkreistoggle.ontext);
				umkreistoggle.addClass('open');
				mapHolder.setStyles({
					'height': '560px',
					'margin-bottom': '10px'
				});
				mapOpen = true;
			}
			google.maps.event.trigger(map, 'resize'); // V3			
			map.setCenter(currentBounds.getCenter());
		});
	} // ende suchoptionen
	
	//	Detailansicht Bilder & Details einblenden
	//  Detailansicht Click auf Überschrift blendet Details ein/aus
	loadDetailViewToggles();	
	
	// Vergleichsansicht
	var trows = $$('.togglerow');
	if ($chk(Cookie.read('openbars'))) {
		openBars = JSON.decode(Cookie.read('openbars'));
	}
	// console.log("openBars: ", openBars);
	
	if (trows.length > 0) {		
		trows.each(function(bar, index) {
			var next = bar.getNext();
			if ($defined(next)) {
				if (openBars.indexOf(index) != -1) {
					bar.setStyle('display','none');
					next.setStyle('display', '');
					var nextEffect = attachEffectAndShow(next);
				}
				else {
					var nextEffect = attachEffect(next);
				}

				var toggle = bar.getElement("a.toggle");
				if (toggle != null) {
					toggle.addEvent('click', function(evt) {
						evt.stop();
						toggleEffect(nextEffect, next);	
						openBars.push(index);
						// console.log("openBars: ", openBars);
						Cookie.write('openbars', JSON.encode(openBars));
						if (next.getStyle("display") == 'none') {
							bar.setStyle('display','none');
						}		
						else {
							bar.setStyle('display','block');
						}
					});
				}
				var tclose = next.getElement('a.toggleopen');
				tclose.addEvent('click', function(evt) {
					evt.stop();
					openBars.erase(index);
					// console.log("openBars: ", openBars);
					Cookie.write('openbars', JSON.encode(openBars));
					next.setStyle('display','none');
					bar.setStyle('display','block');
				});				
			}
		});
	}
	
	initRollOvers();
	
	// Bookingview	
	var toggles = $$(".bookingdetail a.toggle");
	if (toggles.length > 0) {
		toggles.each(function(toggle) {
			var otext = toggle.get('html').clean();			
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}			
			var next = toggle.getNext();
			if (getURLParam("detailsopen") == 1 && next.getStyle("display") == 'none') {
	  		next.setStyle('display','block');
				toggle.addClass('toggleopen');
				toggle.set('html', toggle.ontext);
	  	}
			
			toggle.addEvent('click', function(evt) {
				evt.stop();				
				if (next.getStyle("display") == 'none') {
					next.setStyle('display','block');
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}		
				else {
					next.setStyle('display','none');
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});			
		});
	}
	
	var pToggles = $$(".bookingdetail a.toggleprev");
	if (pToggles.length > 0) {
		pToggles.each(function(toggle) {					
			toggle.addEvent('click', function(evt) {
				evt.stop();
				var prev = toggle.getPrevious();
				if (prev.getStyle("display") == 'none') {
					prev.setStyle('display','block');
				}		
				else {
					//prev.setStyle('display','none');
				}
			});
		});
	}
	

	// Reservierungsansicht
	var rToggles = $$(".reservations a.toggle");
	if (rToggles.length > 0) {
		rToggles.each(function(toggle) {	
			var otext = toggle.get('html');
			
			
			if ($chk(toggle.offtext) == false) {
				if (toggletext.has(otext)) {
					toggle.offtext = otext;
					toggle.ontext = toggletext.get(toggle.offtext);
					if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
				}
				else {
					if (toggletext.hasValue(otext)) {
						toggle.ontext = otext;
						toggle.offtext = toggletext.keyOf(otext);					
					}
				}
			}							
			toggle.addEvent('click', function(evt) {
				evt.stop();
				var prev = toggle.getParent().getPrevious();
				// alert(prev);
				if (prev.getStyle("display") == 'none') {
					prev.setStyle('display','');
					toggle.addClass('toggleopen');
					toggle.set('html', toggle.ontext);
				}		
				else {
					prev.setStyle('display','none');
					toggle.removeClass('toggleopen');
					toggle.set('html', toggle.offtext);
				}
			});
		});
	}
	
	
	var editBtns = $$(".bookingdetail a.edit");
	if (editBtns.length > 0) {
		editBtns.each(function(btn) {
			var el = $(btn.get("rel"));
			btn.addEvent('click', function(evt) {
				evt.stop();
				if (el.getStyle("display") == 'none') {
					el.setStyle('display','block');
				}		
				else {
					el.setStyle('display','none');
				}				
			});
		});
	}

	// Tooltipp	
	activateToolTips();
	
	// Layer-Meldung
	$$('a.layer_close').each(function(lc) {
		lc.addEvent('click', function(evt) {
			evt.stop();
			lc.getParent().getParent().setStyle('display', 'none');
			$('layer_overlay').setStyle('visibility', 'hidden');
		});
	});
	$$('select.roomselect').each(function(sel) {
		sel.addEvent('change', function(evt) {
			if (sel.value == 'mehr') {				
				Mediabox.open('hinweis_maxbuchungen.html', '', '320 200');
			}
		});
	});
	
	
	var inp = new Array();
	var ssOrt;
	var ssHotel;
	
	if ($('ss_erwachsene')) {
		var erw = $('ss_erwachsene');
		var input = erw;
		input.defaultvalue = '1';
		inp.push(input);
		
		erw.addEvent('change', function(evt) {
			if(erw.value == 2) {
				$('ss_einzelzimmer').value = '0';
				$('ss_doppelzimmer').value = '1';
			}
		});
	}
	if ($('ss_kinder')) {
		var input = $('ss_kinder');
		input.defaultvalue = '0';
		inp.push(input);
	}
	if ($('ss_einzelzimmer')) {
		var input = $('ss_einzelzimmer');
		input.defaultvalue = '1';
		inp.push(input);
	}
	if ($('ss_doppelzimmer')) {
		var input = $('ss_doppelzimmer');
		input.defaultvalue = '0';
		inp.push(input);
	}
	if ($('us_ort')) {
		var input = $('us_ort');
		input.defaultvalue = 'Stadt, Adresse, Bahnhof, POI, o.ä.';
		inp.push(input);
	}
	
	if ($('uks_ort')) {
		var input = $('uks_ort');
		input.defaultvalue = 'Stadt, Adresse, Bahnhof, POI, o.ä.';
		inp.push(input);
	}
	if ($('uks_adresse')) {
		var input = $('uks_adresse');
		input.defaultvalue = 'Adresse, Bahnhof, POI, o.ä.';
		inp.push(input);
	}
	
	inp.each(function(input) {
		// alert(input, input.defaultvalue);
		input.value = input.value == "" ? input.defaultvalue : input.value;			
		input.addEvent('focus', function(evt) {
			input.value = input.value == input.defaultvalue ? "" : input.value;				
		});
		input.addEvent('blur', function(evt) {
			input.value = input.value == "" ? input.defaultvalue : input.value;	
		});
	});
	
	var ssOrt;
	var ssHotel;
	
	if ($('ss_ort')) {
		ssOrt = $('ss_ort');
		ssOrt.defaultvalue = 'Stadt';
		if (ssOrt.value.length == 0) {
			ssOrt.value = ssOrt.defaultvalue;		 	
		}

		ssOrt.addEvent('focus', function() {
			ssOrt.value = ssOrt.value == ssOrt.defaultvalue ? "" : ssOrt.value;				
		});

		ssOrt.addEvent('blur', function() {
			if (ssOrt.value == "") {
				ssOrt.value = ssOrt.defaultvalue;
			}
			else {
				if($('ss_hotel')) {
					$('ss_hotel').value = "";
				}
			}
		});
	}
	
	if ($('ss_hotel')) {
		ssHotel = $('ss_hotel');
		ssHotel.defaultvalue = 'Name des Hotels (optional)';		
		if (ssHotel.value.length == 0) {
		 	ssHotel.value = ssHotel.defaultvalue;
		}
		
		ssHotel.addEvent('focus', function() {
			ssHotel.value = ssHotel.value == ssHotel.defaultvalue ? "" : ssHotel.value;				
		});

		ssHotel.addEvent('blur', function() {
			if (ssHotel.value == "") {
				ssHotel.value = ssHotel.defaultvalue;
			}
			else {
				ssOrt.value = "";
			}
		});
	}
	
	var quickSearchSubmit = $('quickSearchSubmit');
	if (quickSearchSubmit) {		
		quickSearchSubmit.addEvent('click', function(evt){
			if (checkMaxChildren() == false) {
				showToolTip('maxKinderHinweis', '', 100, 100);
				evt.preventDefault();
			}
			if (checkRoomPersonsCount() == false) {
				showToolTip('anzZimmerHinweis', '', 150, 100);
				evt.preventDefault();
			}
		});
	}
	
	var bookingUpdateBtn = $('bookingUpdateBtn');
	if (bookingUpdateBtn) {		
		bookingUpdateBtn.addEvent('click', function(evt){			
			if (checkMaxChildren() == false) {
				showToolTip('maxKinderHinweis', '',140, 170);
				evt.preventDefault();
			}
			if (checkRoomPersonsCount() == false) {
				showToolTip('anzZimmerHinweis', '', 150, 100);
				evt.preventDefault();
			}
		});
	}
	
	
	// Datepicker	
	if ($('anreise_dp') && $('abreise_dp') && $('ss_nights')) {
		arrivalDepartureDatePicker('anreise_dp', 'abreise_dp', 'ss_nights');	
	}
	
	if ($('Main')) {
		inputArray = $$('#cf_schnellsuche input', '#cf_umkreissuche input');
		mooFlowInputsFocus();
		
		// MooFlow 
		var myMooFlowPage = {
			start: function(){
				var mf = new MooFlow($('MooFlow'), {
					startIndex: 2,
					useResize: true,
					useMouseWheel: true,
					useKeyInput: true,
					heightRatio: 0.45, // container height (container width * number); default(0.6)
					offsetY: -90, // vertical image offset; default(0)
					reflection: 0.2, // Höhe der Spiegelung
					factor: 160, // zoom factor; default(115)
					bgColor: 'transparent'
				});
			}
		};
		
		myMooFlowPage.start();
		
		// Carousel
		new iCarousel("sliderlist", {  
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sl_item",  
				size: 173  
			}
		});
		
		// Submit mit RETURN für IE aktivieren
		var cfqs = $('cf_quicksearch');
		if (cfqs && Browser.Engine.trident) {
			cfqs.addEvent('keydown', function(evt){
				if (evt.code == 13) {
					if (checkMaxChildren() == false) { 
						showToolTip('maxKinderHinweis', '', 130, 30); 
						return false; 
					} 
					else if (checkRoomPersonsCount() == false) {
						showToolTip('anzZimmerHinweis', '', 130, 30);
						return false; 
					}
					else { 
						dimBtn('quickSearchSubmit');
						cfqs.submit();
					}
				}
			});
		}
		var uks = $('cf_uksearch');
		if (uks && Browser.Engine.trident) {			
			uks.addEvent('keydown', function(evt){
				if (evt.code == 13) {
					uks.submit();
				}
			});
		}		
		// &amp; aus den Querystrings in & umwandeln (für iata-Codes)
		$$('#sliderlist li a').each(function(lnk) {
			if (lnk != "") {
	  		lnk.set("href", lnk.get("href").replace(/&amp;/, "&"));
			}
		});
	} 

	
	// ajaxLoader Gif vorladen
	ajaxLoader = new Element('img', { src : '/bw/v3/img/ajax-loader32.gif' });	
	
	// Checkbox "alle auswählen" aktivieren	
	var markallCB = $(document.body).getElement('input[name=markall]');
	if (markallCB) {		
		markallCB.addEvent('click', function(evt) {
			if (markallCB.get('checked') == true) {
				$(document.body).getElements('input[name=selectedpnum]').set('checked', 'checked');
			}
			else {
				$(document.body).getElements('input[name=selectedpnum]').set('checked', '');
			}
		});
	}
	
	setupTootips();	
	
	if ($('bookingform') && Browser.Engine.trident && Browser.Engine.version <= 5) { // Inputs für IE6 + 7 onfocus highlighten
		$$('#bookingform input, #bookingform textarea').each(function(input){
			input.addEvent('focus', function(ev){
				input.addClass('iefocus');
			});
			input.addEvent('blur', function(ev){
				input.removeClass('iefocus');
			});
		});	
		/* 
		$$('#bookingform select').each(function(input){
			input.onfocusin = function(){
				input.addClass('iefocus');
			}
			input.onfocusout = function(){
				input.removeClass('iefocus');
			}
		});	
		*/
	}
	
	alterSearchformSubmit();
	
	var compareBtn = $('compareBtn');
	if (compareBtn) {
			compareBtn.addEvent('click', function(evt) {
				if (!isCompareCheckboxChecked()) {					
					alert("Bitte wählen Sie mindestens zwei Hotels zum Vergleich aus!");
					evt.stop();
					return false;
				}				
		 });
	}
	
	
	if ($('iatatoggle')) {
		var iataToggle = $('iatatoggle');
		var iataLink = $('iatatoggle').getElement('a');
		var iataDiv = iataToggle.getNext('div.frow');
		//console.log("iataDiv :", iataDiv, "iataLink :", iataLink);
		var iataInput = iataDiv.getElement('input[name=IATA]');
		//console.log("iataInput :", iataInput, "VALUE: ", iataInput.value);
		var iataFx = new Fx.Slide(iataDiv);
		if (iataInput.value == "") {
			iataFx.hide();
			iataLink.set('class', 'closed');
		}		
		else {
			iataLink.set('class', 'open');
		}
		iataLink.addEvent('click', function(evt) {
			evt.stop();			
			if (iataLink.hasClass("closed")) {
	  		iataFx.slideIn();
				iataLink.set('class', 'open');
	  	}
			else {
				iataFx.slideOut();
				iataLink.set('class', 'closed');
			}
		});
	}
	
	initRatingImgs();
	lineBreaksForMainNavi();
	initHeaderNavigation();	

});// Ende domready



var initHeaderNavigation = function(){
	var hNav = $('headernavi');
	var offSetLeft = 1;
	var positionLeft = 1;
	var aPadding = 26;
	if (hNav) {		
		if (isIE6 || isIE7) {
			oldIEFix(hNav);
			offSetLeft = 4;
			positionLeft = 4;
			aPadding = 34;
			if (isIE6) aPadding = 46;
		}		
		if (isIE8) {
			offSetLeft = 4;
			positionLeft = -2;
			aPadding = 30;
		}
		
		var hNavLinks = $$('#mainnav li a');
		var allHNavis = hNav.getElements('div.hnavi');
		var hnaviEntered = false;
		var linkEntered = false;
		var hnaviOpen = "";
		var pMarginsLeft = document.getElement('div.page_margins').getPosition().x;
		
		var hNavFx = new Fx.Morph(hNav, {
			duration: '100'
		}).set({
			'height': 0,
			'opacity': 0.0,
			'display': 'block'
		});
		
		hNavLinks.each(function(hlink){
			var rel = hlink.get('rel');
			if (rel != null && rel != "") {				
				var myRel = $(rel);
				if (myRel) {
					hlink.addEvent('mouseenter', function(evt){
						linkEntered = true;
						if (hnaviOpen != rel) {
							if ($(hnaviOpen)) $(hnaviOpen).setStyle('display', 'none');
							
							$$('#mainnav li').each(function(li) {
								li.removeClass('active');
							});
							hNav.setStyles({ 'opacity': '0.0', 'left': '0px', 'width': 'auto' });

							// Breite + Position des Ausklappbereichs ermitteln
							myRel.setStyle('display', 'block');
							var myPos = hlink.retrieve('myPos'); // gespeicherte Position
							var myWidth = hlink.retrieve('myWidth'); // gespeicherte Breite
							var wRel = myRel.getSize().x; // Breite des Ausklappbereichs
							var wLink = hlink.getSize().x; // Breite des MenuItems
							var pLink = hlink.getPosition().x; // Position des MenuItems
							var pNav = hNav.getPosition().x; // ursprüngliche Position des Ausklappbereichs
							var pNew = pLink - pNav - (wRel - wLink) - aPadding; // neue Position des Ausklappbereichs
							if (pNew < positionLeft) pNew = positionLeft; // wenn Überstand nach links, dann linksbündig setzen
							var wNew = wRel + aPadding - offSetLeft; // Breite des Ausklappbereichs plus Padding
							hNav.setStyles({ 'left': pNew+'px', 'width': wNew+'px' }); // ermittelte Werte setzen


							// Höhe des Ausklappbereichs ermitteln
							var maxH = 0;
							myRel.getElements('div.column').each(function(d) {
								var h = d.getSize().y;
								if (h > maxH) maxH = h;
							});
							var hNavH = maxH + 37;
							
							hNavFx.start({ 
								'height': [0, hNavH], 
								'opacity': [0, 1],
								onComplete : function() {
									allHNavis.each(function(d){
										if (d.style.display == 'block' && d != myRel) {
											d.setStyle('display', 'none');
										}
									});
									hnaviOpen = rel;
									hlink.getParent('li').addClass('active');
									if ($('searchbox')) {
										$('searchbox').setStyle('position', 'static');
									}
								}
							});								
						}
					});				
					hlink.addEvent('mouseleave', function(evt){
						hNav.addEvent('mouseenter', function(evt2){
							hnaviEntered = true;
						});
						
						hNav.addEvent('mouseleave', function(evt3){
							hnaviEntered = false;
							closeHeaderNavi.delay(300, myRel, hlink.getParent('li'));
							//myRel.setStyles({ 'width': 'auto' });
							//hNav.setStyles({ 'left': '0px', 'width': 'auto' });
						});
						
						linkEntered = false;
						closeHeaderNavi.delay(300, myRel, hlink.getParent('li'));
					});
				}
			}
			else {
				hlink.addEvent('mouseenter', function(evt){
					allHNavis.each(function(d){
						if (d.style.display == 'block') {
							d.setStyle('display', 'none');
						}
					});
					hnaviOpen = "";
				});
			}
		});
		
		var closeHeaderNavi = function(li){						
			var rel = this;			
			if (hnaviEntered == false && linkEntered == false) {				
				hNavFx.set({
					'height': 0,
					'opacity': 0
				});
				rel.setStyle('display', 'none');
				li.removeClass('active');
				hnaviOpen = "";
			}							
		};
	}
};

var oldIEFix = function(hn) {
	hn.setStyle('top','0px');
	if ($('buehne')) {
	  hn.inject($('buehne'), 'bottom');
	}
	else if ($('schattenbox')) {
		  hn.inject($('schattenbox'), 'bottom');
	}
	else if ($('pagemain')) {
		  hn.inject($('pagemain'), 'bottom');
	}	
	if (isIE6) {
	    hn.getElements('div.hnavi').each(function(hnavi) {
	      hnavi.setStyles({
	        'position': 'absolute',
	        'left' : '0px',
	        'top': '0px'
	     });
	    });
			ie6IFrameFix(hn);
	}	
};

var lineBreaksForMainNavi = function() {
	$$('#mainnav ul li a span').each(function(item) {
		item.set('html', item.get('html').replace(/\|/g, "<br/>"));
	});
	
	$$('#mainnav ul li a').each(function(el) {
	  if (el.get('title') != null) {
	    var myTitle = el.get('title');
	    myTitle = myTitle.replace(/\|/g, " ");
	    myTitle = myTitle.replace(/  /g, " ");
	    el.set('title', myTitle);
	  }
	});
	
	$$('div.breadcrumb a').each(function(bnl) {
	    bnl.set('html', bnl.get('html').replace(/\|/g, " "));
	});
};

var afterAjaxCalls = function() {
  initRatingImgs();
  loadDetailViewToggles();
  if (Mediabox) Mediabox.scanPage();
  markAllCheckBoxes();
  initSortableLists();
  initRollOvers
}

var markAllCheckBoxes = function() {
  var markallCB = $(document.body).getElement('input[name=markall]');
  if (markallCB) {		
    markallCB.addEvent('click', function(evt) {
      if (markallCB.get('checked') == true) {
        $(document.body).getElements('input[name=selectedpnum]').set('checked', 'checked');
      }
      else {
        $(document.body).getElements('input[name=selectedpnum]').set('checked', '');
      }
    });
  }
}


var initRatingImgs = function() {
		var ratingImgs = $$('span.bewertung img.rating');
		//console.log("ratingImgs:", ratingImgs);
		if (ratingImgs.length > 0) {
			ratingImgs.each(function(img) {
				var source = img.getParent('span').getNext('div.trustyousource');
				img.getParent('span').addEvent('click', function(evt) {
					evt.stop();
					var allOpenSources = $$('.ratingsourceopen');
					allOpenSources.each(function(os) {
					  os.setStyle('display','none');
					  os.removeClass('ratingsourceopen');
					});
					source.setStyle('display', 'block');
					source.addClass('ratingsourceopen');
					var par = source.getOffsetParent();
					var pos = $(par).getPosition();
					var contSize = source.getSize();			
					var t = evt.page.y - pos.y - source.getSize().y + 'px';
					source.setStyles({ 'top': t });
				
					if (isIE6) {
						//alert(source.getSize().x + " : " + source.getSize().y);
						var iframe = new Element('iframe');
						iframe.setStyles({
							'width': source.getSize().x,
							'height': source.getSize().y,
							'position': 'absolute',
							'top': '0px',
							'left': '0px'
						});
						iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';					
						iframe.inject(source, 'top');
					}					
				});
				source.getElement('a.tt_close').addEvent('click', function(evt) {
					evt.stop();
					source.setStyle('display','none');
					source.removeClass('ratingsourceopen');
				});
			});			
		}
};


var attachEffect = function(el) {
	el.style.display = 'none';
	var myEffect = new Fx.Morph(el);
	myEffect.start({ 'opacity': 0 });
	return myEffect;
};

var attachEffectAndShow = function(el) {
	var myEffect = new Fx.Morph(el);
	myEffect.start({ 'opacity': 1 });
	return myEffect;
};

var attachEffectAndShowSearchOptions = function(el) {
	var myEffect = new Fx.Morph(el);
	myEffect.start({ 'display': 'block', 'opacity': 1 });
	return myEffect;
};

var toggleEffect = function(eff, el) {
	if (el.style.display == 'none') {
		showEffect(eff, el);
	}
	else {
		hideEffect(eff, el);
	}
};

var showEffect = function(eff, el) {
	//eff.start({ 'display': 'block' }).start({ 'opacity': 1 });
	eff.start({ 'display': 'block', 'opacity': 1 });
};

var hideEffect = function(eff, el) {
	//eff.start({ 'opacity': 0 }).start({ 'display': 'none' });
	eff.start({ 'opacity': 0, 'display': 'none' });
};

var toggletext = $H ({
	"" : "",
	"Mehr Bilder einblenden" : "Weniger Bilder anzeigen",
	"Bilder &amp; Details einblenden" : "Bilder &amp; Details ausblenden",
	"Bilder &amp; Details ansehen" : "Bilder &amp; Details ausblenden",
	"Details zu Preis und Verfügbarkeit einblenden" : "Details zu Preis und Verfügbarkeit ausblenden",
	"Weitere Wochen anzeigen" : "Weitere Wochen ausblenden",
	"Details" : "Details ausblenden",
	"Details einblenden" : "Details ausblenden",
	"Details ansehen" : "Details ausblenden",
	"Details der Reservierung / Stornierung anzeigen" : "Details der Reservierung / Stornierung ausblenden",
	"Weitere Suchoptionen zeigen" : "Weniger Suchoptionen",
	"Karte vergrößern" : "Karte verkleinern"
});

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



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;
};

var highlightRow = function(row) {
  var r = row.toInt();
	clearMatrix();
	var rtds = rows[r].getElements('td');
	rtds.each(function(td){
		if (!td.hasClass('leer')) {
			td.addClass("highlight_p");
		}
	});
};

var moverHighlightRow = function(row) {
  var r = row.toInt();
	if (row.indexOf('highlight_p') != -1) {
		row = row.replace(/ highlight_p/, "")
	}
	var rtds = rows[r].getElements('td');
	rtds.each(function(td){
		if (!td.hasClass('leer')) {
			td.addClass("highlight");
		}
	});
};

var moverUnlightRow = function(row) {
  var r = row.toInt();
	if (row.indexOf('highlight_p') != -1) {
		row = row.replace(/ highlight_p/, "")
	}
	var rtds = rows[r].getElements('td');
	rtds.each(function(td) {
		td.removeClass("highlight");
	});
};
	
var highlightCol = function(col) {	
  var c = col.toInt();
	clearMatrix();		
	rows.each(function(tr){
		var rtds = tr.getElements('td');
		if (rtds[c] != null &&
		!rtds[c].hasClass('leer')) {
			rtds[c].addClass("highlight_p");
		}
	});
};

	
var highlightColById = function(colid) {	
	clearMatrix();		
	var td = $(colid);
	var tdsInRow = td.getParent('tr').getElements('td');
	var c = tdsInRow.indexOf(td);	
	rows.each(function(tr){
		var rtds = tr.getElements('td');
		if (rtds[c] != null &&
		!rtds[c].hasClass('leer')) {
			rtds[c].addClass("highlight_p");
		}
	});
};

var highlightRowById = function(tdid) {
	clearMatrix();
	var rtds = $(tdid).getParent('tr').getElements('td');	
	rtds.each(function(td){
		if (!td.hasClass('leer')) {
			td.addClass("highlight_p");
		}
	});
};
	
var moverHighlightCol = function(col) {	
  var c = col.toInt();
	rows.each(function(tr){
		var rtds = tr.getElements('td');
		if (rtds[c] != null &&
		!rtds[c].hasClass('leer')) {
			rtds[c].addClass("highlight");
		}
	});
};

var moverUnlightCol = function(col) {	
  var c = col.toInt();
	rows.each(function(tr){
		var rtds = tr.getElements('td');
		if (rtds[c] != null) {
			rtds[c].removeClass("highlight");
		}
	});
};

var clearMatrix = function() {
	tds.each(function(td) {
		td.removeClass("highlight_p");
		td.removeClass("highlight");
	});
};

var initSlider = function() {
	var slide = $('slider');
	var distance = $('distance');
	if (distance) {
		distance.set('html', '10 km pro Ring');
		umkSlider = new Slider(slide, slide.getElement('.knob'), {
			steps: 101,		// There are 100 steps
			range: [10],	// Minimum value is 10
			onChange: function(value){
				if (UKSOverlay) {
					distance.set('html', value + ' km pro Ring');					
					//UKSOverlay.redraw('', value);
					if (value < 101) {
						UKSOverlay.draw('', value);
					}					
					if ($defined(drawUmkreisSlider)) {
						drawUmkreisSlider();
					}
				}		
			},
			onComplete: function(value){
				if ($defined(umkreisSucheHookUp)) {
					slidervalue = value;
					umkreisSucheHookUp(value);
				}
			}		
		});		
		return true;
	}
	else {
		return false;
	}
};

// 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;
				});
			}
		});
	}
}

// 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 (isIE6) {
					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)) {
		// console.log(evt.page.x,  evt.page.y);
		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');
	});
}

// SubmitButton durch AjaxLoader ersetzen
var qsReplace = function(btnId) {	
	var al = $(ajaxLoader);
	al.setStyles({
		width: '32px',
		height: '32px',
		marginRight: '45px'
	});
	al.replaces($(btnId));
}

// SubmitButton dimmen
var dimBtn = function(btnId) {	
	qsReplace(btnId);
}




var umkreisSucheHookUp = function() {};
var drawUmkreisSlider = function() {};

var mooFlowInputsFocus = function() {
	inputArray.each(function(input){
		input.addEvent('focus', function(evt){
			mooFlowInputHasFocus = true;
		});
		input.addEvent('blur', function(evt){
			mooFlowInputHasFocus = false;
		});
	});
};


var checkMaxChildren = function() {
	/* 
	"Anzahl Erwachsene" - "Anzahl Einzelzimmer" = "Erwachsene im Doppelzimmer"
	Erwachsene im Doppelzimmer / 2 == max. Kinder : muss größer sein als die Anzahl Kinder
												  : muss aber auch kleiner oder gleich sein als die Anzahl DZ
	 */
	 
	 var anzErw = $('ss_erwachsene').value;
	 var anzKinder = $('ss_kinder').value;
	 var anzEZ = $('ss_einzelzimmer').value;
	 var anzDZ = $('ss_doppelzimmer').value;
	 var erwInDZ = anzErw - anzEZ;
	 var maxKinder = erwInDZ / 2;
	 // console.log("ERW: ", anzErw, " / KIDS: ", anzKinder, " / EZ: ", anzEZ, " / DZ: ", anzDZ, " / ERW IN DZ: ", erwInDZ, " / MAXKIND: ", maxKinder);
	 
	 // ToDo: sollte die Anzahl Doppelzimmer kleiner sein als (Erwachsene - Einzelzimmer) / 2, dann sollte ein anderer Hinweistext ausgeben werden
	 // z.B. Die Anzahl der EZ und DZ entspricht nicht der Anzahl der angegebenen Personen. Bitte überprüfen Sie Ihre Eingaben.
	 if (erwInDZ/2 > anzDZ) {
	 	// return false;
	 }
	 
	 if (anzKinder > 0 && maxKinder < anzKinder) {
	 	return false;
	 }
	 return true; 
};

var checkRoomPersonsCount = function() {
	var anzErw = parseInt($('ss_erwachsene').value);
	var anzKinder = parseInt($('ss_kinder').value);
	var anzEZ = parseInt($('ss_einzelzimmer').value);
	var anzDZ = parseInt($('ss_doppelzimmer').value);
	var anzZimmer = anzEZ + anzDZ;
	
	//alert("anzKinder: " + anzKinder + " - anzErw: " + anzErw + " - anzEZ: " + anzEZ + " - anzDZ:"  + anzDZ + " - anzZimmer: " + anzZimmer);
	
	
	//if (anzKinder == 0 && anzErw == 1 && (anzEZ + anzDZ) > 1) {
	if (anzKinder == 0 && (anzErw < (anzEZ + anzDZ))) {
		return false;
	}
	return true;
};


var getInternetExplorerVersion = function () {
	// Returns the version of Internet Explorer or a -1
	// (indicating the use of another browser).
  	var rv = -1; // Return value assumes failure.
  	if (navigator.appName == 'Microsoft Internet Explorer') {
    	var ua = navigator.userAgent;
    	var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    	if (re.exec(ua) != null)
      		rv = parseFloat( RegExp.$1 );
  		}
  	return rv;
};

var loadMatrixNav = function() {
	matrixNavEls = $$('#matrixnav .tablist li');
	if (matrixNavEls.length > 0){
		matrixNavEls.each(function(el){
			el.addEvent('click', function(evt){
				evt.stop();
				matrixNavEls.each(function(ell){
					if (el == ell) {
						ell.addClass('selected');
					}
					else {
						ell.removeClass('selected');
					}					
				});
				// Text des Links im Tab auslesen
				// var lnk = el.getElement('a');			
				// var lnkText = lnk.get('href').substr(lnk.get('href').indexOf('#')+1);
				// console.log("LINKTEXT: ", lnkText);
				
			});
		});
	}
};

var loadDetailViewToggles = function() {
	bars = $$('.bar');
	if (bars.length > 0) {
		bars.each(function(bar) {
			var prev = bar.getPrevious();
			if ($defined(prev)) {
				if (prev.hasClass('detail')) {
					var prevEffect = attachEffect(prev);
					var toggle = flipText(bar.getElement("a.toggle"));				
					if ($chk(toggle)) {
						toggle.addEvent('click', function(evt) {
							evt.stop();
							toggleEffect(prevEffect, prev);			
							if (prev.getStyle("display") == 'none') {
								toggle.addClass('toggleopen');
								toggle.set('html', toggle.ontext);
								var rel = toggle.get('rel');
								// console.log("REL: ", rel);
								if ($chk(rel)) {
									buildGalleryDetailThumbnails(rel);
								}								
							}		
							else {
								toggle.removeClass('toggleopen');
								toggle.set('html', toggle.offtext);
							}							
						});
					}
				}
			}
		});
		Mediabox.scanPage();
		markAllCheckBoxes();
	}	

	moreLinks = $$('.row h2 a', 'a.moreinfotoggle');
	if (moreLinks.length > 0) {
		moreLinks.each(function(h2) {
			if (h2.getParent('.row')) {
				var detail = h2.getParent('.row').getNext('.row.detail');				
				var toggle = flipText(h2.getParent('.row').getNext('.bar').getElement('a.toggle'));
			}
			if ($chk(detail)) {
				var detailEffect = attachEffect(detail);
				h2.addEvent('click', function(evt) {
					evt.stop();
					toggleEffect(detailEffect, detail);	
					if (detail.getStyle("display") == 'none') {
						toggle.addClass('toggleopen');
						toggle.set('html', toggle.ontext);
					}		
					else {
						toggle.removeClass('toggleopen');
						toggle.set('html', toggle.offtext);
					}
				});
			}
			else { // keine Details vorhanden
				h2.addEvent('click', function(evt){
					evt.stop();
				});
			}
		});
	}
};

var setupTootips = function() {
	// MooTools ToolTips
	allTipz = $$('.sdtooltip');
	if (allTipz.length > 0) {
		allTipz.each(function(element,index) {
			var title = element.get("title");
			if ($chk(title)) {
				var content = title.split('::');
				element.store('tip:title', content[0]);
				element.store('tip:text', content[1]);
			}			
		});
			
	}
	
	//create the tooltips
	myTips = new Tips('.sdtooltip',{
		text : 'rel',
		className: 'sdtip'
	});
};

var buildGalleryDetailThumbnails = function(hotelid) {
	var imgArray = thumbnailArray[hotelid];
	var gtd = $('gtd_'+hotelid);
	if (gtd) {
		$('gtd_'+hotelid).getElements('span.imgshadow span').each(function(spn, index) {
			var myImg = new Element('img',{ 'src' : imgArray[index], 'height' : '90' });
			var zoomImg = new Element('img', { 'src' : '/bw/v3/img/ico/zoom.gif', 'alt' : 'vergrössern', 'class' : 'zoom' });
			if (!spn.retrieve('hasImage')) {
				myImg.inject(spn);
				zoomImg.inject(spn);
				spn.store('hasImage', true);
			}		
		});	
	}
};

var moveCalendar = function(container) {	
	datepicker = $('datefields_qs');	
	var holder = $(container);	
	if (datepicker && !$chk(holder.getElement('#datefields_qs'))) {
		datepicker.inject(holder);
	}	
};




var setupEditButtons = function() {
	if (soEditButtons.length > 0) {
		soEditButtons.each(function(el) {
			el.removeEvents('click');
			el.addEvent('click', function(evt) {
				evt.stop();
				if ($('reisedaten').getStyle('display') == 'none') {
					modifiers.each(function(mod){
						$(mod).fade('out');
						$(mod).setStyle('display', 'none');
						if (mod == 'reisedaten') {
							$(mod).fade('hide');
							$(mod).setStyle('display', '');
							$(mod).fade('in');
							moreoptionstoggle.setStyle('display', '');
							umkreistoggle.setStyle('display', 'none');	
							
							tabs.each(function(tab) {
								if (tab.get('href').substr(tab.get('href').indexOf('#')+1) == 'reisedaten') {
									tab.getParent().addClass('selected');
								}							
								else {
									tab.getParent().removeClass('selected');								
								}
							});						
						}
					});
				}	
				hideEditButtons();			
			});
		});	
	}
};


var hideEditButtons = function() {
	soEditButtons.each(function(el) {
		el.setStyle('visibility', 'hidden');
	});
};

var showEditButtons = function() {
	soEditButtons.each(function(el) {
		if (el.style.visibility == 'hidden') {
			el.setStyle('visibility', 'visible');
		}
	});
	setupEditButtons();
};

var modifyEditButtons = function() {
	soEditButtons.each(function(el) {
		if (el.style.visibility == 'hidden') {
			el.setStyle('visibility', 'visible');
			el.removeEvents('click');
		}
		
		el.addEvent('click', function(evt) {
			evt.stop();			
			//console.log("EL: ", el);
			var rel = el.get("rel");
			if ($chk(rel)) {
				// console.log("REL: ", rel);
				if (rel == 'dauer' || rel == 'naechte') {
					arrivalDepartureDatePicker('anreise_dp2', 'abreise_dp2', 'ss_nights2');
					hideEditable('dauer');
					hideEditable('naechte');
				}
				else {
					hideEditable(rel);
				}				
			}		
		});
	});
}

var hideEditable = function(rel) {
	var textCont = $(rel + "_Text");
	var inputCont = $(rel + "_Input");
	//var submitBtn = $("editSubmit");
	if (inputCont) {
		if ((inputCont).style.display == 'none') {
			textCont.fade('out');
			textCont.setStyle('display', 'none');
			
			inputCont.fade('hide');
			inputCont.setStyle('display', '');
			inputCont.fade('in');
			
			/* 
			if (submitBtn.style.display == 'none') {
				submitBtn.fade('hide');
				submitBtn.setStyle('display', '');
				submitBtn.fade('in');
			}
			 */
		}	
	}
}
var showEditable = function(rel) {
	var textCont = $(rel + "_Text");
	var inputCont = $(rel + "_Input");
	// var submitBtn = $("editSubmit");
	if (textCont) {
		if ((textCont).style.display == 'none') {
			inputCont.fade('out');
			inputCont.setStyle('display', 'none');
			
			// submitBtn.fade('out');
			// submitBtn.setStyle('display', 'none');
			
			textCont.fade('hide');
			textCont.setStyle('display', '');
			textCont.fade('in');
		}	
	}
}

var showAllEditables = function() {
	// console.log(soEditButtons.length);
	if (soEditButtons.length > 0) {		
		soEditButtons.each(function(el) {
			var rel = el.get('rel');
			showEditable(rel);
		});
	}
};


// Anreise- / Abreise Datepicker
var arrivalDepartureDatePicker = function(arrivalInput, departureInput, nightsSelect) {
	var arrive = $(arrivalInput);
	var depart = $(departureInput);
	var ctNights = $(nightsSelect);
	var dateArr = new Array();
	var myTweak = {x: 0, y: 0};
	// console.log("arrivalInput: ", arrivalInput, " / departureInput: ", departureInput);	
	// console.log("ARR: ", arrive, " / DEP: ", depart, " / NIGHTS: ", ctNights);

	if (arrive.getParent().get('rel')) {
		var tw = arrive.getParent().get('rel').split(",");		
		myTweak = {x: tw[0].toInt(), y: tw[1].toInt()};
	}	
		
	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: myTweak,
		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)'
								});
							}
						});
					}
				});
			}
		},
		onHideStart: function() {
		  if (ctNights) {
		    var oldValArr = new Array();
		    var arrivalIsSet = false;		    
        myCal.calendars.each(function(kal, i) {
          dateArr[i] = kal.val;
          oldValArr[i] = kal.el.cM3;          
          if (i == 0) {    
            var oldValue = (oldValArr[0]).split(".");
            var oldDate = new Date(oldValue[2], oldValue[1]-1, oldValue[0]);
            var newDate = dateArr[0];

            if (oldDate > newDate) {
              var newDepart = new Date(myCal.calendars[0].val.getTime() + (ctNights.value * 1000 * 3600 * 24) + (1000*3600));
		          myCal.calendars[1].val = newDepart;
              myCal.write(myCal.calendars[1]);
              myCal.check(myCal.calendars[1]);
              kal.el.cM3 = myCal.format(newDate, 'd.m.Y');              
            }
            else if (oldDate < newDate) {
              arrivalIsSet = true;           
              var newDepart = new Date(myCal.calendars[0].val.getTime() + (ctNights.value * 1000 * 3600 * 24) + (1000*3600));
              myCal.calendars[1].val = newDepart;
              myCal.write(myCal.calendars[1]);
              myCal.check(myCal.calendars[1]);
              kal.el.cM3 = myCal.format(newDate, 'd.m.Y');
            }
          }
          else {            
            if (!arrivalIsSet && oldValArr[1] != "") {       
              var oldValue = (oldValArr[1]).split(".");
              var oldDate = new Date(oldValue[2], oldValue[1]-1, oldValue[0]);              
              var newDate = dateArr[1];
              
              if (oldDate > newDate) {
                var naechte = ((newDate - dateArr[0]) / (3600 * 24 * 1000)).round().toInt();
                if (!isNaN(naechte)) {             
                  ctNights.selectedIndex = naechte - 1;
                }
              }
              else {       
                var naechte = ((dateArr[1] - dateArr[0]) / (3600 * 24 * 1000)).round().toInt();
                if (!isNaN(naechte)) {             
                  ctNights.selectedIndex = naechte - 1;
                }
              }              
            }
          }
        });
      }
		}
	}); 
	ctNights.addEvent("change", function(evt) {
		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);
		}			
	});
};

var transferValuesToQS = function() {	 
	var fields = new Array('ss_ort','ss_hotel','anreise_dp','abreise_dp','ss_nights','ss_erwachsene','ss_kinder','ss_doppelzimmer','ss_einzelzimmer');
	fields.each(function(id) {
		var f1 = $(id);
		var f2 = $(id+'2');
		var fspan = $(id+'_span');
		if (f1 && f2 && $chk(f2.value)) {
			f1.value = f2.value;
			// console.log("ID: ", id, "F2 VAL: ", f2.value);
			
			// An- / Abreisedatum
			if (id == 'anreise_dp' || id == 'abreise_dp') {
				if (fspan) fspan.set('text', getWeekDayName(f2.value));
			}
			// Kinder
			else if (id == 'ss_kinder') {
				var lbl;
				if (parseInt(f2.value) > 1) {
					lbl = 'Kinder';
				}
				else if (parseInt(f2.value) == 1) {
					lbl = 'Kind';
				}
				else {
					lbl = '';		
					f2.value = '';			
				}							
				if (fspan) {
					fspan.set('text', f2.value);					
					$('ss_kinder_label').set('text', lbl);
				}
				else {
					if ($('kinderspan')) {
						$('kinderspan').set('text', ' ' + f2.value + ' ' + lbl);
					}
					else {
						var nspan = new Element('span', {'id': 'kinderspan'});
						nspan.set('text', ' ' + f2.value + ' ' + lbl);					
						nspan.inject($('personen_Text').getElement('a'), 'before');
					}					
				}						
			}
			// Doppelzimmer
			else if (id == 'ss_doppelzimmer') {
				$('zimmer_span').set('text', '');
				if (parseInt(f2.value) > 0) {
					if ($('dzspan')) {
						$('dzspan').set('text', f2.value + ' ' + 'Doppelzimmer' + ' ');
					}
					else {
						var nspan = new Element('span', {'id': 'dzspan'});
						nspan.set('text', f2.value + ' ' + 'Doppelzimmer' + ' ');					
						nspan.inject($('zimmer_Text').getElement('a'), 'before');
					}					
				}
				else {
					if ($('dzspan')) {
						$('dzspan').destroy();
					}
				}
			}
			// Einzelzimmer
			else if (id == 'ss_einzelzimmer') {
				$('zimmer_span').set('text', '');
				if (parseInt(f2.value) > 0) {
					if ($('ezspan')) {
						$('ezspan').set('text', f2.value + ' ' + 'Einzelzimmer' + ' ');
					}
					else {
						var nspan = new Element('span', {'id': 'ezspan'});
						nspan.set('text', f2.value + ' ' + 'Einzelzimmer' + ' ');					
						nspan.inject($('zimmer_Text').getElement('a'), 'before');
					}	
				}
				else {
					if ($('ezspan')) {
						$('ezspan').destroy();
					}
				}
			}
			// Anzahl Nächte
			else if (id == 'ss_nights') {
				if (fspan) fspan.set('text', f2.value);				
				if (parseInt(f2.value) > 1) {
					$('ss_nights_label').set('text', 'Nächte');
				}
				else {
					$('ss_nights_label').set('text', 'Nacht');
				}
			}
			
			// sonst
			else {
				if (fspan) fspan.set('text', f2.value);
			} 						
		}
	});
	//if ($('ss_ort').value == "Stadt") $('ss_ort').value = "";
	//document.searchform.submit();
};

var fillCityRegionField = function(str) {
	var crspan = $('cityregion_span');	
	if (crspan && crspan.get('text') != str) {
		crspan.set('text', str);
	}
}

var getWeekDayName = function(dateStr) {
	var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
	var p = dateStr.split('.');
	var d = new Date(parseInt(p[2]),parseInt(p[1])-1,parseInt(p[0]));
	// console.log("D: ", d);	
	return Wochentag[d.getDay()] + ', ' + dateStr;
}

var showSearchOptionCount = function() {
	var dsparamCheckBoxes = $$('#moreoptions input[checked]');
	// console.log("CBs: ", dsparamCheckBoxes.length);
	var anz = "";
	if (dsparamCheckBoxes.length > 0) {
		// console.log($('moreoptionstoggle').offtext);
		anz = " (" + dsparamCheckBoxes.length + ")";
	}
	$('moreoptionstoggle').offtext = $('moreoptionstoggle').origtext + anz;
};

var showCartInfoDiv = function(el) {
	// alert("EL: "+ $(el));
	var div = $($(el).get('rel'));
	div.style.display = '';
	div.fade('in');
}

alterSearchformSubmit = function() { 
	var sform = $('searchform');
	//alert("isUKS" + isUKS);	
	//alert(sform);
	if (sform && $defined(isUKS)) {
		if (isUKS == true) {
			sform.removeEvent('keydown');
			sform.addEvent('keydown', function(evt){
				if (evt.code == 13) {
					evt.preventDefault();
					showAddress($('uks_ort').value);
					return false;
				}
			});
		}		 
		else {
			//alert("DA");
			sform.removeEvent('keydown');
			sform.addEvent('keydown', function(evt){
				if (evt.code == 13) {
					document.searchform.submit();
				}
			});
		}	
	}
}

var isCompareCheckboxChecked = function() {
	var checked = false;	
	$(document.body).getElements('input[name=selectedpnum]').each(function(cb) {
		// console.log("CHECKED", cb.get('checked'));
		if (cb.get('checked') == true) {
			checked = true;
		}
	});
	return checked;
}

var $defined = function(obj){
    return (obj != undefined);
};



