function tbWriteEml(s1, s2, sCaption){
	document.write("<a href='m" + "ailt" + "o:" + s1 + "&" + "#" + "6" + "4" + ";" + s2+ "'>")
	if (sCaption == '')
		document.write(s1 + "&" + "#" + "6" + "4" + ";" + s2);
	else
		document.write(sCaption);
	document.write("</a>");}

function SendForm(frm){
	var obj = frm
	if (CheckFieldsfromDB(obj))
		obj.submit();}
		
function writeInner(sLayer, sInhalt){
	if (sLayer+"" != ""){
		if (document.getElementById) {
			document.getElementById(sLayer).innerHTML = sInhalt;
		} else { //für safaribrowser
			 document.layers[sLayer].document.open();
			 document.layers[sLayer].document.write(sInhalt);
			 document.layers[sLayer].document.close();
		}
	}
}

function setOpacity(sLayer, iWertIE, iWertOther){
	if (sLayer+"" != ""){
		document.getElementById(sLayer).style.filter = "alpha(opacity="+ iWertIE +")";
		document.getElementById(sLayer).style.MozOpacity = iWertOther;
		document.getElementById(sLayer).style.opacity = iWertOther;
	}	
}

function urlencode (str) {
 var code = "";
 for (var i = 0; i < str.length; i++) {
  if (str.charAt(i) == " ") {
   code += "+";
  } else if (str.charAt(i) == "+") {
   code += "%2B";
  } else if (str.charCodeAt(i) > 127) {
   code += encodeURI(str.charAt(i));
  } else {
   code += escape(str.charAt(i));
  }
 }
 return code;
}

function changeLoc(sLoc){
	if (sLoc + '' != '')
		window.location.href = sLoc;	
}

// Wechselt den Wert aus
// el => der aktuelle Listeneintrag
// sFieldname => ID des Hiddenfields
// bKeepDefaultValue => der Anfangstext ( 'bitte waehlne' etc. soll in der Liste auswaehlbar bleiben um den Wert zu nullen 
// !! kein Wert darf 0 oder leer sein ausser der Standardwert
function select_changeValue(el,sFieldName,bKeepDefaultValue){	
	//alert(el.parentNode.id + " - " + el.parentNode.value);
	// Aktueller Wert im Hiddenfield auslesen
	var aktValueHiddenField = $("#" + sFieldName).val();
	// Wert des li, das der User ausgewaehlt hat
	var elValue = el.parentNode.value.toString();	
	if (elValue == 0)
		elValue = "";
	// Wert im hiddenfeld speichern		
	$("#" + sFieldName).val(elValue);
	// Wert in der Liste aendern
		// Element des Headers der Liste
		var elSelected = el.parentNode.parentNode.parentNode.getElementsByTagName("h2")[0].getElementsByTagName("a")[0];
		var tmp = elSelected.innerHTML;
		// Wert im Header aendern
		elSelected.innerHTML = el.parentNode.getElementsByTagName("a")[0].innerHTML;			
		// War der vorherige Wert der Defaultwert ?
		if (aktValueHiddenField == "" || aktValueHiddenField == "0"){					
			// Soll der Standardwert erhalten bleiben ? dann oben einfuegen
			if (bKeepDefaultValue){					
				// li und a erzeugen und oben einhaengen in der Liste
				var elDefaultLi = document.createElement("li");
				elDefaultLi.setAttribute("value","");
				var elDefaultA = document.createElement("a");
				// Link im li
				elDefaultA.innerHTML = tmp;
				elDefaultA.setAttribute("href","javascript:void(0)");
				elDefaultA.setAttribute("title",tmp);
				elDefaultA.setAttribute("onclick","select_changeValue(this,'" + sFieldName + "'," + bKeepDefaultValue + ")");
				elDefaultLi.appendChild(elDefaultA);
				el.parentNode.parentNode.insertBefore(elDefaultLi,el.parentNode.parentNode.firstChild);
				
			}		
			// Knoten entfernen aus der Liste
			el.parentNode.parentNode.removeChild(el.parentNode);		
		}else{
			// Tauschen des Wertes
			el.parentNode.getElementsByTagName("a")[0].innerHTML = tmp;
			el.parentNode.getElementsByTagName("a")[0].title = tmp;
			el.parentNode.value = elSelected.getAttribute("rel"); /// value des li
		}
		// Wert speichern im rel
		elSelected.setAttribute("rel",elValue);
}

