var checks = new Array();//checkbox
var last=0;
var totalsumme=0;
var totalanzahlung= 0;
var totalrestzahlung= 0;
var oldcont="";
var keksarray= new Array();
var aktunit=0; var permclkunit=0; //Variablen für Unitswitchlink
var proceed= false;
var available=false;
var changeTableFired= false;
var selected= null;

//Browserweiche Checkboxindizierung unterschiedlich, Global definiert
if(navigator.appName!="Microsoft Internet Explorer"){
	var increment=2;
	var index=1;
} else {
	var increment=1;
	var index=0;
}

function checkOccupancy(unitID, zimmer) {
	createCookie();
	var dateFrom = document.getElementById("dateFrom2").value;
	var dateTo = document.getElementById("dateTo2").value;
	var check=false;
	//falls noch kein Booking- Cookie gesetzt, hier eins mit den Eingaben setzen

	if(available == false){
		checkAvailability(unitID);
	}
	if(dateFrom!= "" && dateTo!= "" && proceed!= false){
		if(oldcont=="" &&document.getElementById("result")){
			oldcont=document.getElementById("result").innerHTML;
		}
		var url = "ajax/getOccupancy.php?unitID=" + unitID+ "&dateFrom=" + dateFrom + "&dateTo=" +dateTo;
		if(document.getElementById("bookingRoomNo")!=null){//Hotels
			getPerson();
			if(document.getElementById("bookingAdultNo"+zimmer)){
				var adultNo =document.getElementById("bookingAdultNo"+zimmer).selectedIndex;
				if(document.getElementById("bookingKidNo"+zimmer)){
					if(adultNo==0 && document.getElementById("bookingKidNo"+zimmer).selectedIndex!=0){
						check=true;
					}
				}
				if(!dateFrom || !dateTo){
					check= false;
				}
				if(adultNo!=0||check){
					url = url + "&adultNo=" + adultNo;
					if (document.getElementById("bookingKidNo"+zimmer)){

						var kidNo = document.getElementById("bookingKidNo"+zimmer).selectedIndex;
						if (kidNo > 0) {
							var turl="&kids="; var c=0;
							for (var i = 1; i <= kidNo; i++) {
								var kidsAge =document.getElementById("bookingKids"+zimmer+i).value;
								if (kidsAge!=""){
									document.getElementById("result").style.display="";
									turl+=kidsAge+",";
									//turl = turl + "&kid" + i + "=" + kidsAge;
									c++;
								} else{
									document.getElementById("result").style.display="none";
								}
							}
							turl=turl.substr(0,turl.length-1);
							if(c==kidNo){
								url=url+ "&kidNo=" + kidNo+ turl;
							}
						}
					}
					if(timestamp(dateFrom)>timestamp(dateTo)){
						alert(document.getElementById("lngDatum").innerHTML);//Abreisedatum vor Anreise
						restoreField(zimmer);//Zurücksetzen
					} else{
						anfrage[zimmer].open("GET", url, true);
						anfrage[zimmer].onreadystatechange =updateRate;
						anfrage[zimmer].send(null);
					}
				} else{
					restoreField(zimmer);
				}
			}
		restoreSend();
		} else{//Ferienhäuser
			zimmer=1;
			var adultNo =document.getElementById("bookingAdultNo"+zimmer).selectedIndex;
			if(document.getElementById("bookingKidNo"+zimmer)){//Existiert Formularfeld?
				if(adultNo==0 && document.getElementById("bookingKidNo"+zimmer).selectedIndex!=0){
					check=true;
				}
			}
			if(adultNo!=0||check){
				url = url + "&adultNo=" + adultNo;
				if (document.getElementById("bookingKidNo"+zimmer)){
					var kidNo = document.getElementById("bookingKidNo"+zimmer).selectedIndex;
					if (kidNo > 0) {
						var turl=""; var c=0;
						for (var i = 1; i <= kidNo; i++) {
							var kidsAge =document.getElementById("bookingKids"+zimmer+i).selectedIndex;
							if (kidsAge>0){
								turl = turl + "&kid" + i + "=" + eval(kidsAge-1);
								c++;
							}
						}
						if(c==kidNo){
							url=url+ "&kidNo=" + kidNo+ turl;
						}
					}
				}
				if(timestamp(dateFrom)>timestamp(dateTo)){
					alert(document.getElementById("lngDatum").innerHTML);
					restoreField(zimmer);//Zurücksetzen
				} else{
					//alert("Abgeschickt");
					anfrage[zimmer].open("GET", url, true);
					anfrage[zimmer].onreadystatechange =updateRate;
					anfrage[zimmer].send(null);
				}
			} else{
				restoreField(zimmer);
			}
		}
		changeBooking("");
		//restoreSend();
	}
}

