//globale Variablen
var copy="";//showSleeproomNo
var height= 0;//showBox
var tempRefineHotel= "";
var tempAnnoyingBox= "";

//Onload- Funktionen
function checkOnload(){
	getAlter('kidNoS');
	checkAccomodation();
	buildRoomAdult();//AdultNo in Box
	buildRoomKids();
	getTbPerson();//Zimmer in Box
	buildRoomKidsAges();//Alter in Beschreibung
}

//Stammfeld- onchange Funktionen
function checkAccomodation(){
	checkState();
	checkBox();
	showSleeproomNo();
}

function checkNavbarAccomodation()
{
    checkAccomodation();
    if (document.getElementById("accomodation").value != 6)
    {
        setHotelDefaultStandard();
        setNoHotelValue(1);
    }
    else
    {
        setNoHotelValue(0);
    }
}

function checkAdultNo(){
	checkState();
	checkBox();
	buildRoomAdult();
}

function checkKidNo(){
	checkState();
	checkBox();
	getAlter('kidNoS');
	buildRoomKids();
	buildRoomKidsAges();
	checkAdultNo();
}

function checkFormDates(){
	//Evthdler inaktiv wg. Kal.!
	checkState();
	checkBox();
	checkDates(1);
}

//Wiederherstellungsfunktionen
function setHotelDefaultStandard()
{
	if (document.getElementById("standardSelect"))
	{
	    var standardSelectObject = document.getElementById("standardSelect");
	    for (var i = 0; i < standardSelectObject.options.length; i++)
	    {
	        if (standardSelectObject.options[i].value == "")
	        {
	            standardSelectObject.options[i].selected = true;
	        }
	    }
	}
}

function setNoHotelValue(noHotelVal)
{
    if (document.getElementsByName("noHotel"))
    {
        var noHotelObject = document.getElementsByName("noHotel");
        for (var i = 0; i < noHotelObject.length; i++)
        {
            if (noHotelObject[i].value == noHotelVal)
            {
                noHotelObject[i].checked = true;
            }
        }
    }
}

//Feldfunktionen
function showSleeproomNo(){
	var acc= document.getElementById("accomodation").value;
	if (document.getElementById("sleeproomSelect").innerHTML!=""){
		copy= document.getElementById("sleeproomSelect").innerHTML;
	}
	document.getElementById("sleeproomSelect").innerHTML= "";
	if(acc== 1 || acc== 2 || acc== 7){//Ferienwohnung, Ferienhaus oder Ferienanlage
		document.getElementById("sleeproomSelect").innerHTML= copy;
		document.getElementById("sleeproomNo").style.display= "";
	} else{
		document.getElementById("sleeproomNo").style.display= "none";
		document.getElementById("sleeproomSelect").innerHTML= "";
	}
}

function showBox(first, element, targetHeight){
	if(first== 1){
		height= 0;
	}
	if (height <= targetHeight ){
		document.getElementById(element).style.display= "";
	} else {
		document.getElementById(element).style.height="auto";
	}
}

function checkState(){
	var acc= document.getElementById("accomodation").value;
	var elementRefineHotel= document.getElementById("refineHotel");
	var elementAnnoyingBox= document.getElementById("annoyingBox");
	if(!(acc == "" || acc== "6")){
		//1. kopieren, aber nur wenn nicht "empty"
		if (elementRefineHotel.innerHTML != "empty")
		{
            tempRefineHotel= elementRefineHotel.innerHTML;
		}
		if (elementAnnoyingBox.innerHTML != "empty")
		{
            tempAnnoyingBox= elementAnnoyingBox.innerHTML;
		}
		//2. leeren
		elementRefineHotel.innerHTML= "empty";
		elementAnnoyingBox.innerHTML= "empty";
		//3. verstecken
		document.getElementById("refineHotel").style.display="none";
		document.getElementById("annoyingBox").style.display="none";
	} else {// anzeigen
		elementRefineHotel.innerHTML= tempRefineHotel;
		elementAnnoyingBox.innerHTML= tempAnnoyingBox;
	}
	
	if(checkStateTerms()&& acc== ""){
		showBox(1, "refineHotel", 150);
		checkBox();
	} else {
		// löschen
		document.getElementById("refineHotel").style.display="none";
	}
}

