var loadstatustext="<div align=\"center\"><img src=\"http://www.belchenland.de/de/unterkunft/clips/loading.gif\" /> Bitte warten...</div><br /><br /><br /><br />";
var loadedobjects="";

function ajax_checkbrowser ()  {
	// Check 1: allgemeine Ajax-Tauglichkeit
	var page_request = false;
	if (window.XMLHttpRequest)   {	// if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	}  else if (window.ActiveXObject)  { 	// if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)  {
			try {
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}  catch (e)  {
				return false;
			}
		}
	}  else  {
		return false;
	}
	// Check 2: Suchen ob es die Funktion document.getElementById gibt
	if (typeof(document.getElementById) == 'undefined')  {
		return false;
	}
	return true;
}


// Einen neuen Suchen-Block laden
function load_search(url, containerid, myparams)  {
	var page_request = false
	if (window.XMLHttpRequest)   {	// if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	}  else if (window.ActiveXObject)  { 	// if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)  {
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}  catch (e)  {
			}
		}
	}  else  {
		return false;
	}
	
	document.getElementById(containerid).innerHTML=loadstatustext;
	
	// Wenn die Antwort auf unseren Request da ist, die Funktion loadpage() aufrufen
		page_request.onreadystatechange=function(){
			loadpage(page_request, containerid);
		}

	// Parameter basteln
		addparameters=(url.indexOf("?")!=-1)? "&" : "?";
		addparameters = addparameters + myparams;
	
	// Wegen der Sicherheitseinschränkung
		url=url.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/");
	
	page_request.open('GET', url+addparameters, true);
	page_request.send(null);
}

// Nach der Serverantwort das hier machen....
function loadpage(page_request, containerid)  {
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))  {
		document.getElementById(containerid).innerHTML=page_request.responseText;
	}
}

// Javascripts und Stylesheet-Dateien extra laden (wegen Bugs)
function loadobjs(revattribute)  {
	if (revattribute!=null && revattribute!="")  { 
		// Alle übergebenen Extra-Dateien einzeln aufsplitten (kommagetrennt)
			var objectlist=revattribute.split(/\s*,\s*/);
		
		for (var i=0; i<objectlist.length; i++){
			var file=objectlist[i];
			var fileref="";
			
			//Check to see if this object has not already been added to page before proceeding
			if (loadedobjects.indexOf(file)==-1){ 
				if (file.indexOf(".js")!=-1){ 	//If object is a js file
					fileref=document.createElement('script');
					fileref.setAttribute("type","text/javascript");
					fileref.setAttribute("src", file);
				}  else if (file.indexOf(".css")!=-1){ 	//If object is a css file
					fileref=document.createElement("link");
					fileref.setAttribute("rel", "stylesheet");
					fileref.setAttribute("type", "text/css");
					fileref.setAttribute("href", file);
				}
			}
			if (fileref != "")  {
				document.getElementsByTagName("head").item(0).appendChild(fileref);
				loadedobjects+=file+" "; 	//Remember this object as being already added to page
			}
		}
	}
}

// Die Ansicht wechseln
function switch_to (searchtype)  {
	if (!ajax_checkbrowser ())  {
		return true;
	}

	var f = self.document.forms.suche;
	var lang;
	if(f.lang.value == "en") {
		lang = "en";
	}else if(f.lang.value == "fr") {
		lang = "fr";
	}else{
		lang = "de";
	 }
	
	var allparams = 'lang='+lang+'&aj=1';
	// Startdatum (Wochentag)
		allparams += "&datum_von_dow=" + escape(f.datum_von_dow.value);
	// Startdatum
		allparams += "&ajvon=" + escape(f.vonDatum.value);
	// Startdatum Unschärfe
		var index = f.unscharfvonDatum.selectedIndex;
		allparams += "&ajvonun=" + f.unscharfvonDatum.options[index].value;
	// Enddatum (Wochentag)
		allparams += "&datum_bis_dow=" + escape(f.datum_bis_dow.value);
	// Enddatum
		allparams += "&ajbis=" + escape(f.bisDatum.value);
	// Enddatum Unschärfe
		var index = f.unscharfbisDatum.selectedIndex;
		allparams += "&ajbisun=" + f.unscharfbisDatum.options[index].value;
	// Suchtypus
		if (f.searchtype[0].checked)  {
			allparams += "&ajsearchtype=0";
		}  else  {
			allparams += "&ajsearchtype=1";
		}
	// ...für wieviele Tage
		var index = f.freetime.selectedIndex;
		allparams += "&ajfreetime=" + f.freetime.options[index].value;
	
	// Ort
		var index = f.ortsteilshow.selectedIndex;
		allparams += "&ajortsteilshow=" + f.ortsteilshow.options[index].value;
	
	// Schnäppchen
		if (f.onlyschnaeppchen.checked)  {
			allparams += "&ajonlyschnaeppchen=1";
		}  else  {
			allparams += "&ajonlyschnaeppchen=0";
		}
	
	// Betriebsmerkmale
		var index = f.betriebsmerkmal.selectedIndex;
		allparams += "&ajbetriebsmerkmal=" + f.betriebsmerkmal.options[index].value;
	
	// Zimmer/ Fewomerkmale
		if (f.fewomerkmal)  {
			var index = f.fewomerkmal.selectedIndex;
			allparams += "&ajfewozimmermerkmal=" + f.fewomerkmal.options[index].value;
		}  else if (f.zimmermerkmal)  {
			var index = f.zimmermerkmal.selectedIndex;
			allparams += "&ajfewozimmermerkmal=" + f.zimmermerkmal.options[index].value;
		}
	
	// Hausmerkmale
		if (typeof(document.getElementsByName) != 'undefined')  {
			var dest = document.getElementsByName ('hausmerkmal[]');
			for (var m=0; m<dest[0].length; m++)  {
				if (dest[0].options[m].selected)  {
					allparams += "&ajhausmerkmal[]=" + dest[0].options[m].value;
				}
			}
		}
	
	// Suchreihenfolge
		if (typeof(document.getElementsByName) != 'undefined')  {
			var dest = document.getElementsByName ('sortierung[]');
			var index = dest[0].selectedIndex;
			allparams += "&ajsort1=" + dest[0].options[index].value;
			var index = dest[1].selectedIndex;
			allparams += "&ajsort2=" + dest[1].options[index].value;
		}

	if (searchtype == 'zimmer')  {
		load_search('http://www.belchenland.de/'+lang+'/unterkunft/ajaxsearch.php?betriebssuchart=zimmer', 'containy', allparams);
		loadobjs("http://www.belchenland.de/css/standard2.css");
		return false;
	}  else   {
		load_search('http://www.belchenland.de/'+lang+'/unterkunft/ajaxsearch.php?betriebssuchart=fewo', 'containy', allparams);
		loadobjs("http://www.belchenland.de/css/standard2.css");
		return false;
	}
}