function updateRate() {
	var zimmerform= getZimmerform();
	document.getElementById("result").style.display="none";
	for(var i=1;i<=zimmerform;i++){
		if (anfrage[i].readyState == 4) {
			var zimmer=i;
			if (anfrage[zimmer].status == 200&&anfrage[zimmer].responseXML!=null) {
				//alert("127 Zimmer "+zimmer+"fertig\n"+anfrage[zimmer].responseText);//Anzeige XML- Daten
				if(!document.getElementById("bookingRoomNo") || document.getElementById("bookingRoomNo").value!=""){
					setField(anfrage[zimmer].responseXML, zimmer);
				}
				anfrage[zimmer]=getAnfrageObject();//reset readystate-> neue Anfrage möglich
			}
		} else{
			//Hier Warte
			if(anfrage[i].readyState!=0){//nur wenn anfrage losgeschickt wurde
				document.getElementById("result"+i).innerHTML="<div style='height:100px; background-color:#FFD000; text-align:left;padding:5px;'><img src='ajax/sanduhr.gif'/><h1>"+document.getElementById("bittewarten").innerHTML+"</h1></div>";
			}
		}
	}
}

function setField(xmltree, gzimmer){
	if(document.getElementById("bookingKidNo"+gzimmer)){
		if(document.getElementById("bookingKidNo"+gzimmer).selectedIndex!=0){
			var test=false;
			for(var i=1; i<=document.getElementById("bookingKidNo"+gzimmer).selectedIndex; i++){
				if(document.getElementById("bookingKids"+gzimmer+i).selectedIndex==0){
					test=true;
				}
			}
			if(test == false){
				document.getElementById("result").style.display="";//fertig geladen;
			}
		} else{
			document.getElementById("result").style.display="";
		}
	} else {
		document.getElementById("result").style.display="";
	}
	var contnode=document.getElementById("result");
	var text ="<div class='ajax'>";
	if (gzimmer == 1)
	{
		// Feststellen, ob Flugbuchung vorhanden #3966
		var isFlight = false;
		var oRates = xmltree.getElementsByTagName("optionalRates");
		if(oRates[0])
		{
			for(var i = 0; i < oRates[0].childNodes.length; i++)
			{
				if ((oRates[0].childNodes[i].nodeType != 3) && (oRates[0].childNodes[i].getElementsByTagName("flight")[0].firstChild))
				{
					isFlight = true;
				}
			}
		}
		// Falls ja, Flugbuchungszusatztext berücksichtigen 
		//if (isFlight == true)
		//{
		// gilt immer, Flugbuchungen sind aus System herausgenommen #3966
		text+= "<table id='ajaxFlugbuchung' class='ajax'>";
		text+="<tr><td colspan='2'>"+document.getElementById("lngFlugbuchung").innerHTML+"</td></tr>";
		text+="</table>";
		//}
	}
	//Frist Restzahlung hier
	if(xmltree.getElementsByTagName("restPaymentDate")[0]){
		text+= "<div id='restpaymentDate' style='display:none;'>"+xmltree.getElementsByTagName("restPaymentDate")[0].firstChild.data+"</div>";
	}
	text+= "<table id='ajax"+gzimmer+"' class='ajax'>";
	var errorMessage = xmltree.getElementsByTagName("errorMessage");
	if(errorMessage[0]){//Anzeige von BaseRate und AutoRate
		var i=0;
		while(errorMessage[i]){
			text+="<tr><td colspan='2'><b>"+errorMessage[i].firstChild.data+"</b></td></tr>";
			i++;
		}
		contnode.style.visibility="hidden";
		document.getElementById("totalsumme").style.display="none";
	} else {//keine Fehler
		if(document.getElementById("bookingAdultNo2")){//mehrere Zimmer
			text+="<th colspan='2'>"+xmltree.getElementsByTagName("occupancyName")[0].childNodes[0].data.replace(/\?br/g,'<br>')+" "+gzimmer+"</th>";//"
		} else {//einzelnes Zimmer
			text+="<tr><th colspan='2'>"+xmltree.getElementsByTagName("occupancyName")[0].childNodes[0].data.replace(/\?br/g,'<br>')+"</th></tr>";
		}
		contnode.style.visibility="visible";
		text+="<tr><td>"+document.getElementById("lngGrundpreis").innerHTML+":</td><td>"+euro(xmltree.getElementsByTagName("baseRate")[0].firstChild.data)+"</td></tr>";
		text+="<input type='hidden' name='oid"+gzimmer+"' value='"+xmltree.getElementsByTagName("oid")[0].firstChild.data+"'/>";//OID
		var autorate=xmltree.getElementsByTagName("autoRate");
		if(autorate[0]){//Aufschläge
			for(var i=0;i<autorate.length;i++){
				if(autorate[i].getElementsByTagName("name")[0].hasChildNodes()){
					text+="<tr><td>"+autorate[i].getElementsByTagName("name")[0].firstChild.data+" ";//type
				} else {
					text+="<tr><td>";//Wenn Name leer
				}
				if(autorate[i].getElementsByTagName("period")[0].hasChildNodes()){
					text+=autorate[i].getElementsByTagName("period")[0].firstChild.data+" ";//period
				}
				if(autorate[i].childNodes[1].hasChildNodes()){
					text+="<input type=\"hidden\" name=\"autorate["+gzimmer+"][]\" value=\""+autorate[i].childNodes[1].firstChild.data+"\"/>";//Id
				}
				if(autorate[i].getElementsByTagName("rate")[0].hasChildNodes()){
					text+="</td><td>"+euro(autorate[i].getElementsByTagName("rate")[0].firstChild.data)+"</td></tr>";//value
				} else {
					text+="</td></tr>";
				}
			}
		}
		var test= "<div id='gesamt2"+gzimmer+"' style='display:none;'>"+euro(xmltree.getElementsByTagName("totalRate")[0].firstChild.data)+"</div>";
		text+= test;
		//alert(test);
		//optionale Aufschläge
		var optionalRates=xmltree.getElementsByTagName("optionalRates");
		if(optionalRates[0]){
			text+=showOptionalRates(optionalRates[0], gzimmer);
		}
		text+="<tr><td class='ajax'>"+document.getElementById("lngEndpreis").innerHTML+":</td><td id='summe"+gzimmer+"' class='ajax'>"+document.getElementById("lngFehler").innerHTML+"!</td></tr>";
		//An- und Restzahlung
		if(xmltree.getElementsByTagName("restPayment")[0]){
			text+= "<tr id='anz"+gzimmer+"' style='display:none;'>";
			text+= 	"<td>"+document.getElementById("lngAnzahlung").innerHTML+"</td>";
			text+= 	"<td id='anzahlung2"+gzimmer+"' style=''>"+euro(xmltree.getElementsByTagName("firstPayment")[0].firstChild.data)+"</td></tr>";
			text+= "<tr id='rest"+gzimmer+"' style='display:none;'><td class='ajax2'>"+document.getElementById("lngRestzahlung").innerHTML+xmltree.getElementsByTagName("restPaymentDate")[0].firstChild.data+")</td>";
			text+= "<td class='ajax2' id='restzahlung2"+gzimmer+"' style=''>"+euro(xmltree.getElementsByTagName("restPayment")[0].firstChild.data)+"</td></tr>";
		}
	}
	text+="</table>";
	//Einbindung in Dokument
	if(errorMessage[0]){
		contnode.innerHTML=oldcont;
	} else{
		newbutton();
	}
	//alert(text);//Ausgabetext
	document.getElementById("result"+gzimmer).innerHTML=text;
	document.getElementById("result"+gzimmer).style.display="";
	if(document.getElementById("summe"+gzimmer)){
		changeBooking("");
	}
	totalsumme=0;
}

