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 isIE8 = false;
var soEditButtons;
var matrixNavEls;
var allTipz;
var h2links;
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;
	
window.addEvent('domready', function() {	
	if(Browser.Engine.trident && Browser.Engine.version < 5) {
		isIE6 = 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':									
									umkreistoggle.setStyle('display', '');
									moreoptionstoggle.setStyle('display', 'none');
									if(!mapStarted) {
										//alert("karte");
										initializeKartensuche.delay(300);
										mapStarted = true;
									}
									showEditButtons();		
									isUKS = false;
									alterSearchformSubmit();							
									break;
									
								case 'umkreis':									
									umkreistoggle.setStyle('display', 'none');
									moreoptionstoggle.setStyle('display', 'none');
									if ($('slideholder')) {
										initSlider.delay(600);
									}
									if(!umkreisMapStarted) {
										//alert("umkreis");
										initializeUmkreissuche.delay(300);
										umkreisMapStarted = true;
									}
									// 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();
		
		
		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') {
						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') {		
						//alert("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.setStyle('height', '248px');
				mapOpen = false;
			}
			else { // vergrössern
				umkreistoggle.set('html', umkreistoggle.ontext);
				umkreistoggle.addClass('open');
				mapHolder.setStyle('height', '560px');
				mapOpen = true;
			}
			mapCenter = map.getCenter();
			map.checkResize();
			map.setCenter(mapCenter);
		});
	} // 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');
			if ($chk(toggle.offtext) == false) {
				toggle.offtext = otext;
				toggle.ontext = toggletext[toggle.offtext];
				if (!$defined(toggle.ontext)) toggle.ontext = toggle.offtext;
			}			
			
			toggle.addEvent('click', function(evt) {
				evt.stop();
				var next = toggle.getNext();
				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();
			}
		});
	}
	
	var bookingUpdateBtn = $('bookingUpdateBtn');
	if (bookingUpdateBtn) {		
		bookingUpdateBtn.addEvent('click', function(evt){			
			if (checkMaxChildren() == false) {
				showToolTip('maxKinderHinweis', '',140, 170);
				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 { 
						dimBtn('quickSearchSubmit');
						cfqs.submit();
					}
				}
			});
		}
		var uks = $('cf_uksearch');
		if (uks && Browser.Engine.trident) {			
			uks.addEvent('keydown', function(evt){
				if (evt.code == 13) {
					uks.submit();
				}
			});
		}		
	} 

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

});// Ende domready



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

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