// Initalisiert die Select Boxen, die mit CSs Listen erstellt wurden
// Die Werte, die mit 'selected='selected' gekennzeichnet werden, werden uebernommen
function initializeCssSelectBoxen(){
	// alle Divs durchlaufen
	for (var i=0;i<document.getElementsByTagName("ul").length;i++){
		var el = document.getElementsByTagName("ul")[i];
		if (el.className.substring(0,6) == "select"){
			// alle li durchlaufen
			for (var x=0;x<el.getElementsByTagName("li").length;x++){
				var elLi = el.getElementsByTagName("li")[x];
				if (elLi.getAttribute("selected") == "selected"){
					var instruction = elLi.getElementsByTagName("a")[0].getAttribute("onclick");
					var arInstructions = instruction.split(",");					
					arInstructions[1] = arInstructions[1].replace("'","");
					arInstructions[1] = arInstructions[1].replace("'","");
					arInstructions[2] = arInstructions[2].substring(0,arInstructions[2].length-1); // letztes ) entfernen
					select_changeValue(elLi.getElementsByTagName("a")[0],arInstructions[1],arInstructions[2]);					
				}				
			}
		}
	}	
}
// CaptchaCode neu laden
// elIDName: ID des Bildes
// sCaptchaFile: Dateiname des Captchabildes
function newCaptcha(elIDName,sCaptchaFile) {
	var capchaImg = new Image();
	var d = new Date();
	capchaImg.src = '/all/' + sCaptchaFile + '?cachekiller=' + d.getTime();
	document.getElementById(elIDName).src = capchaImg.src;
}

/* kontrolliert die Formularfelder
 Das Objekt kann so aussehen:
	 field: ID des Feldes
	 errMsg: Fehlermeldung
	 special:
			- email
			- captcha
	defaultVal: Defaultwert, der schn drinnensteht
	var arPflichtfelder = [
		{
			field:'bewertung_vorname',
			errMsg:'<%=tbtText(228,2)%>',
			special: ''
		},
				{
			field:'bewertung_email',
			errMsg:'<%=tbtText(232,2)%>',
			special: 'email'
		},		
		{
			field:'bewertung_captcha',
			errMsg:'<%=tbtText(228,2)%>',
			special: 'captcha'
		},
		{
			field:'bewertung_privacy',
			errMsg:'<%=tbtText(233,2)%>',
			special: ''
		}		
	];*/
function checkFormFields(ar){
	var bErr = false;
	// Array durchlaufen und Felder kontrollieren
	for (var i=0;i<ar.length;i++){
		var obj = ar[i];
		var sFieldId = obj.field;
		var sErrMsg = obj.errMsg;
		var sSpecial = obj.special;
		var sDefaultValue = obj.defaultVal;
		var el = document.getElementById(sFieldId);
		
		// Wert ermitteln		
		var val = "";
		
		switch(el.type){
			case "checkbox":
				val = el.checked;
				break;			
			default:
				val = el.value;
		}
		
		// Pruefen
		
		switch(el.type){
			case "checkbox":
				if (!val){
					if (!bErr){
						alert(sErrMsg);		
						bErr = true;						
					}
				}
				break;
			case "hidden": // wie Text nur ohne focus
				if (val.length == 0){
					if (!bErr){
						alert(sErrMsg);						
						bErr = true;						
					}
				}
				break;
			default:
				// Unterscheidung anch Spezialtypen
				switch(sSpecial){
					case "email":
						if (!CheckEmailObbl(val) ||  val == sDefaultValue){
							if (!bErr){
								alert(sErrMsg);
								el.focus();
								bErr = true;
							}
						}
						break;
					case "captcha":						
						if (val.length != 5 || isNaN(val) || val == sDefaultValue){							
							if (!bErr){									
								alert(sErrMsg);
								el.focus();
								bErr = true;
							}
						}
						break;
					default:
						//console.debug(val.length);
						if (val.length == 0 || val == sDefaultValue){
							//console.debug("fehlerfall...");
							if (!bErr){
								alert(sErrMsg);
								//el.focus();
								bErr = true;
							}else{
								//console.debug("schon vorher fehler");
							}
						}
				}			
			}
	}	
	return !bErr;
}