function restoreField(zimmer){//Array Inhalte im geänderten Feld zurücksetzen
	if(document.getElementById("result"+zimmer)) {
		document.getElementById("result"+zimmer).innerHTML="";
	}
}

function showOptionalRates(tree, gzimmer){//Optionale Aufschläge
	var text="";
	var j=0;//Feldzähler check für den namen
	for(var i=0;i<tree.childNodes.length;i++){
		if (tree.childNodes[i].nodeType!=3){//keine Textknoten
			text+= "<tr><td id='t1check"+gzimmer+i+"' title=''>";
			text+= "<input id='check"+gzimmer+i+"' type='checkbox' onclick='changeBooking(\""+gzimmer+i+"\")'";//Checkbox
			if(checks[""+gzimmer+i]==true){//Vergleich mit Array [zimmernr+checkboxindex][wert]
				text+=" checked='checked' ";
			}
//			if(tree.childNodes[i].getElementsByTagName("board")[0].firstChild &&
//				tree.childNodes[i].getElementsByTagName("board")[0].firstChild.data == 1){
//					
//			}
			//alt Tag soll auch bei Haustier erzeugt werden
			text+=" alt=\"board";
			if(tree.childNodes[i].getElementsByTagName("rateType")[0].firstChild &&
			tree.childNodes[i].getElementsByTagName("rateType")[0].firstChild.data >= 1){
				text+=""+tree.childNodes[i].getElementsByTagName("rateType")[0].firstChild.data;
			}
			text+="\"";
			//kennzeichen Verpflegungen board
			if(tree.childNodes[i].getElementsByTagName("board")[0].firstChild){
				text+=" title='board'";
			}
			//kennzeichen Flugreise flight #3966
			if(tree.childNodes[i].getElementsByTagName("flight")[0].firstChild){
				text+=" title='flight'";
			}
			
			if(tree.childNodes[i].childNodes[index].length!=0){
				text+=" name='bookingPost[rooms]["+gzimmer+"][optionalRate]["+j+"]' value='"+tree.childNodes[i].childNodes[index].childNodes[0].nodeValue+"' />";
			}
			j++;
			if(tree.childNodes[i].getElementsByTagName("name")[0].childNodes.length!=0){
				text+=tree.childNodes[i].getElementsByTagName("name")[0].firstChild.data;//Name
			}
			if(tree.childNodes[i].getElementsByTagName("period")[0].childNodes.length!=0){
				text+=tree.childNodes[i].getElementsByTagName("period")[0].firstChild.data;//Periode
			}
			if(tree.childNodes[i].getElementsByTagName("rate")[0].childNodes.length!=0){
				text+="</td><td id='t2check"+gzimmer+i+"' title=''>"+euro(tree.childNodes[i].getElementsByTagName("rate")[0].firstChild.data)+"</td>";//Betrag
			} else {
				text+="</td><td id='t2check"+gzimmer+i+"' title=''><td>";
			}
			text+="<td></td></tr>";//Dummyzellen (werden benötigt zur Identifizierung!)
		}
	}
	return text;
}