function checkStateTerms(){
	if(
//		document.getElementById("dateFrom").value!= "" &&
//		document.getElementById("dateTo").value!= "" &&
		document.getElementById("adultNo").value!= ""
	){
		return true;
	} else {
		return false;
	}
}

function checkBox(){
    var button= document.getElementById("simplesearchButton");
	if(document.simplesearch.noHotel && document.getElementById("tbRoomNo")){
		if(
			document.simplesearch.noHotel[0].checked &&
			checkStateTerms() &&
			document.getElementById("accomodation").value== ""
		){
			showBox(1, "annoyingBox",250);
			if(button && document.getElementById("tbRoomNo").selectedIndex== 0) button.disabled= true;
		} else {
			if(
				checkStateTerms() &&
				document.getElementById("accomodation").value== 6
			){
				showBox(1, "annoyingBox",250);
				if(button && document.getElementById("tbRoomNo").selectedIndex== 0){ 
					button.disabled= true;
				}
			} else {
				document.getElementById("annoyingBox").style.display="none";
				if(button) button.disabled= false;
			}
		}
	}
	else
	{
        if(button) button.disabled= false;
	}
}

function checkNavbarBox()
{
    checkBox();
    if (document.getElementById("accomodation").value != 6)
    {
        setHotelDefaultStandard();
    }
}

function getTbPerson(){
	if(document.getElementById("tbRoomNo")){
		var roomNo=document.getElementById("tbRoomNo").selectedIndex;//+1
		var zimmerform=document.getElementById("tbRoomNo").childNodes.length-1;
		var button= document.getElementById("simplesearchButton");
		
		for(var i=1;i<zimmerform;i++){
			document.getElementById("tbRoom"+i).style.display="none";
		}
		for(var i=1;i<=roomNo;i++) {
			document.getElementById("tbRoom"+i).style.display='';
		}
		if(button){
			if(roomNo>= 1){
				button.disabled= false;
			}else {
				button.disabled= true;
			}
		}
	}
}

function spreadPersons(){
	document.getElementById("zuviel").style.display="none";
	document.getElementById("richtig").style.display="none";
	document.getElementById("zuwenig").style.display="none";
	document.getElementById("hinweis").style.display="none";
	var room= document.getElementById("tbRoomNo").selectedIndex+1;
	var summeErw= 0;
	var summePers= 0;
	for (var i= 1;i<= room;i++){
		var aktErw= document.getElementById("tbAdultNo"+i).selectedIndex
		summeErw+= aktErw;
		summePers+= aktErw;
		var j= 1;
		while (document.getElementById("alter"+i+j)){
			if(document.getElementById("alter"+i+j).checked){
				summePers++;
			}
			j++;
		}
	}
	var soll= document.getElementById("adultNo").value;
	var dif= soll-summeErw;
	if(dif <0){
		document.getElementById("zuviel").style.display="";
	}
	if(dif == 0){
		document.getElementById("richtig").style.display="";
	}
	if(dif >0){
		document.getElementById("zuwenig").style.display="";
	}
	if(summePers >=3){
		document.getElementById("hinweis").style.display="";
	}
}

function buildRoomAdult(){
	if(document.getElementById("tbRoomNo")){
		var adultNo= document.getElementById("adultNo").value;
		var roomNo= document.getElementById("tbRoomNo").length;
		for (var i= 1; i< roomNo; i++){// raum 1 - max
			var roomAdultNo= document.getElementById("selAdult"+i).value;
			document.getElementById("tbAdultNo"+i)[0]= new Option("");//leer
			for (var j= 1; j<= adultNo; j++){
				if(j== roomAdultNo){//sel.
					document.getElementById("tbAdultNo"+i)[j]= new Option(j,j,true, true);
				} else {
					document.getElementById("tbAdultNo"+i)[j]= new Option(j,j, false, false);
				}
			}
		}
	}
}