// Radio aendern
// Aufbau fuer 2 Radioboxen ( rel ist der Wert, der im Hiddenfeld gespeichert wird )
// Hiddenfeld und Links muessen in einem Container liegen
//<div class="fl">
//	<input type="hidden" name="hofanfrage_anrede" value=""/>
//	<a class="inpRadio" rel="1" href="javascript:void(0)" onclick="changeRadio(this)"><%=tbtText(281,1)%></a>
//	<a id="radHofAnfrage2" class="inpRadio" rel="2" href="javascript:void(0)" onclick="changeRadio(this)"><%=tbtText(282,1)%></a>
//	<div class="LClear"></div>
//</div>
function changeRadio(el){
	// Wert des Radios, dass ausgewaehlt wurde ( REL tag )
	var elValue = el.getAttribute("rel");
	// Uebergeordneter Container
	var container = el.parentNode
	// Wert in das Hiffenfeld eintragen
	var elHiddenfield = container.getElementsByTagName("input")[0];
	elHiddenfield.value = elValue;
	// Alle Links durchlaufen und CSS aender fuer aktiviertes Radio
	for (var i=0;i<container.getElementsByTagName("a").length;i++){
		elLink = container.getElementsByTagName("a")[i];
		// Aktives Radio
		if (elLink.rel == elValue){
			elLink.className = "inpRadio inpRadioActive";
		}else{
			elLink.className = "inpRadio";
		}
	}		
}
// Checkbox aktivieren
// el: Element des Links
// elIdHiddenfield: die ID des Hiddenfields
// sValue: Wert der gespeichert wird
function changeCheckbox(el,elIdHiddenfield,sValue){
	var elHiddenfield = document.getElementById(elIdHiddenfield);	
	if (elHiddenfield.value.length == 0){
		//console.debug("checkbox aktivieren..... Wert setzen auf: " + sValue);
		// Aktivieren
		el.className = el.className.replace("inpCheckbox","inpCheckbox inpCheckboxActive");
		elHiddenfield.value = sValue;
	}else{
		//console.debug("checkbox DEaktivieren.....");
		el.className = el.className.replace(/inpCheckboxActive/g,"inpCheckbox");	
		elHiddenfield.value = "";
	}		
}