function changeBooking(element){//rechnet Optionalrates, element= ID aufrufendes Element
	var temp;
	var zimmerform= getZimmerform();
	//check- Status von Rates einer Gruppe wird zusammengefasst
	if(element!="") {//wenn sich etwas geändert hat
		var pattern = /board(\d+)/;
		var result = pattern.exec(document.getElementById("check"+element).alt);
		if (result != null){//checkbox hat alt= boardX
			var checkingState= document.getElementById("check"+element).checked;//true oder false, Ursprungselement
			var i=index;// startwert aus Browserweiche
			var zimmer= element.substring(0,1);//roomNo aus Element
			while(document.getElementById("check"+zimmer+i)){//alle Elemente durchgehen
				//pattern wird noch mal neu definiert
				var pattern = /board(\d+)/;
				var splitter = pattern.exec(document.getElementById("check"+zimmer+i).alt);//suche nach board
				//splitter ist verpflegungstyp (rateTypeID)
				if(splitter != null && result[1] >= 1 &&
					zimmer+i!=element && result[1] == splitter[1]){//wenn splitter identisch, id aber nicht
					//ist ursprungelement check false, dann alle anderen auch checked false, wenn true auch true
					document.getElementById("check"+zimmer+i).checked= checkingState;
				}
				if(
					(splitter != null && result[1] >= 1) &&
					(zimmer + i != element) &&
					(result[1] != splitter[1]) &&
					((document.getElementById("check"+zimmer+i).title == "board" &&
					document.getElementById("check"+element).title == "board") ||
					(document.getElementById("check"+zimmer+i).title == "flight" &&
					document.getElementById("check"+element).title == "flight"))
					){
					//Elemente mit einer anderen RateTypeID deselektieren!
					document.getElementById("check"+zimmer+i).checked= false;
				}
				i= i+increment;
			}
		}
	}
	//alert(zimmerform);
	for(var i=1;i<=zimmerform;i++){//alle Zimmer
		//alert(i+': '+document.getElementById("gesamt2"+i));
		if(document.getElementById("ajax"+i)&& document.getElementById("gesamt2"+i)){
			var tree= document.getElementById("ajax"+i).firstChild;
			var summe= removeEuro(document.getElementById("gesamt2"+i).firstChild.nodeValue);
			//Anzahlung und Restzahlung aus hidden Fields
			if(document.getElementById("anzahlung2"+i)){
				var anzahlung= removeEuro(document.getElementById("anzahlung2"+i).firstChild.nodeValue);
				var restzahlung= removeEuro(document.getElementById("restzahlung2"+i).firstChild.nodeValue);
			}
			var checkindex= -1;
		
			for(var j=0;j<tree.childNodes.length;j++){
				if(tree.childNodes[j].childNodes.length==3){// Nur bei 3 Tabellenzellen pro Zeile
					checkindex= checkindex+increment;
					if(document.getElementById("check"+i+checkindex)){//neu
						if(document.getElementById("check"+i+checkindex).checked){
							if (checks["check"+i+checkindex]!=true){
								checks["check"+i+checkindex]= true;
							} else {
								checks["check"+i+checkindex]= false;
							}
							document.getElementById("t2check"+i+checkindex).style.color="black";//Betrag
							document.getElementById("t1check"+i+checkindex).style.color="black";//Name
							summe+=removeEuro(document.getElementById("t2check"+i+checkindex).firstChild.nodeValue);//Betrag Option
						} else{
							document.getElementById("t2check"+i+checkindex).style.color="gray";
							document.getElementById("t1check"+i+checkindex).style.color="gray";
						}
					}
				}
			}
			//alert(i+' \n'+document.getElementById("summe"+i));
			if(document.getElementById("summe"+i)){
				document.getElementById("summe"+i).firstChild.nodeValue=euro(summe);
				if(document.getElementById("bookingRoomNo").value== 1 && document.getElementById("anz1")){
					//An- und Restzahlung auch hier
					document.getElementById("anz1").style.display="";
					document.getElementById("rest1").style.display="";
				}
			}
			if(document.getElementById("result"+i).style.display==""){
				totalsumme+= summe;
				if(document.getElementById("anzahlung2"+i)){
					totalanzahlung+= anzahlung;
					totalrestzahlung+= restzahlung;
				}
			}
		}
		//Summe bei mehreren Zimmern
		if(document.getElementById("totalsumme")&&zimmerform>1){
			if(document.getElementById("bookingRoomNo").selectedIndex>1){
				showSumme();
			} else{//Summenelement unsichtbar
				document.getElementById("totalsumme").style.display="none";
			}
		}
	}
	totalsumme=0;
	totalanzahlung= 0;
	totalrestzahlung= 0;
}

function getPerson(){
	if(oldcont==""&&document.getElementById("result")){
		oldcont=document.getElementById("result").innerHTML;
	}
	var roomNo=document.selectForm.bookingRoomNo.selectedIndex;
	var zimmerform=document.getElementById("bookingRoomNo").childNodes.length-1;
	if(document.getElementById("result")&&roomNo==0&&oldcont!=""){//wiederherst. alter Button
		document.getElementById("result").innerHTML=oldcont;
		document.getElementById("result").className="mainextralight";
	}
	//Ausbl. aller Zimmerz.
	for(var i=1;i<zimmerform;i++){
		document.getElementById("room"+i).style.display="none";
		if(document.getElementById("result"+i)!=null){
			document.getElementById("result"+i).style.display="none";
		}
	}
	//Anz. ausgew. Zimmerz. id: roomNoX
	for(var i=1;i<=roomNo;i++) {
		document.getElementById("room"+i).style.display='';
		if(document.getElementById("result"+i)!=null){
			document.getElementById("result"+i).style.display='';
		}
	}
	//Buchungsform.- Button ausbl.
	restoreSend();
	if(document.getElementById("bookingKidNo1")){
		getAjaxAlter();
	}
	changeBooking("");
}