function getDayOfWeek (field1, fieldsource)  {
	eval ("var  date  = self.document.forms.suche."+fieldsource+".value;");
	eval ("var  dest  = self.document.forms.suche."+field1+";");

	var maxDays = new Array();
	maxDays[0]=0;
	maxDays[1]=31;
	maxDays[2]=29;
	maxDays[3]=31;
	maxDays[4]=30;
	maxDays[5]=31;
	maxDays[6]=30;
	maxDays[7]=31;
	maxDays[8]=31;
	maxDays[9]=30;
	maxDays[10]=31;
	maxDays[11]=30;
	maxDays[12]=31;

	var temp = date;
	var firstpoint = temp.indexOf(".", 0);
	var secpoint = temp.indexOf(".", firstpoint + 1);
	var thirdpoint = temp.indexOf(".", secpoint + 1);

	if ((!containsOnlyDateDigits (temp, "de", "numeric")) || 
	   (temp.length > 10) || (temp.length < 8) || 
	   ((firstpoint != 2) && (firstpoint != 1)) || 
	   ((secpoint != (firstpoint+2)) && (secpoint != (firstpoint+3))) || 
	   (thirdpoint != -1))  {
	   	dest.value = '';
	   	return false;
	 }

	var tag;
	var monat;
	var jahr;
	var jahrhundert;
	var jahr_im_jahrhundert;

	tag = temp.substring(0,firstpoint);
	while (tag.charAt(0)=='0')  {
		tag=tag.substring (1,tag.length)
	}
	if (tag.length == 0)  {
		dest.value = '';
		return false;
	}
	tag = parseInt (tag);
	monat = temp.substring(firstpoint+1,secpoint);
	while (monat.charAt(0)=='0')  {
		monat=monat.substring (1,monat.length)
	}
	if (monat.length == 0)  {
		dest.value = '';
		return false;
	}
	monat = parseInt (monat);
	
	jahr = temp.substring(secpoint+1,temp.length);
	jahr = parseInt (jahr);
	
	jahrhundert = Math.floor (jahr / 100);
	jahr_im_jahrhundert = jahr % 100;
	
	
	if ((tag<1) || (tag>31) || (monat<1) || (monat>12) || (jahr<0) || (maxDays[monat] < tag))  {
		dest.value = '';
		return false;
	}
	if (jahr < 1000)  {
		dest.value = '';
		return false;
	}
	
	// Sonderregeln
	if (monat == 1)  {
		monat = 13;
	}
	if (monat == 2)  {
		monat = 14;
	}
	if (monat == 13 || monat == 14)  {
		jahr_im_jahrhundert--;
	}
	
	var dayofweek = (
		tag + 
		Math.floor((monat+1)*26/10) + 
		jahr_im_jahrhundert + 
		Math.floor(jahr_im_jahrhundert / 4) + 
		Math.floor(jahrhundert/4) - 
		(2*jahrhundert)
	) % 7;
	
	dayofweek = parseInt (dayofweek);
	if (dayofweek < 0)  {
		dayofweek += 7;
	}
	
	var days = new Array();
	days[0]='Sa';
	days[1]='So';
	days[2]='Mo';
	days[3]='Di';
	days[4]='Mi';
	days[5]='Do';
	days[6]='Fr';

	dest.value = days[dayofweek];

	return true;
}