// Zeigt die entsprechende selectbox mit den Provinzen an 
function showLandProvinzen(val){
	var val4Compare = "provinz_" + val;
	// Alle selectboxen durchgehen und anhand des Namesn ein/ausblenden	
	for (var i=0;i < document.getElementsByTagName("select").length;i++){
		var el = document.getElementsByTagName("select")[i];		
		if (el.id.substring(0,8) == "provinz_"){
			if (el.id == val4Compare){
				document.getElementById("provLine_" + val).style.display="block";
			}else{
				document.getElementById("provLine_" + el.id.split("_")[1]).style.display="none";
			}
		}
	}
	document.getElementById("provinz").value = "";
}


	
	// User klickt auf "alle" Bezirke
	function markAllBezirke(){
		// 1. wenn der User auf ALLE klickt andere wegnehmen
		if (document.getElementById("bezirk0").value == "1"){
			if (document.getElementById("bezirk1").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk1"),"bezirk1","");
			}
			if (document.getElementById("bezirk2").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk2"),"bezirk2","");
			}
			if (document.getElementById("bezirk4").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk4"),"bezirk4","");
			}
			if (document.getElementById("bezirk5").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk5"),"bezirk5","");
			}
			if (document.getElementById("bezirk6").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk6"),"bezirk6","");
			}
			if (document.getElementById("bezirk7").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk7"),"bezirk7","");
			}
		}
	}
	
	// Gemeinden anzeigen
	// sCssSelect -> CssKlasse der Selectbox
	function showGemeinden(sTextAlle,sCssSelect){
		var arBezirkeTemp = new Array();
		
		// 1. ALLE wegnehmen, sobal ein Bezirk ausgewählt wird
		if (document.getElementById("bezirk1").value == "1" || document.getElementById("bezirk2").value == "1" || document.getElementById("bezirk4").value == "1" || document.getElementById("bezirk5").value == "1" || document.getElementById("bezirk6").value == "1" || document.getElementById("bezirk7").value == "1"){
			if (document.getElementById("bezirk0").value == "1"){
				changeCheckbox(document.getElementById("chk_bezirk0"),"bezirk0","");
			}
		}
		
		// 2. ALLE auswaehlen, wenn sonst nix gewaehlt wurde
		if (document.getElementById("bezirk1").value != "1" && document.getElementById("bezirk2").value != "1" && document.getElementById("bezirk4").value != "1" && document.getElementById("bezirk5").value != "1" && document.getElementById("bezirk6").value != "1" && document.getElementById("bezirk7").value != "1"){
			if (document.getElementById("bezirk0").value != "1"){
				changeCheckbox(document.getElementById("chk_bezirk0"),"bezirk0","1");
			}
		}		
		
		// 3. Gemeinden aktualisieren
		// Container leeren
		document.getElementById("contGemeinden").innerHTML = "";
		// Select erstellen
		selText = "<select name='gemeinde' id='gemeinde'>";
		selText +=  "<option value=''>" + sTextAlle + "</option>"
		// alle ausgewaehlt ?
		if (document.getElementById("bezirk0").value == "1"){
			bCheckVar = true; // alle Bezirke anzeigen
			var arHiddenFields = new Array(document.getElementById("bezirk0"));
		}else{
			bCheckVar = false;// nur uebereinstimmende
			var arHiddenFields = new Array(document.getElementById("bezirk1"),document.getElementById("bezirk2"),document.getElementById("bezirk4"),document.getElementById("bezirk5"),document.getElementById("bezirk6"),document.getElementById("bezirk7"));
		}
		// Felder durchlaufen
		
		for (var i=0;i<arHiddenFields.length;i++){
			var el = arHiddenFields[i];		
			var iBezirk = el.id.replace("bezirk","") ; // nummer des Bezirks
			if (el.value == "1" || bCheckVar){
				for (var x=0;x<arBezirke.length;x++){
					// Ist das derselbe Bezirk
					if (arBezirke[x][0] == iBezirk || bCheckVar){
						// ausgewaehlte Gemeinde ?
						var sSelected = "";
						if (arBezirke[x][3]){
							sSelected ="selected='selected'";
						}
						arBezirkeTemp.push(new Array(arBezirke[x][0],arBezirke[x][1],arBezirke[x][2],arBezirke[x][3]));
						//selText +="<option " + sSelected + " value='" + arBezirke[x][2] + "'>" + arBezirke[x][1] + "</option>"
					}
				}
			}
		}
		arBezirkeTemp = bubbleSortGemeinden(arBezirkeTemp);
	
		// ausgeben
		for (i=0;i<arBezirkeTemp.length;i++){
			var sSelected = "";
			if (arBezirkeTemp[i][3]){
				sSelected ="selected='selected'";
			}
			selText +="<option " + sSelected + " value='" + arBezirkeTemp[i][2] + "'>" + arBezirkeTemp[i][1] + "</option>";
		}
		
		selText += "</select>";
		document.getElementById("contGemeinden").innerHTML = selText;		
		$("#gemeinde").jqTransSelect(null,160,sCssSelect);		

	}
	
	// gibt das Array sortiert zurueck
	// ar; Array
	function bubbleSortGemeinden(ar){
		var arTemp = ar;		
		var bChanged = true;
		var n = arTemp.length-1;
		while(n > 0 && bChanged){			
			// ganzer Durchlauf
			var bChanged = false;
			for (i=0;i<arTemp.length-1;i++){	
				if (arTemp[i][1] > arTemp[i+1][1]){
					dTemp0 = arTemp[i+1][0];
					dTemp1 = arTemp[i+1][1];
					dTemp2 = arTemp[i+1][2];
					dTemp3 = arTemp[i+1][3];					
					
					arTemp[i+1][0] = arTemp[i][0];
					arTemp[i][0] =  dTemp0		
					
					arTemp[i+1][1] = arTemp[i][1];
					arTemp[i][1] =  dTemp1;	
					
					arTemp[i+1][2] = arTemp[i][2];
					arTemp[i][2] =  dTemp2;	
					
					arTemp[i+1][3] = arTemp[i][3];
					arTemp[i][3] =  dTemp3;				
					
					bChanged = true;
				}
			}
			n--;
		}		
		return arTemp;
	}
	
	// Hofsuche / Hofsuchergebnis:
	// Wenn auf "Alle" geklickt wurde	
	// sLabelGemeinde: Text fuer Beschreibung
	// sLabelAlle: Text fuer "Alle"
	function markAllGemeinden(sLabelGemeinde,sLabelAlle){
		if (document.getElementById("bezirk0").value == "0"){
			changeCheckbox(document.getElementById("chk_bezirk1"),"bezirk1","0");
			changeCheckbox(document.getElementById("chk_bezirk2"),"bezirk2","0");
			changeCheckbox(document.getElementById("chk_bezirk4"),"bezirk4","0");
			changeCheckbox(document.getElementById("chk_bezirk5"),"bezirk5","0");
			changeCheckbox(document.getElementById("chk_bezirk6"),"bezirk6","0");
			changeCheckbox(document.getElementById("chk_bezirk7"),"bezirk7","0");
		}else{
			
		}
		
	}
	
	// ersetzt die Umlaute ( ä -> ae )
	// es gibt eine ASP Funktion, die das rueckgaengig macht
	function replaceSonderzeichen4AJAX(sStr){
		var arPhrases = new Array(new Array('ä','ae'),new Array('Ä','Ae'),new Array('ü','ue'),new Array('Ü','Ue'),new Array('ö','oe'),new Array('Ö','Oe'));
		for (var i=0;i<arPhrases.length;i++){
			var par = arPhrases[i][0];
			while (sStr.indexOf(arPhrases[i][0]) >= 0){
				sStr = sStr.replace(arPhrases[i][0],arPhrases[i][1]);
			}
		}
		return urlencode(sStr);
	}
	
	// Oeffnet eine Box
	function openBox(elId){
		var el = document.getElementById(elId);
		if (el.className.indexOf("dNone") >= 0){
			el.className = el.className.replace("dNone","dBlock");
		}
		else{
			el.className =  el.className.replace("dBlock","dNone");
		}
	}
	
	// Aendert den Servicetyp beim Wechsel der Unterkunft
	// FeWo - keien Verpf
	// Zimmer - mit Fruestueck
	// arDesc - Array mit Beschreibungen
	// sCssSelect - ZusatzCss fuer die SelectBox
	// sSelectWidth - breite der Select
	function changeService(elSelect,iVal,arDesc,sCssSelect,sSelectWidth){
		var sNewSelected="<select name='hofsuche_verpflegung' id='hofsuche_verpflegung'>"
		//sNewSelected += "<option value='' " + sTextSel + "'>" + arDesc[0] + "</option>";
		// Welcher Wert soll als selected gesetzt werden
		switch (iVal){
			case "1": // Zimmer
				var sVal2Select = "2";		
				break;	
			case "": // nix
				var sVal2Select = "";		
				break;
			default: // FeWo
				var sVal2Select = "1";	
		}
		for (var i=1;i<5;i++){			
			var sTextSel = "";
			if (i == sVal2Select){
				sTextSel = "selected='selected'";
			}
			sNewSelected += "<option value='" + i + "' " + sTextSel + ">" + arDesc[i] + "</option>";
		}
		sNewSelected += "</select>";
		document.getElementById("contVerpflegung").innerHTML = "";
		document.getElementById("contVerpflegung").innerHTML= sNewSelected;		
		$("#hofsuche_verpflegung").jqTransSelect(null,sSelectWidth,sCssSelect);		
	}		