function buildRoomKids(){
	if(document.getElementById("tbRoomNo")){
		var kidNo= document.getElementById("kidNoS").value;
		//einz. alter erm.-> extra funkt.!
		var roomNo= document.getElementById("tbRoomNo").length;
		for (var i= 1; i< roomNo; i++){
			var elem= document.getElementById("kidsboxes"+i);//alle Kindknoten löschen!
			while (elem.hasChildNodes()) {
				elem.removeChild(elem.lastChild);
			}
			var selKids=document.getElementById("selAlter"+i).value;//selAlter+Zimmernr
			for (var j= 1; j<= kidNo; j++){
				//checkbox erz.
				var box= document.createElement("Input");
				box.setAttribute("type", "checkbox");
				box.id="alter"+i+j;
				box.setAttribute("name", "alter"+i+"[]");
				box.setAttribute("value", document.getElementById("alterKind"+j).value);
				box.onclick= function (e){
					changeKid(e);
					spreadPersons();
				}
				elem.appendChild(box);
				//check erst nach append, damit es im IE funkt
				//indexOf suboptimal bei alter 1 und 11
				var selKidsAr= selKids.split(",");
				if(arraySearch(document.getElementById("alterKind"+j).value, selKidsAr)){
					//Wenn akt Alter in selKids, dann checked
					document.getElementById("alter"+i+j).checked= true;
				}
				var textdiv=document.createElement("div"); 
				textdiv.setAttribute("id", "text"+i+j);
				elem.appendChild(textdiv);
				var linebr= document.createElement("br");
				elem.appendChild(linebr);
			}
		}
	}
}

function buildRoomKidsAges(){
	if(document.getElementById("tbRoomNo")){
		var roomNo= document.getElementById("tbRoomNo").length;
		var kidNo= document.getElementById("kidNoS").value;
		for (var i= 1; i< roomNo; i++){// raum 1 - max
			for (var j= 1; j<= kidNo; j++){
				var elem= document.getElementById("text"+i+j);
				while (elem.hasChildNodes()) {
					elem.removeChild(elem.lastChild);
				}
				var alter= document.getElementById("alterKind"+j).value;//Schema: alterKind3
				var text= document.createTextNode(document.getElementById("trnKid").innerHTML+" "+alter+" "+document.getElementById("trnYear").innerHTML); //Kind XXX Jahre
				elem.appendChild(text);
				//title ans Formularfeld anhängen
				document.getElementById("alter"+i+j).setAttribute("title",alter);
			}
		}
	}
}

function changeKid(id){
	id = (id) ? id : ((window.event) ? window.event : "");//Browserweiche!!!
	var elem = (id.target) ? id.target : id.srcElement;
	id= elem.id.substr(5,elem.id.length);
	//id umwandeln
	if(document.getElementById("alter"+id).checked){
		var i=1;//zimmer
		var idstring= new String(id);
		var j=idstring.substring(1,2);//x. kind
		while(document.getElementById("alter"+i+j)){
			if(i+j!= id){
				document.getElementById("alter"+i+j).checked=false;
			}
			i++;
		}
	}
}