function getAjaxAlter() {
	if(document.getElementById("bookingRoomNo").length){
		var anzZimmer=document.getElementById("bookingRoomNo").length;
	} else {
		var anzZimmer=2;//läuft 1 mal
	}
	for(var zimmer=1;zimmer<anzZimmer;zimmer++){
		var kidNo = document.getElementById("bookingKidNo"+zimmer).selectedIndex;//Ausgew. Kinder
		var anzKid= document.getElementById("bookingKidNo"+zimmer).length;//Anz. möglicher Kinder
		if (kidNo > 0) {
			for(var i=0;i<kidNo;i++){//sichtbar
				if(document.getElementById("kids"+zimmer+"_"+(i+1)))
				document.getElementById("kids"+zimmer+"_"+(i+1)).style.display = '';
			}
		} else {// alle unsichtbar bei 0
			for(var i=1;i<anzKid;i++){
				if(document.getElementById("kids"+zimmer+"_"+i))
				document.getElementById("kids"+zimmer+"_"+i).style.display = 'none';
			}
		}
		//Überschüssige Elemente ausblenden
		for(var i = 1; i < anzKid; i++) {
			if(document.getElementById("kids"+zimmer+"_"+i)){
				if (i <= kidNo) {
					document.getElementById("kids"+zimmer+"_"+i).style.display = '';
				} else {
					document.getElementById("kids"+zimmer+"_"+i).style.display = 'none';
				}
			}
		}
	}
}

function checkAll(unitID){//muss bei mehreren Units in einer Buchung umgebaut werden
	if(document.getElementById("dateFrom2").value!=""&& document.getElementById("dateTo2").value!=""){
		checkDates(2);
		checkAvailability(unitID);
		setTimeout("",1000);
		if (proceed == true){
			if(document.getElementById("bookingRoomNo").childNodes.length!=0){
				var zimmerform=document.getElementById("bookingRoomNo").value;
			} else{
				var zimmerform=1;
			}
			for(var i=1; i<=zimmerform;i++){
				checkOccupancy(unitID,i);
			}
		} else{
			//alert("Ausführung angehalten");
		}
	} else {
		checkAvailability(unitID);
	}
}

function showSumme(){
	if(totalsumme!=0){
		var showsumme=document.getElementById("totalsumme");
		var text="<table class='ajax'><tr><th colspan='2'>"+document.getElementById("lngTotalsumme").innerHTML+": "+euro(totalsumme)+" Euro</th></tr>";
		if(document.getElementById("restpaymentDate")){
			//hier Anzeige An- und Restzahlung, übersetzen!!
			text+= "<tr><td>"+document.getElementById("lngAnzahlung").innerHTML+"</td><td>"+euro(totalanzahlung)+"</td></tr>";
			text+= "<tr><td class='ajax2'>"+document.getElementById("lngRestzahlung").innerHTML+document.getElementById("restpaymentDate").innerHTML+")</td>";
			text+= "<td class='ajax2'>"+euro(totalrestzahlung)+"</td></tr>";
		}
		text+= "</table>";
		showsumme.innerHTML= text;
		showsumme.style.display='';
	}
}

function newbutton(){
	var contnode=document.getElementById("result");
	var newbutton="<input id='orderNow' class='submit' type='submit' name='orderNow' value='"+document.getElementById("lngBuchungsformular").innerHTML+"' onclick='createCookie(1)'>";
	//verändern des action- attributs des formulars
	if (sprache=="de"){
		sprache="";
	}
	if(sprache!=""){
		sprache+="/";
	}
	//document.selectForm.action="/booking.php#booking";
	newbutton+="<div class='pricesmall'>*"+document.getElementById("lngRabatte").innerHTML+"</div></div>";
	if(oldcont==""){
		oldcont=contnode.innerHTML;
	}
	document.getElementById("parentrow").style.backgroundColor="#FFD000";
	contnode.innerHTML=newbutton;
	contnode.className="ajax";
}

function restoreSend(){
	var check=false;
	if(document.getElementById("bookingRoomNo")!=null){
		for(i=1;i<=document.getElementById("bookingRoomNo").value;i++){//Bei Fewo aus hidden
			//wenn irgendein ergebnis angezeigt wird kann man buchen
			if(document.getElementById("result"+i)){
				//alert("Zimmer"+i+" "+document.getElementById("result"+i).childNodes.length);
				if(document.getElementById("result"+i).style.display==""&&
					document.getElementById("result"+i).innerHTML!="") check=true;
			}
		}
	}
	if(oldcont!= "" && check== false){// einblenden
		if(document.getElementById("result")){
			document.getElementById("result").innerHTML="";//alt: oldcont;
			document.getElementById("result").className="mainextralight";
			document.getElementById("parentrow").style.backgroundColor="#EDF3FE";
		}
	}
}