// Oeffnet ein Fenster mit FB
// sUrl -> zu verlinkende Url
function openFBSharer(sUrl){
	window.open('http://www.facebook.com/sharer/sharer.php?u=' + sUrl,'','width=850,height=550')
}

// Setzt das Abreisedatum + 7 Tage 
// Geschieht nur, wenn das Abfahrtdatum noch nicht gesetzt wurde
function setAbreiseDate(elAnreiseField,elAbreiseField,sTextAbreise){			
	iAnzTage2Move = 7;
	if (elAbreiseField.value == sTextAbreise){
		arDateElements = elAnreiseField.value.split(".");
		if (arDateElements.length == 3){
			var iJahr = arDateElements[2];
			var iMonat = arDateElements[1]-1;
			var iTag = arDateElements[0];
			var dNewDate = new Date(iJahr,iMonat,iTag);
			// ms seit 1970 + x Tage
			var iMs1970 = dNewDate.getTime() + parseFloat(iAnzTage2Move * 24 * 60 * 60 * 1000);					
			var dNewDate7 = new Date();
			dNewDate7.setTime(iMs1970);
			var sNewDate7String = dNewDate7.getDate() + "." + (dNewDate7.getMonth()+1) + "." + dNewDate7.getFullYear();							
			elAbreiseField.value = sNewDate7String;	
		}				
	}
}		