function fieldEval(){
	//bookingCookie auslesen, rooms- Bereich durch folgenden Teil ersetzen
	//noch überprüfen, wann dieses ausgeführt werden soll!!
	var text=holeCookie("booking");
	text=decodeURIComponent(text);
	var TextClass= new Serializer();
	var bookingCookie=TextClass.unserialize(text);//hier vohandene Werte
	//neue Raumbelegung wird ermittelt
	var rooms= new Array();
	//1. Raumanzahl ermitteln
	if(document.getElementById("tbRoomNo")){
		var roomNo= document.getElementById("tbRoomNo").selectedIndex;
	} else {
		var roomNo= 0;
	}
	for (var i=1; i<= roomNo; i++){
		//2. zugehörige Erwachsenenzahl ermitteln
		rooms[i] = new Array();
		rooms[i]["adult"]=document.getElementById("tbAdultNo"+i).selectedIndex;
		// 3. Anzahl Kinder im Zimmer ermitteln
		rooms[i]["kidsAge"] = new Array();
		var k=1;//Reihenfolge der Kinder
		if(document.getElementById("tbKidNo"+i)){// n.e.
			var kidNo=document.getElementById("tbKidNo"+i).selectedIndex;
			for (var j=1; j<=kidNo; j++){
				rooms[i]["kidsAge"][j]=document.getElementById("tbKids"+i+j).selectedIndex;
			}
		} else {//mit Vorbelegung
			if(document.getElementById("kidNoS")){
				var totalKidNo= document.getElementById("kidNoS").value;
				for(var j=1;j<=totalKidNo;j++){
					if(document.getElementById("alter"+i+j).checked){
						rooms[i]["kidsAge"][k]=document.getElementById("alter"+i+j).getAttribute("title");
						k++;
					}
				}
			}
		}
	}
	//kidsOrder für Menüleiste anlegen
	if(document.getElementById("new")){
		var kidsOrder="";
		for (var i=1; i<= roomNo; i++){
			for (var j=1; j<=kidNo; j++){
				kidsOrder+=rooms[i]["kidsAge"][j]+",";
			}
		}
		//letztes "," entfernen
		if(kidsOrder.length>=2)
		kidsOrder= kidsOrder.substring(0,kidsOrder.length-1);
		bookingCookie["kidsOrder"]=kidsOrder;
	}
	//raumbelegung in Cookie Array ersetzen
	bookingCookie["rooms"]=rooms;
	//spreaded auf 1 setzen=>PopUp wird nicht mehr angez.
	bookingCookie["spreaded"]=1;
	//bookingCookie neu setzen
	var text= TextClass.serialize(bookingCookie);
	text=encodeURIComponent(text);
	//% durch %25 ersetzen um Kompatibilität zu erreichen
	text=text.replace(/%/g,"%25");
	document.cookie="booking="+text+"; path=/";
}

function holeCookie(name){
	name+= "=";
	var laenge= name.length;
	var cookie_laenge= document.cookie.length;
	var i= 0;
	while(i<cookie_laenge){
		var j= i + laenge;
		if(document.cookie.substring(i,j) == name){
			return holeCookieWert(j);
		}
		i= document.cookie.indexOf(" ",i)+ 1;
		if(i == 0){
			break;
		}
	}
	return null;
}

function holeCookieWert(position){
	var ende= document.cookie.indexOf(";", position);
	if(ende == -1){
		ende= document.cookie.length;
	}
	return decodeURIComponent(document.cookie.substring(position, ende));
}

function getRoomsFromCookie(){
	var text= holeCookie("booking");
	text= decodeURIComponent(text);
	var TextClass= new Serializer();
	var bookingCookie= TextClass.unserialize(text);//hier vorhandene Werte
	var i= 1;
	while (bookingCookie["rooms"][i]){
		alert(bookingCookie["rooms"][i]["adult"]);
		i++;
	}
}

function arraySearch(nadel, heuhaufen){
	var gefunden= false;
	for (var i= 0; i<= heuhaufen.length; i++){
		if(heuhaufen[i]== nadel) gefunden= true;
	}
	return gefunden;
}

function checkParents() {
	if(document.getElementById("tbRoomNo")){
		var roomNo= document.getElementById("tbRoomNo").selectedIndex;
		var accomodation= document.getElementById("accomodation").value;
		var message= document.getElementById("alertMessage").innerHTML;
		var messArr= message.split("%split%");
		for (var i=1; i<= roomNo; i++){
			var adultNo = document.getElementById("tbAdultNo"+i).selectedIndex;
			if (adultNo < 1 && accomodation == 6 && roomNo >1) {
				alert(messArr[0]+":\n"+messArr[1]+".\n"+messArr[2]+".");
				break;//nur einmal
			}
		}
	}
}