function createCookie(force){
	//booking Cookie setzen
	if(weakCookie== true || force){//Cookie nur bei existierendem schwachen Cookie setzen oder wenn Zwang
		//1. Array aufbauen
		var booking= new Array();
		booking["dateFrom"]= dateToMySQL(document.getElementById("dateFrom2").value);
		booking["dateTo"]= dateToMySQL(document.getElementById("dateTo2").value);
		booking["rooms"]= new Array();
		var roomNo= null;
		if(document.getElementById("bookingRoomNo")){
			roomNo= document.getElementById("bookingRoomNo").value;
		} else {
			roomNo= 1;
		}
		//überprüfen, welche zimmer davon belegt, roomNo- array
		var tRoomArr= new Array();
		for (var i= 1; i<=roomNo; i++){//alle Zimmer
			if(
				document.getElementById("bookingAdultNo"+i).value!= "" ||
				(document.getElementById("bookingKidNo"+i) && document.getElementById("bookingKidNo"+i).value!= "")
			){// Zimmer belegt, schreibe in array
				tRoomArr.push(i);
			}
		}
		var kidsOrder= "";

		//div mit ursprünglicher Altersverteilung, schon serialisiert
		booking["realOcc"]= document.getElementById("realOcc").innerHTML;

		for (var i=0; i< tRoomArr.length; i++){//durchlauf array, i austauschen
			booking["rooms"][i+1]= new Array();
			booking["rooms"][i+1]["unitID"]=document.getElementById("unitID").value;
			booking["rooms"][i+1]["adult"]=document.getElementById("bookingAdultNo"+tRoomArr[i]).value;
			//Kinder, nur bei ageReduction
			var kidNo= null;
			if(document.getElementById("bookingKidNo"+tRoomArr[i])){
				kidNo= document.getElementById("bookingKidNo"+tRoomArr[i]).value;
			} else {
				kidNo= 0;
			}
			booking["rooms"][i+1]["kidsAge"]= new Array();
			for (var j= 1; j <= kidNo; j++){
				var tKidsAge= document.getElementById("bookingKids"+tRoomArr[i]+j).value;
				booking["rooms"][i+1]["kidsAge"][j]= tKidsAge;
				kidsOrder+= tKidsAge+",";
			}
			//optionalRates
			booking["rooms"][i+1]["optionalRate"]= new Array();
			var j= index;
			while(document.getElementById("check"+tRoomArr[i]+j)){//alle existierenden Checkboxen
				if(document.getElementById("check"+tRoomArr[i]+j).checked){//Wertzuweisung nur wenn ausgewählt
					booking["rooms"][i+1]["optionalRate"].push(document.getElementById("check"+tRoomArr[i]+j).value);
				}
				j+= increment;
			}
		}
		//aus dem rooms- Array kidsOrder String zusammenbauen
		kidsOrder= kidsOrder.substring(0,kidsOrder.length-1);
		booking["kidsOrder"]= kidsOrder;
		booking["weak"]= 1;
		booking["language"]= document.getElementById("language").value;
		booking["host"]= document.getElementById("host").value;
		//2. Array serialisieren
		var TextClass= new Serializer();
		var text= TextClass.serialize(booking);
		text=encodeURIComponent(text);
		//% durch %25 ersetzen um Kompatibilität zu erreichen
		text=text.replace(/%/g,"%25");
		//3. in Cookie schreiben
		var expires = new Date();
		var expTime = expires.getTime() + (30* 24* 60 * 60 * 1000);//30 Tage
		expires.setTime(expTime);
		document.cookie="booking="+text+"; expires=" + expires.toGMTString()+"; path=/;";
	}
}

function arrayToElement(element, pos){
	if (document.getElementById(element)){
		document.getElementById(element).value=keksarray[pos];
	}
}

function elementToArray(element, pos){
	//Element darf nicht leer sein
	if (document.getElementById(element)&& document.getElementById(element).value){
		keksarray[pos]=document.getElementById(element).value;
	}
}

function mouseLink(id){
	document.getElementById('ajaxlink'+id).href="#detail";
}

function unitDetail(clkunit){
	document.getElementById('bookingArea').style.display="";
	aktunit=document.getElementById("unitID").value;
	permclkunit=clkunit;
	//überprüfung, ob angeklickte unit ungleich aktuelle unit, nur dann ajax
	if(clkunit!=aktunit){
		checkAll(clkunit);//Buchungsformular wird aktualisiert
		redrawPricetable(clkunit);//Preistabelle wird aktualisiert
		var url= "/ajax/unitDetail.php?unitID="+clkunit;
		anfrage[20].open("GET", url, true);
		anfrage[20].onreadystatechange =displayUnit;
		anfrage[20].send(null);
	}
}

