var cntLi = 10;

/* creates date from string, in case of error returns null */
function str2Date(dateStr) {

	var dt = new Date();
	
	try {
		spl = dateStr.split(".");
		dt.setFullYear(spl[2]);
		var month = spl[1];
		if (month.substr(0,1) == '0') month = month.substr(1,1);
		dt.setMonth(parseInt(month)-1);
		dt.setDate(spl[0]);
	}	catch (err) {
		dt = null;
	}

	return dt;
}


/* creates string from date, in case of error returns empty string */
function date2Str(dt) {
	
	var str = "";
	
	try {
		str = dt.getDate() + '.' + (dt.getMonth()+1) + '.' + dt.getFullYear();		
	} catch(err) {
		str = "";
	}
	
	return str;
}


/* returns difference in days between two dates */
function getDiffInDays(dateStart, dateEnd) {
	var diff = 0;
	try {
		diff = dateEnd - dateStart;
		diff = diff / oneDay;
	}	catch (err) {
	}
	
	return Math.round(diff);
}


/* counts date from src day and month component, adds 2 days and sets the dest day and month components */
function addPlusDays2DtComps(srcDayCompId, srcMonthCompId, destDayCompId, destMonthCompId) {
	// get the value from src-components
	var today = new Date();
	var selectedDay = document.getElementById(srcDayCompId).options[document.getElementById(srcDayCompId).selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	var selectedMonth = document.getElementById(srcMonthCompId).options[document.getElementById(srcMonthCompId).selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	var selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	var srcDateStr = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	var srcDate = str2Date(srcDateStr);
	
	// add x days
	var destDateInMS = srcDate.getTime() + oneDay * plusDays;
	var destDate = new Date(destDateInMS);
	
	// set the values for dest-components
	var destDateStr = date2Str(destDate);
	splDest = destDateStr.split(".");
	rebuildDays(document.getElementById(destMonthCompId), document.getElementById(destDayCompId), destDate);
	document.getElementById(destDayCompId).selectedIndex = parseInt(splDest[0])-1;
	if (srcDate.getMonth() == destDate.getMonth()) {
		document.getElementById(destMonthCompId).selectedIndex = document.getElementById(srcMonthCompId).selectedIndex;
	} else {
		document.getElementById(destMonthCompId).selectedIndex = document.getElementById(srcMonthCompId).selectedIndex+1;
	}
}


/* sets the index of month component compSelectMonthYear to idx */
function setMonth(compSelectMonthYear, idx) {
	compSelectMonthYear.selectedIndex = idx;
}


/* count 'anzahlNaechte' from 'anreisedatum' and 'abreisedatum' */
function countAnzahlNaechte() {
	if ((anreisedatum != '') && isDate(anreisedatum) && (abreisedatum != '') && isDate(abreisedatum)) {
		anzahlNaechte = getDiffInDays(str2Date(anreisedatum), str2Date(abreisedatum));
	}
	//document.getElementById("xNachte").innerHTML = "Aktuelle Angebote f&uuml;r "+anzahlNaechte+" N&auml;chte";
	
	return anzahlNaechte;
}


/* sets default values for 'Anreisedatum' and 'Abreisedatum' (if desired) and inits date comboboxes */
function setDates(def) {
	if (def) {
		// default values
		var today = new Date();
		var dateInMS = today.getTime() + oneDay * xDays;
		var anreisedatumDate = new Date(dateInMS);
		anreisedatum = date2Str(anreisedatumDate);
		
		dateInMS = today.getTime() + oneDay * (xDays + yDays);
		var abreisedatumDate = new Date(dateInMS);
		abreisedatum = date2Str(abreisedatumDate);
	} else {
		// from variables anreisedatum and abreisedatum
		if ((anreisedatum != '') && isDate(anreisedatum) && (abreisedatum != '') && isDate(abreisedatum)) {
			anreisedatumDate = str2Date(anreisedatum);
			abreisedatumDate = str2Date(abreisedatum);
		}
	}

	// Aktuelle Angebote
	initDays(document.getElementById("anreiseTag"), anreisedatumDate);
	initMonths(document.getElementById("anreiseMonatJahr"), anreisedatumDate);
	initDays(document.getElementById("abreiseTag"), abreisedatumDate);
	initMonths(document.getElementById("abreiseMonatJahr"), abreisedatumDate);

	// Suche aendern
	initDays(document.getElementById("hinreiseTag"), anreisedatumDate);
	initMonths(document.getElementById("hinreiseMonatJahr"), anreisedatumDate);
	initDays(document.getElementById("rueckreiseTag"), abreisedatumDate);
	initMonths(document.getElementById("rueckreiseMonatJahr"), abreisedatumDate);

	// set same values as in "Aktuelle Angebote" also in "Suche aendern"
	document.getElementById('hinreiseTag').selectedIndex = document.getElementById("anreiseTag").selectedIndex;
	document.getElementById('rueckreiseTag').selectedIndex = document.getElementById("abreiseTag").selectedIndex;
	document.getElementById('hinreiseMonatJahr').selectedIndex = document.getElementById("anreiseMonatJahr").selectedIndex;
	document.getElementById('rueckreiseMonatJahr').selectedIndex = document.getElementById("abreiseMonatJahr").selectedIndex;

	// Labels in middle part aendern
	var mn = dojo.date.locale.getNames("months", "wide", "standAlone", "de");
	splAnreise = anreisedatum.split(".");
	splAbreise = abreisedatum.split(".");
	var monthAnreise = splAnreise[1];
	if (monthAnreise.substr(0,1) == '0') monthAnreise = monthAnreise.substr(1,1);
	var monthAbreise = splAbreise[1];
	if (monthAbreise.substr(0,1) == '0') monthAbreise = monthAbreise.substr(1,1);
	document.getElementById("anreiseDatumText").innerHTML = splAnreise[0] + "." + mn[parseInt(monthAnreise)-1] + " " + splAnreise[2];
	document.getElementById("abreiseDatumText").innerHTML = splAbreise[0] + "." + mn[parseInt(monthAbreise)-1] + " " + splAbreise[2];
	document.getElementById("anreiseAnzahlErwachseneText").innerHTML = erwachsene + " Erwachsene"; 
	
	setAnreiseAnzahlKinderText();
	
	// set anzahlNaechte
	anzahlNaechte = countAnzahlNaechte();
}


/* sets the label in 'Reisedaten' for children due to variables */
function setAnreiseAnzahlKinderText() {
	if (anzahlKinder == 0) {
		document.getElementById("anreiseAnzahlKinderText").innerHTML = '';
	} else {
		var kindText = anzahlKinder + "";
		if (anzahlKinder == 1)
			kindText = kindText + " Kind";
		else
			kindText = kindText + " Kinder";
		if (anzahlKinder > 0) {
			if (kind1 == 1)
				kindText = kindText + ", " + kind1 + " Jahr";
			else
				kindText = kindText + ", " + kind1 + " Jahre";
		}
		if (anzahlKinder > 1) {
			if (kind1 == 1)
				kindText = kindText + ", " + kind2 + " Jahr";
			else
				kindText = kindText + ", " + kind2 + " Jahre";
		}
		if (anzahlKinder > 2) {
			if (kind1 == 1)
				kindText = kindText + ", " + kind3 + " Jahr";
			else
				kindText = kindText + ", " + kind3 + " Jahre";
		}
		document.getElementById("anreiseAnzahlKinderText").innerHTML = kindText;
	}
}


/* sets default value for 'erwachsene' (if desired) and fills comboboxes */
function setAdults(def) {
	if (def) {
		erwachsene = defErwachsene;
	}
	
	initErwSelect('Erw');
	for (var i=1; i<=cntLi; i++)
		initErwSelect('Erwachsene' + i);
	initErwSelect('PAX');
}


/* fills desired combobox for 'Erwachsene' */
function initErwSelect(id) {
	removeOptions(document.getElementById(id));
	for (var i=1; i<=4; i++) {
		var option = document.createElement("option");
		option.setAttribute("value", i);
		// selected value is set hier, because in IE6 doesn't work selectedIndex
		// compSelect.selectedIndex = selDate.getDate()-1;
		if (i == erwachsene)
			option.setAttribute("selected", "selected");
		if (i == 1)
			option.appendChild(document.createTextNode(i + " Erwachsener"));	
		else
			option.appendChild(document.createTextNode(i + " Erwachsene"));
		document.getElementById(id).appendChild(option);		
	}
}


/* sets all 'Erwachsene' comboboxes to same value as the one with 'id' */
function changeAnzahlErwachsene(id, doSearch) {
	var selIdx = document.getElementById(id).selectedIndex;
	erwachsene = document.getElementById(id).options[selIdx].value;
	for (var i=1; i<=cntLi; i++)
		document.getElementById('Erwachsene' + i).selectedIndex = selIdx;
	document.getElementById('PAX').selectedIndex = selIdx;
	document.getElementById('Erw').selectedIndex = selIdx;
	document.getElementById("anreiseAnzahlErwachseneText").innerHTML = erwachsene + " Erwachsene";
	if (doSearch) {
		if (erwachsene > 2)
			doRedirectErwachsene();
		else
			getAvailability();
	}
}


/* fills comboboxes for 'Anzahl' */
function setAnzahls() {
	for (var i=1; i<=cntLi; i++)
		initAnzahlSelect('AnzahlR' + i);
}


/* fills desired combobox for 'Anzahl' */
function initAnzahlSelect(id) {
	removeOptions(document.getElementById(id));
	for (var i=1; i<=4; i++) {
		var option = document.createElement("option");
		option.setAttribute("value", i);
		// selected value is set hier, because in IE6 doesn't work selectedIndex
		if (i == 1)
			option.setAttribute("selected", "selected");
		option.appendChild(document.createTextNode(i+""));
		document.getElementById(id).appendChild(option);		
	}
}


/* fills comboboxes for 'AnzahlKx_y' and 'Kindx' */
function setChildren(def) {
	if (def) {
		anzahlKinder = defKinder;
		kind1 = defKidAge;
		kind2 = defKidAge;
		kind3 = defKidAge;
		kind1main = defKidAge;
		kind2main = defKidAge;
		kind3main = defKidAge;
	}
	
	for (var i=1; i<=3; i++)
		for (var j=0; j<=cntLi; j++)
			initChildSelect('AnzahlK'+i+'_'+j, def, i);
	
	for (var i=1; i<=3; i++)
		initChildSelect('Kind' + i, def, i);
		
	for (var i=1; i<=cntLi; i++)
		setChildLink('MitreisendeKinder_'+i);
		
	setAllChildResults();
	setMainChildResults();
}


/* sets the Link to children popup */
function setChildLink(id) {
	if (anzahlKinder > 0) {
		document.getElementById(id).innerHTML = "Kinder:";
		document.getElementById(id).style.color = "#000";
	} else {
		document.getElementById(id).innerHTML = "Keine Kinder";
		document.getElementById(id).style.color = "#BBBBBB";
	}
}


/* fills desired combobox for 'AnzahlKx_y'
	 def - default values
	 pos - 1..3 - which from children
 */
function initChildSelect(id, def, pos) {
	removeOptions(document.getElementById(id));
	
	var option = document.createElement("option");
	option.setAttribute("value", defKidAge);
	if (def || (eval('kind'+pos) == defKidAge))
		option.setAttribute("selected", "selected");
	option.appendChild(document.createTextNode("---"));
	document.getElementById(id).appendChild(option);
	
	for (var i=0; i<=16; i++) {
		var option = document.createElement("option");
		option.setAttribute("value", i);
		if (!def && (eval('kind'+pos) == i))
			option.setAttribute("selected", "selected");
		option.appendChild(document.createTextNode(i+" Jahre"));
		document.getElementById(id).appendChild(option);
	}
}


/* after click on 'Schliessen' reset CBs in child popup with 'id' to values due to variables */
function resetChildPopup(id) {
	var idx = kind1; // dieses bloedes Verhalten ist hier due to bug in FF, ich kann nicht selectedIndex auf kind1+1 setzen
	idx++;
	document.getElementById("AnzahlK1_"+id).selectedIndex = (kind1 == defKidAge) ? 0 : idx;
	idx = kind2;
	idx++;
	document.getElementById("AnzahlK2_"+id).selectedIndex = (kind2 == defKidAge) ? 0 : idx;
	idx = kind3;
	idx++;
	document.getElementById("AnzahlK3_"+id).selectedIndex = (kind3 == defKidAge) ? 0 : idx;
}


/* after click on 'Schliessen' reset main CBs in child popup with 'id' to values due to variables */
function resetMainChildPopup() {
	var idx = kind1main; // dieses bloedes Verhalten ist hier due to bug in FF, ich kann nicht selectedIndex auf kind1+1 setzen
	idx++;
	document.getElementById("AnzahlK1_0").selectedIndex = (kind1main == defKidAge) ? 0 : idx;
	idx = kind2main;
	idx++;
	document.getElementById("AnzahlK2_0").selectedIndex = (kind2main == defKidAge) ? 0 : idx;
	idx = kind3main;
	idx++;
	document.getElementById("AnzahlK3_0").selectedIndex = (kind3main == defKidAge) ? 0 : idx;
}


/* sets the results for children after change in one of them */
function setChildResults(id, doSearch) {
	// 1. set all variables to values from popup with 'Anzahlx_i'
	anzahlKinder = 0;
	kind1 = document.getElementById('AnzahlK1_'+id).options[document.getElementById('AnzahlK1_'+id).selectedIndex].value;
	kind1main = kind1;
	if (kind1 > defKidAge) anzahlKinder++;
	kind2 = document.getElementById('AnzahlK2_'+id).options[document.getElementById('AnzahlK2_'+id).selectedIndex].value;
	kind2main = kind2;
	if (kind2 > defKidAge) anzahlKinder++;
	kind3 = document.getElementById('AnzahlK3_'+id).options[document.getElementById('AnzahlK3_'+id).selectedIndex].value;
	kind3main = kind3;
	if (kind3 > defKidAge) anzahlKinder++;
	
	// 1a. If user selected children not in desired order (also kind1 nothing, kind2 or kind3 something) - correct it, so that there are always set first variables
	correctChildrenOrder();
	
	// 2. set all child selects in all popups to the same value
	for (var i=0; i<=cntLi; i++) {
		// selected value is set as setAttribute, because in IE6 doesn't work selectedIndex
		var idx = kind1; // dieses bloedes Verhalten ist hier due to bug in FF, ich kann nicht selectedIndex auf kind1+1 setzen
		idx++;
		if (navigator.userAgent.substring(25,33) == 'MSIE 6.0') {
			if (kind1 == defKidAge)
				document.getElementById("AnzahlK1_"+i).options[0].setAttribute("selected", "selected");
			else
				document.getElementById("AnzahlK1_"+i).options[idx].setAttribute("selected", "selected");
		} else
			document.getElementById("AnzahlK1_"+i).selectedIndex = (kind1 == defKidAge) ? 0 : idx;
		idx = kind2;
		idx++;
		if (navigator.userAgent.substring(25,33) == 'MSIE 6.0') {
			if (kind2 == defKidAge)
				document.getElementById("AnzahlK2_"+i).options[0].setAttribute("selected", "selected");
			else
				document.getElementById("AnzahlK2_"+i).options[idx].setAttribute("selected", "selected");
		} else
			document.getElementById("AnzahlK2_"+i).selectedIndex = (kind2 == defKidAge) ? 0 : idx;
		idx = kind3;
		idx++;
		if (navigator.userAgent.substring(25,33) == 'MSIE 6.0') {
			if (kind3 == defKidAge)
				document.getElementById("AnzahlK3_"+i).options[0].setAttribute("selected", "selected");
			else
				document.getElementById("AnzahlK3_"+i).options[idx].setAttribute("selected", "selected");
		} else
			document.getElementById("AnzahlK3_"+i).selectedIndex = (kind3 == defKidAge) ? 0 : idx;
	}
	
	// 3. set all child selects in 'Suche aendern'
	idx = kind1; // dieses bloedes Verhalten ist hier due to bug in FF, ich kann nicht selectedIndex auf kind1+1 setzen
	idx++;
	document.getElementById("Kind1").selectedIndex = (kind1 == defKidAge) ? 0 : idx;
	idx = kind2;
	idx++;
	document.getElementById("Kind2").selectedIndex = (kind2 == defKidAge) ? 0 : idx;
	idx = kind3;
	idx++;
	document.getElementById("Kind3").selectedIndex = (kind3 == defKidAge) ? 0 : idx;
	
	// 4. set all child results
	setAllChildResults();
	
	// 5. set label in 'Reisedaten'
	setAnreiseAnzahlKinderText();
	
	// 6. set labels for children popups
	for (var i=1; i<=cntLi; i++)
		setChildLink('MitreisendeKinder_'+i);
	
	// 7. do search
	if (doSearch)
		getAvailability();
}


/* sets all the result divs for children */
function setAllChildResults() {
	
	for (var i=0; i<=cntLi; i++) {
		if (anzahlKinder == 0) {
			$('ChildDefault_'+i).innerHTML = '';
			$('ChildDefault_'+i).style.display = 'none';
			$('ChildDefault_'+i).style.visibility = 'hidden';
			
			$('ChildResult1_'+i).innerHTML = ''; 
			$('ChildResult1_'+i).style.display = 'none';
			$('ChildResult1_'+i).style.visibility = 'hidden';
			
			$('ChildResult2_'+i).innerHTML = ''; 
			$('ChildResult2_'+i).style.display = 'none';
			$('ChildResult2_'+i).style.visibility = 'hidden';
			
			$('ChildResult3_'+i).innerHTML = ''; 
			$('ChildResult3_'+i).style.display = 'none';
			$('ChildResult3_'+i).style.visibility = 'hidden';
			
		}	else {
			
			$('ChildDefault_'+i).innerHTML = '';
			$('ChildDefault_'+i).style.display = 'none';
			$('ChildDefault_'+i).style.visibility = 'hidden';
			
			if (kind1 >= 0) {
				$('ChildResult1_'+i).innerHTML = kind1 + " J."; 
				$('ChildResult1_'+i).style.display = 'inline';
				$('ChildResult1_'+i).style.visibility = 'visible';
			} else {
				$('ChildResult1_'+i).innerHTML = ''; 
				$('ChildResult1_'+i).style.display = 'none';
				$('ChildResult1_'+i).style.visibility = 'hidden';
			}
			if (kind2 >= 0) {
				$('ChildResult2_'+i).innerHTML = kind2 + " J."; 
				$('ChildResult2_'+i).style.display = 'inline';
				$('ChildResult2_'+i).style.visibility = 'visible';
			} else {
				$('ChildResult2_'+i).innerHTML = ''; 
				$('ChildResult2_'+i).style.display = 'none';
				$('ChildResult2_'+i).style.visibility = 'hidden';
			}
			if (kind3 >= 0) {
				$('ChildResult3_'+i).innerHTML = kind3 + " J."; 
				$('ChildResult3_'+i).style.display = 'inline';
				$('ChildResult3_'+i).style.visibility = 'visible';
			} else {
				$('ChildResult3_'+i).innerHTML = ''; 
				$('ChildResult3_'+i).style.display = 'none';
				$('ChildResult3_'+i).style.visibility = 'hidden';
			}
		}
	}
}


/* sets the results for children after change in main popup */
function setMainChildResults() {
	if ((kind1main < 0) && (kind2main < 0) && (kind3main < 0)) {
		$('ChildDefault_0').innerHTML = '';
		$('ChildDefault_0').style.display = 'none';
		$('ChildDefault_0').style.visibility = 'hidden';
		
		$('ChildResult1_0').innerHTML = ''; 
		$('ChildResult1_0').style.display = 'none';
		$('ChildResult1_0').style.visibility = 'hidden';
		
		$('ChildResult2_0').innerHTML = ''; 
		$('ChildResult2_0').style.display = 'none';
		$('ChildResult2_0').style.visibility = 'hidden';
		
		$('ChildResult3_0').innerHTML = ''; 
		$('ChildResult3_0').style.display = 'none';
		$('ChildResult3_0').style.visibility = 'hidden';
		
	}	else {
		
		$('ChildDefault_0').innerHTML = '';
		$('ChildDefault_0').style.display = 'none';
		$('ChildDefault_0').style.visibility = 'hidden';
		
		if (kind1main >= 0) {
			$('ChildResult1_0').innerHTML = kind1main + " J."; 
			$('ChildResult1_0').style.display = 'inline';
			$('ChildResult1_0').style.visibility = 'visible';
		} else {
			$('ChildResult1_0').innerHTML = ''; 
			$('ChildResult1_0').style.display = 'none';
			$('ChildResult1_0').style.visibility = 'hidden';
		}
		if (kind2main >= 0) {
			$('ChildResult2_0').innerHTML = kind2main + " J."; 
			$('ChildResult2_0').style.display = 'inline';
			$('ChildResult2_0').style.visibility = 'visible';
		} else {
			$('ChildResult2_0').innerHTML = ''; 
			$('ChildResult2_0').style.display = 'none';
			$('ChildResult2_0').style.visibility = 'hidden';
		}
		if (kind3main >= 0) {
			$('ChildResult3_0').innerHTML = kind3main + " J."; 
			$('ChildResult3_0').style.display = 'inline';
			$('ChildResult3_0').style.visibility = 'visible';
		} else {
			$('ChildResult3_0').innerHTML = ''; 
			$('ChildResult3_0').style.display = 'none';
			$('ChildResult3_0').style.visibility = 'hidden';
		}
	}
}


/* backups the init values of main child popup before opening */
function backupMainChildPopup() {
	kind1main = document.getElementById('AnzahlK1_0').options[document.getElementById('AnzahlK1_0').selectedIndex].value;
	kind2main = document.getElementById('AnzahlK2_0').options[document.getElementById('AnzahlK2_0').selectedIndex].value;
	kind3main = document.getElementById('AnzahlK3_0').options[document.getElementById('AnzahlK3_0').selectedIndex].value;
}


/* Changes the visibility of "ChildPopup". If it should be closed (invis == true), just makes it invisible */
function toggleChildPopup(invis, i) {
	var hg = 0;
	if (invis == true) {
		document.getElementById("ChildPopup_"+i).style.display = 'none';
		if ((i != 0) && (navigator.userAgent.substring(25,33) == 'MSIE 6.0')) { // everything under this popup jumped out of box
			try {
				hg = parseInt(document.getElementById("aaeUl").style.height.substr(0,3)) - 160;
				document.getElementById("aaeUl").style.height = hg + "px";
			} catch(err) {
			}
		}
	} else if (document.getElementById("ChildPopup_"+i).style.display == 'block') {
		document.getElementById("ChildPopup_"+i).style.display = 'none';
		if ((i != 0) && (navigator.userAgent.substring(25,33) == 'MSIE 6.0')) { // everything under this popup jumped out of box
			try {
				hg = parseInt(document.getElementById("aaeUl").style.height.substr(0,3)) - 160;
				document.getElementById("aaeUl").style.height = hg + "px";
			} catch(err) {
			}
		}
	} else {
		document.getElementById("ChildPopup_"+i).style.display = 'block';
		if ((i != 0) && (navigator.userAgent.substring(25,33) == 'MSIE 6.0')) { // everything under this popup jumped out of box
			try {
				hg = parseInt(document.getElementById("aaeUl").style.height.substr(0,3)) + 160;
				document.getElementById("aaeUl").style.height = hg + "px";
			} catch (err) {
			}
		}
	}
}


/* set all ChildPopus invisible */
function setChildPopupsInvisible() {
	for (var i=0; i<=cntLi; i++)
		toggleChildPopup(true, i);
}


/* set visibility of error-info-li-element */
function setErrorInfoVisibility(vis) {
	if (vis) {
		document.getElementById("AktuelleAngeboteErgebnisseH").style.visibility = "hidden";
		document.getElementById("ZimmerartLiError").style.visibility = "visible";
		document.getElementById("ZimmerartLiError").style.overflow = "visible";
		document.getElementById("ZimmerartLiError").style.height = heightLi0+"px";
	} else {
		document.getElementById("AktuelleAngeboteErgebnisseH").style.visibility = "visible";
		document.getElementById("ZimmerartLiError").style.visibility = "hidden";
		document.getElementById("ZimmerartLiError").style.overflow = "hidden";
		document.getElementById("ZimmerartLiError").style.height = "0px";
		document.getElementById("ZimmerartError").innerHTML = "";
	}
}


/* set visibility of all li-elements in "AktuelleAngeboteErgebnisse" */
function setLiVisibilityAll(vis) {
	for (var i=0; i<=cntLi; i++)
		setLiVisibility('ZimmerartLi' + i, vis);
}


/* set visibility of li-element with 'id' in "AktuelleAngeboteErgebnisse" */
function setLiVisibility(id, vis) {
	if (vis) {
		document.getElementById(id).style.visibility = "visible";
		document.getElementById(id).style.overflow = "visible";
		if (id == "ZimmerartLi0")
			document.getElementById(id).style.height = heightLi0+"px";
		else
			document.getElementById(id).style.height = heightLi+"px";
	} else {
		document.getElementById(id).style.visibility = "hidden";
		document.getElementById(id).style.overflow = "hidden";
		document.getElementById(id).style.height = "0px";
	}
}

/* sets visibility of waiting picture */
function setWaitingVisibility(vis) {
	if (vis) {
		document.getElementById("waiting").style.visibility = "visible";
		document.getElementById("waiting").style.overflow = "visible";
		document.getElementById("waiting").style.height = "32px";
	} else {
		document.getElementById("waiting").style.visibility = "hidden";
		document.getElementById("waiting").style.overflow = "hidden";
		document.getElementById("waiting").style.height = "0px";
	}
}

/* sets visibility of "Reisedaten" */
function setReisedatenVisibility(vis) {
	if (vis) {
		document.getElementById("Reisedaten").style.visibility = "visible";
		document.getElementById("Reisedaten").style.overflow = "visible";
		document.getElementById("Reisedaten").style.height = "160px";
	} else {
		document.getElementById("Reisedaten").style.visibility = "hidden";
		document.getElementById("Reisedaten").style.overflow = "hidden";
		document.getElementById("Reisedaten").style.height = "0px";
	}
}


/* sets visibility of "AktuelleAngeboteErgebnisse" */
function setAktuelleAngeboteErgebnisseVisibility(vis) {
	if (vis) {
		document.getElementById("AktuelleAngeboteErgebnisse").style.visibility = "visible";
		document.getElementById("AktuelleAngeboteErgebnisse").style.overflow = "visible";
		document.getElementById("AktuelleAngeboteErgebnisse").style.height = "auto";
	} else {
		document.getElementById("AktuelleAngeboteErgebnisse").style.visibility = "hidden";
		document.getElementById("AktuelleAngeboteErgebnisse").style.overflow = "hidden";
		document.getElementById("AktuelleAngeboteErgebnisse").style.height = "0px";
	}
}


/* sets visibility of "AktuelleAngebote" */
function setAktuelleAngeboteVisibility(vis) {
	if (vis) {
		document.getElementById("AktuelleAngebote").style.visibility = "visible";
		document.getElementById("AktuelleAngebote").style.overflow = "visible";
		if (navigator.userAgent.substring(25,33) == 'MSIE 6.0') {
			document.getElementById("AktuelleAngebote").style.height = "160px";
			//document.getElementById("AktuelleAngebote").style.margin = "8px 0 10px 0"; // Boxes overlaped
		} else if (navigator.userAgent.substring(25,33) == 'MSIE 8.0') {
            document.getElementById("AktuelleAngebote").style.height = "170px";
        } else {
			document.getElementById("AktuelleAngebote").style.height = "140px";
		}
		if (navigator.userAgent.substring(25,33) == 'MSIE 7.0') {
			document.getElementById("AktuelleAngebote").style.margin = "8px 0 25px 0"; // Boxes overlaped
		}
	} else {
		document.getElementById("AktuelleAngebote").style.visibility = "hidden";
		document.getElementById("AktuelleAngebote").style.overflow = "hidden";
		document.getElementById("AktuelleAngebote").style.height = "0px";
	}
}


/* sets visibility of "HotelInactive" */
function setHotelInactiveVisibility(vis) {
	if (vis) {
		document.getElementById("HotelInactive").style.visibility = "visible";
	} else {
		document.getElementById("HotelInactive").style.visibility = "hidden";
		document.getElementById("HotelInactive").style.overflow = "hidden";
		document.getElementById("HotelInactive").style.height = "0px";
	}
}


/*
	set values for middle part
	selectsOn - selects are visible
	*/
function setMiddleVisibility(selectsOn) {
	if (selectsOn) {
		setReisedatenVisibility(false);
		setAktuelleAngeboteVisibility(true);
	} else {
		// !selectsOn
		setReisedatenVisibility(true);
		setAktuelleAngeboteVisibility(false);
	}
}


/* sets visibility and text of title of google map due to input parameter */
function setGMTitleVisibility() {
	if (mapTitle != '') {
		document.getElementById("gmTitle").innerHTML = unescape(mapTitle);
		document.getElementById("gmTitle").style.display = 'block';
		document.getElementById("gmTitle").style.visibility = 'visible';
	} else {
		document.getElementById("gmTitle").innerHTML = '';
		document.getElementById("gmTitle").style.display = 'none';
		document.getElementById("gmTitle").style.visibility = 'hidden';
	}
}


/* initial visibility of elements */
function initVisibility() {
	setChildPopupsInvisible();
	setLiVisibilityAll(false);
	setErrorInfoVisibility(false);
	setChildren(false);
	
	if (isactive) {
		// set visibility at the beginning due to parameters
		setHotelInactiveVisibility(false);
		if ((anreisedatum != '') && isDate(anreisedatum) && (abreisedatum != '') && isDate(abreisedatum) && (erwachsene != '') && isInteger(erwachsene)) {
			setMiddleVisibility(false);
			setDates(false); // fill comboboxes
			setAdults(false); // fill 'Erwachsene' comboboxes
		} else {
			setMiddleVisibility(true);
			setDates(true); // set the default values for an/abreisedatum and fill comboboxes
			setAdults(true); // fill 'Erwachsene' comboboxes with default values
		}
		setAktuelleAngeboteErgebnisseVisibility(true);
	} else {
		setWaitingVisibility(false);
		setReisedatenVisibility(false);
		setAktuelleAngeboteVisibility(false);
		setHotelInactiveVisibility(true);
		
		setAktuelleAngeboteErgebnisseVisibility(false);
		
		if ((anreisedatum != '') && isDate(anreisedatum) && (abreisedatum != '') && isDate(abreisedatum) && (erwachsene != '') && isInteger(erwachsene)) {
			setDates(false); // fill comboboxes
			setAdults(false); // fill 'Erwachsene' comboboxes
		} else {
			setDates(true); // set the default values for an/abreisedatum and fill comboboxes
			setAdults(true); // fill 'Erwachsene' comboboxes with default values
		}
	}
	setGMTitleVisibility();
}


/* sends request do DP */
function getAvailability() {
	if (isactive) {
		setWaitingVisibility(true);
		setDlAAEHeight(-2);
		setLiVisibilityAll(false);
		if ((anreisedatum != '') && isDate(anreisedatum) && (abreisedatum != '') && isDate(abreisedatum) && (erwachsene != '') && isInteger(erwachsene)) {
			/* count room occupancy - rules:
					1-2e + 1-3k => 1 room
					3-4e + 1-2k => 2 rooms + 1-2k 1.room
					3-4e + 3k   => 2 rooms + 2k 1.room + 1k 2.room
			*/
			var cntRooms, adultsRoom1, adultsRoom2, kidsRoom1, kidsRoom2;
			if (erwachsene <= 2) {
				cntRooms = 1;
				adultsRoom1 = erwachsene;
				adultsRoom2 = 0;
				kidsRoom1 = anzahlKinder;
				kidsRoom2 = 0;
			} else {
				cntRooms = 2;
				adultsRoom1 = 2;
				adultsRoom2 = erwachsene - 2;
				if (anzahlKinder <= 2) {
					kidsRoom1 = anzahlKinder;
					kidsRoom2 = 0;
				} else {
					kidsRoom1 = 2;
					kidsRoom2 = anzahlKinder - 2;
				}
			}
			
			/* default version for 1 room */
			cntRooms = 1;
			adultsRoom1 = erwachsene;
			adultsRoom2 = 0;
			kidsRoom1 = anzahlKinder;
			kidsRoom2 = 0;
			
			try
			{		
				var searchCriteriaDwrBean =	new Object();
			
				searchCriteriaDwrBean = 
				{				
					brandName: "SeoBrand",
					brandHttpsDomain: "seo",				
					
					departureDate: anreisedatum.replace(/\//g,'.'),
					returnDate: abreisedatum.replace(/\//g,'.'),			
	
					adults: erwachsene,
					infants: 0,
					children: anzahlKinder,
					
					kid1Age: kind1,
					kid2Age: kind2,
					kid3Age: kind3,
					
					cntRooms: cntRooms,
					adultsRoom1: adultsRoom1,
					adultsRoom2: adultsRoom2,
					kidsRoom1: kidsRoom1,
					kidsRoom2: kidsRoom2,
					
					hsn: new Array(hsn),
					category: new Array(category),
					catering:"ALL",
					
					flightSelected:false,
					hotelSelected:true,
					carSelected:false,
					railSelected:false				
				};		
				
				DpRemoteService.createSeoRequest(searchCriteriaDwrBean, replyAngebote);
			} catch (err) {
				//alert('Es gibt derzeit leider keine Angebote');
			}
			
		} 
	}
}


/* checks whether the dates "anreisedatum" and "abreisedatum" are consistent
	 if not, sets the error label and returns false
*/
function checkDateConsistency() {
	if (str2Date(anreisedatum) >= str2Date(abreisedatum)) {
		setWaitingVisibility(false);
		setErrorInfoVisibility(true);
		document.getElementById("ZimmerartError").innerHTML = "Das gew&auml;hlte Abreisedatum liegt vor dem Anreisedatum. Bitte ver&auml;ndern Sie Ihre Reisedaten.";
		setDlAAEHeight(-1);
		setAktuelleAngeboteVisibility(true);
		setReisedatenVisibility(false);
		return false;
	} else
		return true;
}


/* sets all values after submit of travel data changes and do new search */
function doSearch() {
	// set here the results from child popup, so that it has influence only after Search button
	setChildResults(0, false);
	
	// set new anreisedatum
	var today = new Date();
	var selectedDay = document.getElementById("anreiseTag").options[document.getElementById("anreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	var selectedMonth = document.getElementById("anreiseMonatJahr").options[document.getElementById("anreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	var selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	anreisedatum = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	
	// set new abreisedatum
	selectedDay = document.getElementById("abreiseTag").options[document.getElementById("abreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	selectedMonth = document.getElementById("abreiseMonatJahr").options[document.getElementById("abreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	abreisedatum = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	
	// set new erwachsene
	changeAnzahlErwachsene("Erw", false);
	
	// set all date comboboxes
	setDates(false);
	
	// set visibility of all middle parts
	initVisibility();
		
	// check of consistency
	if (checkDateConsistency()) {
		document.getElementById("AktuelleAngeboteErgebnisseH").innerHTML = "Angebote vom "+anreisedatum+" bis "+abreisedatum;
		//do new search
		if (erwachsene > 2)
			doRedirectErwachsene();
		else
			getAvailability();
	}
}


/* redirects user to lastminute.de search hotel page due to input in "Suche anedern" */
function doRedirect() {
	// set variables for url
	// depDate
	var today = new Date();
	var selectedDay = document.getElementById("hinreiseTag").options[document.getElementById("hinreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	var selectedMonth = document.getElementById("hinreiseMonatJahr").options[document.getElementById("hinreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	var selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	depDateDEFull = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	depDateDEShort = selectedDay + '.' + selectedMonth + '.' + selectedYear.toString().substr(2,2);
	depDateEN = selectedYear + '-' + selectedMonth + '-' + selectedDay;
	
	// retDate
	selectedDay = document.getElementById("rueckreiseTag").options[document.getElementById("rueckreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	selectedMonth = document.getElementById("rueckreiseMonatJahr").options[document.getElementById("rueckreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	retDateDEFull = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	retDateDEShort = selectedDay + '.' + selectedMonth + '.' + selectedYear.toString().substr(2,2);
	retDateEN = selectedYear + '-' + selectedMonth + '-' + selectedDay;

    var category = document.getElementById("STA").options[document.getElementById("STA").selectedIndex].value;
    var url = "http://www.lastminute.de/de_DE/lmn2/travel/hotel/searchRemote.do?agent_id=LAD&railSelected=off&destName="+document.getElementById("Reiseziel").value +
						"&adultAmount="+document.getElementById("PAX").options[document.getElementById("PAX").selectedIndex].value+
						"&kidAge="+document.getElementById("Kind1").options[document.getElementById("Kind1").selectedIndex].value+
						"&kidAge="+document.getElementById("Kind2").options[document.getElementById("Kind2").selectedIndex].value+
						"&kidAge="+document.getElementById("Kind3").options[document.getElementById("Kind3").selectedIndex].value+
						"&hotelSelected=on&hotelCategory="+(category == "" ? "-1":category)+
						"&hotelName="+document.getElementById("Hotel").value+
						"&roomCount=1&catering=ALL&adultsInRoom=" + 
                        document.getElementById("PAX").options[document.getElementById("PAX").selectedIndex].value;
						
	if (document.getElementById("Kind1").options[document.getElementById("Kind1").selectedIndex].value > defKidAge) url = url + "&kid1room=1";
	if (document.getElementById("Kind2").options[document.getElementById("Kind2").selectedIndex].value > defKidAge) url = url + "&kid2room=1";
	if (document.getElementById("Kind3").options[document.getElementById("Kind3").selectedIndex].value > defKidAge) url = url + "&kid3room=1";
	
	url = url + //"&promotionCodes="+
						"&depDate="+depDateDEFull+
						"&retDate="+retDateDEFull;//+
						//"&flightType=return&scat=hotel&";

    url += "&remoteRequest=true";
						
	window.location = url;
}


/* redirects user to lastminute.de search hotel page due to input in "Suche anedern" */
function doRedirectErwachsene() {
	// set variables for url
	// depDate
	var today = new Date();
	var selectedDay = document.getElementById("anreiseTag").options[document.getElementById("anreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	var selectedMonth = document.getElementById("anreiseMonatJahr").options[document.getElementById("anreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	var selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	depDateDEFull = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	depDateDEShort = selectedDay + '.' + selectedMonth + '.' + selectedYear.toString().substr(2,2);
	depDateEN = selectedYear + '-' + selectedMonth + '-' + selectedDay;
	
	// retDate
	selectedDay = document.getElementById("abreiseTag").options[document.getElementById("abreiseTag").selectedIndex].value;
	if (selectedDay.length == 1) selectedDay = '0'+selectedDay;
	selectedMonth = document.getElementById("abreiseMonatJahr").options[document.getElementById("abreiseMonatJahr").selectedIndex].value;
	if (selectedMonth.length == 1) selectedMonth = '0'+selectedMonth;
	selectedYear = ((selectedMonth >= (today.getMonth()+1)) ? today.getFullYear() : (today.getFullYear()+1));
	retDateDEFull = selectedDay + '.' + selectedMonth + '.' + selectedYear;
	retDateDEShort = selectedDay + '.' + selectedMonth + '.' + selectedYear.toString().substr(2,2);
	retDateEN = selectedYear + '-' + selectedMonth + '-' + selectedDay;
	
	var url = "http://www.lastminute.de/de_DE/lmn2/travel/hotel/search.do?agent_id=LAD&railSelected=off&destName="+document.getElementById("Destination").value+
						"&="+depDateEN+
						"&="+depDateDEShort+
						"&adultAmount="+document.getElementById("PAX").options[document.getElementById("PAX").selectedIndex].value+
						"&="+retDateEN+
						"&="+retDateDEShort+
						"&kidAge="+document.getElementById("Kind1").options[document.getElementById("Kind1").selectedIndex].value+
						"&kidAge="+document.getElementById("Kind2").options[document.getElementById("Kind2").selectedIndex].value+
						"&kidAge="+document.getElementById("Kind3").options[document.getElementById("Kind3").selectedIndex].value+
						"&hotelSelected=on&hotelCategory="+document.getElementById("STA").options[document.getElementById("STA").selectedIndex].value+
						"&hotelName="+document.getElementById("HotelNamePage").value+
						"&roomCount=2&catering=&adultsInRoom=2";
	if (erwachsene == 3)
		url = url + "&adultsInRoom=1";
	else
		url = url + "&adultsInRoom=2";
						
	if (document.getElementById("Kind1").options[document.getElementById("Kind1").selectedIndex].value > defKidAge) url = url + "&kid1room=1";
	if (document.getElementById("Kind2").options[document.getElementById("Kind2").selectedIndex].value > defKidAge) url = url + "&kid2room=1";
	if (document.getElementById("Kind3").options[document.getElementById("Kind3").selectedIndex].value > defKidAge) url = url + "&kid3room=1";
	
	url = url + //"&promotionCodes="+
						"&depDate="+depDateDEFull+
						"&retDate="+retDateDEFull;//+
						//"&flightType=return&scat=hotel&";
						
	window.location = url;
}


/* sets dynamically the height of 'AktuelleAngeboteErgebnisse'
	cnt is the count of offers
	cnt = -1 => error label
	cnt = -2 => waiting
	cnt = -3 => error label big
 */
function setDlAAEHeight(cnt) {
	var dlHeight = 0;
	if (cnt == -1) {
		if (navigator.userAgent.indexOf('Firefox') >= 0) {
			dlHeight = heightLi0;
		} else if (navigator.userAgent.substring(25,33) == 'MSIE 6.0') {
			dlHeight = heightLi+4;
		} else {	
			dlHeight = heightLi;
		}
	} else if (cnt == -2) {
		dlHeight = heightLi;
	} else if (cnt == -3) {
		dlHeight = heightLiErrorBig;
	} else {
		if (navigator.userAgent.substring(25,29) == 'MSIE')
			dlHeight = (cnt*(heightLi+(26+cnt))+heightLi0);
		else
			dlHeight = (cnt*(heightLi+(20+cnt))+heightLi0);
	}
	if (navigator.userAgent.substring(30,33) == '6.0') {
		document.getElementById("aaeUl").style.overflow = "hidden";
	}
	document.getElementById("aaeUl").style.height = dlHeight+"px";
}


/* sets the src of default hotel picture */
function loadDefImage(comp) {
	//comp.setAttribute("src", "/oss/img/noHotelLogo.gif");
	if (comp.height > 50) {
		comp.setAttribute("src", "/oss/hotelseiten/img/Hotel-schnaeppchen_gross.gif");
	} else if (comp.height > 39) {
		comp.setAttribute("src", "/oss/hotelseiten/img/Hotel-schnaeppchen_medium.gif");
	} else {
		comp.setAttribute("src", "/oss/hotelseiten/img/Hotel-schnaeppchen_klein.gif");
		comp.style.border = "1px solid #000";
	}
}


/* redirects user to lastminute.de booking page */
function doBooking(roomPos) {
	var url = "https://www.lastminute.de/de_DE/lmn2/travel/hotel/selectAndVerify.do?"+
						"hsn="+hsn+"&room_0="+roomPos+"&pos_id=0&offer_id="+offerId+"&service=Hotel&fpars=sd12&agent_id=seo_de&sid="+sId+"&cmpId="+cmpId+"&sqc=0";
	window.location = url;
}