// kontrolliert, ob 
// - Abfahrt nach Anfahrt liegt 
// functionNoError: wird aufgerufen, wenn alles gut ging
function checkAnAbFahrtDatePicker(sElNameAnfahrt,sElNameAbfahrt,sError1,functionNoError){
	var elAnreise = document.getElementById(sElNameAnfahrt);
	var elAbreise = document.getElementById(sElNameAbfahrt);
	arDateAnreise = elAnreise.value.split(".");
	arDateAbreise = elAbreise.value.split(".");
	if (arDateAnreise.length == 3 && arDateAbreise.length == 3){
		var iJahrAn = arDateAnreise[2];
		var iMonatAn = arDateAnreise[1]-1;
		var iTagAn = arDateAnreise[0];
		var dDateAn = new Date(iJahrAn,iMonatAn,iTagAn);
		
		var iJahrAb = arDateAbreise[2];
		var iMonatAb = arDateAbreise[1]-1;
		var iTagAb = arDateAbreise[0];
		var dDateAb = new Date(iJahrAb,iMonatAb,iTagAb);
		
		iMsAnreise = dDateAn.getTime(); // ms Anreise
		iMsAbreise = dDateAb.getTime(); // ms Abreise
		
		if (iMsAbreise < iMsAnreise){
			alert(sError1);
		}else{
			// alles ok
			if (functionNoError != null){				
				functionNoError();
			}
		}
	}	
}