function displayUnit(){
	if (anfrage[20].readyState == 4) {
		if (anfrage[20].status == 200) {
			//drei Bereiche: Bilder, Text und weitere Units füllen
			var ausgabe=anfrage[20].responseText.split("ajaxdelimiter");
			anfrage[20]=getAnfrageObject();
			//Elemente füllen
			document.getElementById("textUnit").innerHTML=ausgabe[0];
			document.getElementById("picUnit").innerHTML=ausgabe[1];
			document.getElementById("furtherUnits").innerHTML= ausgabe[2];
			//Buchungsformular unitID ändern
			document.getElementById("unitID").value= permclkunit;
			//unitIDs der Zimmer ändern!!!
			var i=1;
			while(document.getElementById("roomUnitID"+i)){
				document.getElementById("roomUnitID"+i).value= permclkunit;
				i++;
			}
			//Überschrift Preisberechnung
			document.getElementById("priceUnitName").innerHTML= ausgabe[3];
			//Verpflegungsbereich
			document.getElementById("babybed").innerHTML= ausgabe[5];
			//Auswahlmenüs anpassen
			changeAdultSelect(ausgabe[4]);//maxPersons
			//zum Anker "prices springen, Browserweiche
			document.getElementById("textUnit").scrollIntoView(true);
		}
	} else{
		document.getElementById("textUnit").innerHTML="<div style='height:250px; background-color:#FFD000; text-align:center;'><img src='ajax/sanduhr.gif'/><h1>"+document.getElementById("bittewarten").innerHTML+"</h1></div>";
	}
}

function redrawPricetable(unitid){
	var url="/ajax/unitPricetable.php?unitID="+unitid;
	anfrage[19].open("GET", url, true);
	anfrage[19].onreadystatechange =displayPricetable;
	anfrage[19].send(null);
}

function displayPricetable(){
	if (anfrage[19].readyState == 4) {
		if (anfrage[19].status == 200) {
				ausgabe=anfrage[19].responseText;
				anfrage[19]=getAnfrageObject();//reset readystate-> neue Anfrage möglich
				if(document.getElementById("staticTable")){
					document.getElementById("staticTable").innerHTML="";
				}
				document.getElementById("pricetable").innerHTML=ausgabe;
		}
	} else{
		document.getElementById("pricetable").innerHTML="";
		//<div style='height:250px; background-color:#FFD000; text-align:center;'><img src='ajax/sanduhr.gif'/><h1>"+document.getElementById("bittewarten").innerHTML+"</h1></div>";//Ladestatusanzeige deaktiviert
	}
}

function changeTable(unitID, show){
	if(changeTableFired== false){//nur einmal gleichzeitig!
		var anz= 0;
		var zimmer= document.getElementById("bookingRoomNo").value;
		var alter= new Array();
		for(var i= 1;document.getElementById("bookingKidNo"+i);i++){
			if(document.getElementById("bookingKidNo"+i).value>anz){
				anz=document.getElementById("bookingKidNo"+i).value;
			}
			for(var j= 1;j<= zimmer;j++){
				if(
					document.getElementById("bookingKids"+i+j) &&
					document.getElementById("bookingKids"+i+j).value!= ""
				){
					alter.push(document.getElementById("bookingKids"+i+j).value);
				}
			}
		}
		if(show==2 && (!alter[0] || anz== 0)){//keine Kinder eingetragen show 1
			show= 1;
		}
		if(show== 2){//passend
			var url= "ajax/childpricetable.php?caption=1&show=2&anz="+anz+"&alter="+alter+"&unitID="+unitID+"&zimmer="+zimmer;
		} else { //alle
			if(show== 3){
				var url= "ajax/childpricetable.php?caption=1&show="+show+"&unitID="+unitID;
			} else {//kurz
				var url= "ajax/childpricetable.php?caption=0&show=1&unitID="+unitID;
			}
		}
		changeTableFired= true;
		anfrage[12].open("GET", url, true);
		anfrage[12].onreadystatechange= updateChildTable;
		anfrage[12].send(null);
	}
}

function updateChildTable(){
	if (anfrage[12].readyState == 4 && anfrage[12].status == 200 && anfrage[12].responseText!=null) {
		ausgabe= anfrage[12].responseText;
		anfrage[12]= getAnfrageObject();//reset readystate-> neue Anfrage möglich
		if(document.getElementById("tabletarget")){//childajaxtarget
			document.getElementById("tabletarget").innerHTML= ausgabe;
			document.getElementById("tabletarget").style.display= "";
		}
		resizeSiteHead();
		changeTableFired= false;
	}
}

function checkAvailability(unitID){
	var dateFrom= document.getElementById("dateFrom2").value;
	var dateTo= document.getElementById("dateTo2").value;
	var platformID= document.getElementById("platformID").value;
	if(dateFrom!="" && dateTo!=""){
		for (var i=1;i<7;i++){
			document.getElementById("result"+i).innerHTML="";
		}

		var url="ajax/checkAvailability.php?unitID="+unitID+"&dateFrom="+dateFrom+"&dateTo="+dateTo+"&platformID="+platformID;
		if(document.getElementById("checkUser")){
			url+= "&checkUser="+document.getElementById("checkUser").value;
		}
		if(document.getElementById("rebookOrder") && (document.getElementById("rebookOrder").value != "0")){
			url+= "&rebookOrder="+document.getElementById("rebookOrder").value;
		}
		anfrage[11].open("GET", url, false);//synchron ohne callback
		//anfrage[11].onreadystatechange= availabilityResult;
		anfrage[11].send(null);
		//alert("1"+anfrage[11].readyState);
		if(anfrage[11].responseText!=""){
			var ausgabe=anfrage[11].responseText;
			var ziel=document.getElementById("result");
			ziel.innerHTML=ausgabe;
			ziel.style.backgroundColor="#FFD000";
			ziel.style.padding="2px";
			ziel.style.fontWeight="bold";
			//Alle Zimmerinfos ausblenden
			if(document.getElementById("bookingRoomNo")!=null){
				var roomNo=document.getElementById("bookingRoomNo").childNodes.length-1;
			} else{
				var roomNo=1;
			}
			for (var i=1;i<roomNo;i++){
				document.getElementById("result"+i).style.display="none";
			}
			document.getElementById("totalsumme").style.display="none";
			proceed= false;
			available= false;
		} else{
			//Fehlerfenster leeren
			document.getElementById("result").innerHTML="";
			proceed= true;
			available= true;
		}
		anfrage[11]=getAnfrageObject();
	}
}