var attachEffectAndShowSearchOptions = function(el) {
	var myEffect = new Fx.Morph(el, { 'link': 'chain', 'duration' : 'short' });
	myEffect.start({ 'display': 'block' }).start({ '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 });
};

var hideEffect = function(eff, el) {
	eff.start({ 'opacity': 0 }).start({ '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 der Reservierung / Stornierung anzeigen" : "Details der Reservierung / Stornierung ausblenden",
	"Weitere Suchoptionen zeigen" : "Weniger Suchoptionen",
	"Karte vergrößern" : "Karte verkleinern"
});

var flipText = function(tog) {
	// console.log(tog);
	if (!$chk(tog)) return;
	tog.origtext = tog.get('html');
	
	if (!$defined(tog.offtext) || !$chk(tog.offtext)) {
		tog.offtext = tog.origtext;
		tog.ontext = toggletext[tog.offtext]
		// console.log(otext, tog.offtext, tog.ontext);
		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) {
	clearMatrix();
	var rtds = rows[row].getElements('td');
	rtds.each(function(td){
		if (!td.hasClass('leer')) {
			td.addClass("highlight_p");
		}
	});
};

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

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

var moverUnlightCol = function(col) {	
	rows.each(function(tr){
		var rtds = tr.getElements('td');
		if (rtds[col] != null) {
			rtds[col].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){
				distance.set('html', value + ' km pro Ring');
				UKSOverlay.redraw('', value);
				if ($defined(drawUmkreisSlider)) {
					drawUmkreisSlider();
				}				
			},
			onComplete: function(value){
				if ($defined(umkreisSucheHookUp)) {
					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) {		
				// console.log(cont);
				// console.log("X: ", evt.page.x, "Y: ", evt.page.y);
				evt.stop();
				cont.setStyle('display','block');
				var par = cont.getOffsetParent();
				var pos = $(par).getPosition();
				// console.log("POS:", pos.x, pos.y);	// 145 117
						
				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 = -cont.getSize().y + 'px';				
				var t = evt.page.y - pos.y - cont.getSize().y + 'px';
				
				// console.log("T: ", t, " - L: ", l);
				cont.setStyles({
					'top': t,
					'left': l
				});
				
				if (isIE6) {
					//alert(cont.getSize().x + " : " + cont.getSize().y);
					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) {	
	// alert(btnId);
	// var btn = $(btnId);	
	// var myFx = new Fx.Tween(btn, {'link': 'chain', 'duration': 'long'} );
	// myFx.start('opacity', 1, 0.2).start('opacity', 0.2, 0.7).start('opacity', 0.7, 0.2).start('opacity', 0.2, 0.7).start('opacity', 0.7, 0.2);
	// myFx.start('opacity', 1, 0.2);
	
	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 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() {
	// console.log("HALLO");
	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);
							}							
						});
					}
				}
			}
		});
	}	

	h2links = $$('h2 a');
	if (h2links.length > 0) {
		h2links.each(function(h2) {
			var detail = h2.getParent('.row').getNext('.row .detail');
			var toggle = flipText(h2.getParent('.row').getNext('.bar').getElement('a.toggle'));
			// console.log("toggle: ", 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];
	
	$('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) {
  $$('div.calendar').each(function(d) { 
    d.setStyles({
      'margin-top': '-116px',
      'margin-left': '-207px'
    })
   });
	var arrive = $(arrivalInput);
	var depart = $(departureInput);
	var ctNights = $(nightsSelect);
	
	var heute = new Date();
	var arriveDefault = new Date(heute.getTime() + (14 * 1000 * 3600 * 24));
	var departDefault = new Date(heute.getTime() + (15 * 1000 * 3600 * 24));
	
	var arrM = arriveDefault.getMonth()+1;
	arrM = (arrM < 10 ? "0"+arrM : arrM);
	if(Browser.Engine.trident) {
	  var arrY = arriveDefault.getYear();
	}
	else {
	  var arrY = arriveDefault.getYear() + 1900;
	}	
	
	var depM = departDefault.getMonth()+1;
	depM = (depM < 10 ? "0"+depM : depM);
	
	if(Browser.Engine.trident) {
	  var depY = departDefault.getYear();
	}
	else {
	  var depY = departDefault.getYear() + 1900;
	}
	
	var arrivalDay = (arriveDefault.getDate() < 10 ? '0'+arriveDefault.getDate() : arriveDefault.getDate());
	var departureDay = (departDefault.getDate() < 10 ? '0'+departDefault.getDate() : departDefault.getDate());
	
	arrive.value = arrivalDay + "." + arrM + "." + arrY;	
	depart.value = departureDay + "." + depM + "." + depY;
	ctNights.selectedIndex = 1;
	
	var dateArr = new Array();

	//console.log("arrivalInput: ", arrivalInput, " / departureInput: ", departureInput);	
	//console.log("ARR: ", arrive, " / DEP: ", depart, " / NIGHTS: ", ctNights);
		
	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,		
		onHideStart: function() {				
			myCal.calendars.each(function(kal, i) {
				dateArr[i] = kal.val;				
				if (ctNights) {
					var naechte = ((dateArr[1] - dateArr[0]) / (3600 * 24 * 1000)).round().toInt();
					//alert("NÄCHTE: " + naechte);
					ctNights.selectedIndex = naechte;
				}
			});
		},
		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)'
								});
							}
						});
					}
				});
			}
			
			$$('div.calendar').each(function(d) { 
       d.setStyles({
         'margin-top': '-116px',
         'margin-left': '-207px'
       })
      });			
		}	
	}); 
	ctNights.addEvent("change", function(evt) {
		var newDepart = new Date(myCal.calendars[0].val.getTime() + (ctNights.value * 1000 * 3600 * 24) + (1000*3600));
		// console.log("newDepart: ", newDepart);
		depart.value = myCal.format(newDepart, 'd.m.Y');
		myCal.calendars[1].val = newDepart;
		// console.log(myCal.calendars[1]);		
	});
	ctNights.addEvent("focus", function(evt) {
		// console.log(myCal.calendars[1]);
		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;
};

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