function changeAdultSelect(maxPers){
	//schränkt die ErwachsenenAuswahlListen auf mögliche Einträge ein
	//1. länge vergleichen (bei Gleichheit nichts), ansonsten anpassen
	//2. Anzahl- Selects anpassen (hinzufügen, entfernen)
	var oldLength= document.getElementById("bookingAdultNo1").length-1;
	//Auswahlzustand ermitteln
	
	if(oldLength < maxPers){//hinzufügen
		//über alle Zimmer, Erw. + Kinder
		extendSelect("bookingAdultNo", maxPers);
		if(document.getElementById("bookingKidNo1")){
			extendSelect("bookingKidNo", maxPers);
		}
	} else {
		if(oldLength > maxPers){//entfernen
			reduceSelect("bookingAdultNo", maxPers);
			if(document.getElementById("bookingKidNo1")){
				reduceSelect("bookingKidNo", maxPers);
			}
		}
	}
	//ursprünglicher Selektionszustand wiederherstellen, falls möglich, ansonsten nichts tun
	restoreSelectState(selected);
}

function extendSelect(typeTag, maxPers){
	//gibt es bookingRoomNo immer? Ferienwohnungen
	if (document.getElementById("bookingRoomNo").length){
		var roomNo= document.getElementById("bookingRoomNo").length;
	} else {
		var roomNo= 2;
	}
	for (var i= 1; i< roomNo; i++){
		for (
				var j= document.getElementById(typeTag+i).length;
				document.getElementById(typeTag+i).length<= maxPers;
				j++
			){
				var neu= new Option(j);
				neu.value= j;
				document.getElementById(typeTag+i)[j]= new Option(j,j);
		}
	}
}

function reduceSelect(typeTag, maxPers){
	if (document.getElementById("bookingRoomNo").length){
		var roomNo= document.getElementById("bookingRoomNo").length;
	} else {
		var roomNo= 2;//wg leerauswahl
	}
	for (var i= 1; i< roomNo; i++){
		var j= document.getElementById(typeTag+i).length-1;
		while (parseInt(document.getElementById(typeTag+i)[j].value) > maxPers){
				document.getElementById(typeTag+i)[j]= null;
				j--;
		}
	}
}

function getZimmerform (){//ermittelt Anz. der möglichen Zimmer
	if(document.getElementById("bookingRoomNo").getAttribute("type")!="hidden"){
		var zimmerform=document.getElementById("bookingRoomNo").childNodes.length-1;
	} else{
		var zimmerform=1;
	}
	return zimmerform;
}

function resizeSiteHead(){
	var tableWidth= document.getElementById("contentTable").offsetWidth;
	document.getElementById("headTable").width= tableWidth;
}

function checkDateValue(value){
	if(document.getElementById("orderNow")){
		var valueArray= value.split(".");
		if(valueArray.length!= 3 || valueArray[2]==""){
			document.getElementById("orderNow").style.display="none";
		} else {
			document.getElementById("orderNow").style.display="";
		}
	}
}

function getSelectState(){
	if (document.getElementById("bookingRoomNo")){
		var roomNo= document.selectForm.bookingRoomNo.selectedIndex;
	} else {
		var roomNo= 1;
	}
	var selected= new Array();
	for (var i= 1; i<=roomNo; i++){
		selected[i]= new Array();
		selected[i]["adult"]= document.getElementById("bookingAdultNo"+i).selectedIndex;
		var kidNo= document.getElementById("bookingKidNo"+i).selectedIndex;
		selected[i]["kids"]= new Array();
		for (var j= 1; j<=kidNo; j++){
			selected[i]["kids"][j]= document.getElementById("bookingKids"+i+j).selectedIndex;
		}
	}
	return selected;
}

function restoreSelectState(selected)
{
	if (document.getElementById("bookingRoomNo"))
	{
		var roomNo= document.selectForm.bookingRoomNo.selectedIndex;
	}
	else
	{
		var roomNo= 1;
	}

	for (var i= 1; i<=roomNo; i++)
	{
		if(selected[i]["adult"] && document.getElementById("bookingAdultNo"+i)[selected[i]["adult"]])
		{
			document.getElementById("bookingAdultNo"+i)[selected[i]["adult"]].selected= true;
		}
		var kidNo= document.getElementById("bookingKidNo"+i).selectedIndex;
		for (var j= 1; j<=kidNo; j++)
		{
			if(selected[i]["kids"][j] && document.getElementById("bookingKids"+i+j)[selected[i]["kids"][j]])
			{
				document.getElementById("bookingKids"+i+j)[selected[i]["kids"][j]].selected= true;
			}
		}
	}
}