/* JavaScript Document
v 1.1	2011-01-27	dragMe Funktionalität
v 1.0	2010-06-18	spider variable eingeführt => true wenn gleichnamiger div vorhanden (index.php)
					writeFlash enfernt (obsolet)
*/
//***********************************
function openWindow(theURL,winName,features) { //v2.0
//***********************************
	//if (debug) debug.innerHTML+="<br><strong>openWindow(theURL,winName,features)</strong><br>theURL: "+theURL+"<br>winName: "+winName+"<br>features: "+features+ "<br>opener: "+winName.opener;
	//window.defaultStatus="opener: "+winName.opener;
	if (typeof features == "undefined")	features="status=yes";
	winName=window.open(theURL,winName,features);
	winName.focus();
	return(winName);
}
function closeWindow(winName) { //v2.0
	winName.close();
}

//***********************************
function evalInputFields(feld, sprache){
//***********************************
	myTexte = new Array();
	text = "";
	switch (sprache){
		case 'de':
			myTexte["Meldung"] = "Folgende Angaben brauchen wir um Ihre Anfrage bearbeiten zu können:\n";
			myTexte["Vorname"] = "Vorname";
			myTexte["Nachname"] = "Nachname";
			myTexte["Erwachsene"] = "Anzahl Erwachsene";
			myTexte["Kinder"] = "Anzahl Kinder ('0' wenn keine Kinder)";
			myTexte["KinderAlter"] = "Alter der Kinder";
			myTexte["Zeit"] = "Zeitraum";
			myTexte["Zimmer"] = "Anzahl Zimmer";
			myTexte["Tel"] = "Tel. Nummer";
			myTexte["Plz"] = "PLZ";
			myTexte["Ort"] = "Ort";
			myTexte["Strasse"] = "Strasse";
			myTexte["Mail"] = "eMail-Adresse";
			myTexte["MailTo"] = "Empfänger eMail-Adresse";
			myTexte["MailFrom"] = "Absender eMail-Adresse";
			myTexte["Text"] = "Nachrichtentext";
			myTexte["Land"] = "Land";
			myTexte["MailDetail1"] = "\n\n\tDie eMailadresse entspricht nicht dem Format:\n\tTeil1[.Teil2]@Teil3.Teil4 ([] = optional)\n\tTeile1-3 dürfen nur \"A-Z\", \"a-z\", \"_\" oder \"-\" enthalten.\n\tTeil 4 darf nur \"A-Z\" und \"a-z\" enthalten.";
			myTexte["MailDetail2"] = "\n\n\tZuviele Punkte in der eMail-Adresse hinter dem \"@\"";
			myTexte["MailDetail3"] = "\n\n\tDer letzte Teil der eMail-Adresse (Top Level Domain) ist\n\tkleiner als 2 oder größer als 4 Zeichen lang,\n\toder er enthält andere Zeichen als \"A-Z\" und \"a-z\".";
			break;
		case 'en':
			myTexte["Meldung"] = "We need following informations to edit your request:\n";
			myTexte["Vorname"] = "Name";
			myTexte["Nachname"] = "Surname";
			myTexte["Erwachsene"] = "Number of adults";
			myTexte["Kinder"] = "Anzahl Kinder (Null '0' oder größer Null)";
			myTexte["KinderAlter"] = "Alter der Kinder";
			myTexte["Zeit"] = "Duration";
			myTexte["Zimmer"] = "Anzahl Zimmer";
			myTexte["Tel"] = "Phone Number";
			myTexte["Plz"] = "Postcode";
			myTexte["Ort"] = "City";
			myTexte["Strasse"] = "Street";
			myTexte["Mail"] = "eMail-Address";
			myTexte["MailTo"] = "Receiver eMail-Adresse";
			myTexte["MailFrom"] = "Sender eMail-Adresse";
			myTexte["Text"] = "Message-Text";
			myTexte["Land"] = "Country";
			myTexte["MailDetail1"] = "\n\n\tThe eMail-Adress doesnt match the format:\n\tPart1[.Part2]@Part3.Part4 ([] = optional)\n\tPart1-3 may contain \"A-Z\", \"a-z\", \"_\" or \"-\".\n\tPart 4 may only contain \"A-Z\" and \"a-z\".";
			myTexte["MailDetail2"] = "\n\n\tToo much dots in your eMail-Adress behind the \"@\"";
			myTexte["MailDetail3"] = "\n\n\tThe last part of the eMail-Adress (Top Level Domain) is\n\tsmaller than 2 or larger than 4  letters,\n\tor it contents other letters than \"A-Z\" and \"a-z\".";
			break;
		case 'fr':
			myTexte["Meldung"] = "We need following informations to edit your request:\n";
			myTexte["Vorname"] = "Prénom";
			myTexte["Nachname"] = "Nom";
			myTexte["Erwachsene"] = "Adultes";
			myTexte["Kinder"] = "Anzahl Kinder (Null '0' oder größer Null)";
			myTexte["KinderAlter"] = "Alter der Kinder";
			myTexte["Zeit"] = "Duration";
			myTexte["Zimmer"] = "Anzahl Zimmer";
			myTexte["Tel"] = "Phone Number";
			myTexte["Plz"] = "Code Postal";
			myTexte["Ort"] = "Ville";
			myTexte["Strasse"] = "Rue";
			myTexte["Mail"] = "eMail";
			myTexte["Text"] = "Text";
			myTexte["Land"] = "Pays";
			myTexte["MailDetail1"] = "\n\n\tThe eMail-Adress doesnt match the format:\n\tPart1[.Part2]@Part3.Part4 ([] = optional)\n\tPart1-3 may contain \"A-Z\", \"a-z\", \"_\" or \"-\".\n\tPart 4 may only contain \"A-Z\" and \"a-z\".";
			myTexte["MailDetail2"] = "\n\n\tToo much dots in your eMail-Adress behind the \"@\"";
			myTexte["MailDetail3"] = "\n\n\tThe last part of the eMail-Adress (Top Level Domain) is\n\tsmaller than 2 or larger than 4  letters,\n\tor it contents other letters than \"A-Z\" and \"a-z\".";
			break;
		default:
			alert ("Falsche Sprache angegeben!")
	}
	//if (debug) debug.innerHTML+=document.getElementsByName("vorname")+"<br>"; else alert((document.getElementsByName("vorname").length));
	if (document.getElementsByName("vorname").length>0){ //anrede für postkarte
		if (document.getElementsByName("vorname")[0].value=="debugShowVars" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrima" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrimaNoCaptcha" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrimaAndShowError" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrimaAndShowVars" ||
		document.getElementsByName("vorname")[0].value=="debugShowError"){
		return (true);
		}
		/*if (document.getElementsByName("anrede")[0].value=="debugShowVars" ||
		document.getElementsByName("anrede")[0].value=="debugSendPrima" ||
		document.getElementsByName("anrede")[0].value=="debugSendPrimaNoCaptcha" ||
		document.getElementsByName("anrede")[0].value=="debugSendPrimaAndShowError" ||
		document.getElementsByName("anrede")[0].value=="debugSendPrimaAndShowVars" ||
		document.getElementsByName("anrede")[0].value=="debugShowError"){
		return (true);
		}*/
	}


	switch (feld){
		case 'undefined':
			alert("Parameter zur Überprüfung fehlt!");
		//=====================================================================================================	
		case 'quiz':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";

			if (document.getElementsByName("email")[0].value==""){
				text +="\n\t" + myTexte["Mail"] + "";
			}else{
				text +=checkEmail(document.getElementsByName("email")[0].value)
			}

			if (!text==""){
				text = myTexte["Meldung"] + text + "";
				alert (text);
				return (false);
			}else{
				return (true);
			}

		//=====================================================================================================	
		case 'postkarte':
		//=====================================================================================================	
			if (document.getElementById("emailFrom").value==""){
				text +="\n\t" + myTexte["MailFrom"] + "";
			}else{
				text +=checkEmail(document.getElementById("emailFrom").value)
			}

			if (document.getElementById("emailTo").value==""){
				text +="\n\t" + myTexte["MailTo"] + "";
			}else{
				text +=checkEmail(document.getElementById("emailTo").value)
			}

			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}

		//=====================================================================================================	
		case 'anfrage':
		//=====================================================================================================	
		text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";
			text += (document.getElementsByName("text")[0].value=="") ? "\n\t" + myTexte["Text"] : "";
			
			if (document.getElementsByName("email")[0].value==""){text +="\n\t" + myTexte["Mail"] + "";
			}else{text +=checkEmail(document.getElementsByName("email")[0].value)}

			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}

		//=====================================================================================================	
		case 'buchung':
		//=====================================================================================================	
			/*if (!validateCard(document.forms[0].kartenNummer.value,document.forms[0].bezahlung.value,document.forms[0].monat.value,document.forms[0].jahr.value)){
				return false;
			}*/
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";
			text += (document.getElementsByName("tel")[0].value=="") ? "\n\t" + myTexte["Tel"] : "";
			text += (document.getElementsByName("strasse")[0].value=="") ? "\n\t" + myTexte["Strasse"] : "";
			text += (document.getElementsByName("plz")[0].value=="") ? "\n\t" + myTexte["Plz"] : "";
			text += (document.getElementsByName("ort")[0].value=="") ? "\n\t" + myTexte["Ort"] : "";
			text += (document.getElementsByName("land")[0].value=="") ? "\n\t" + myTexte["Land"] : "";
			text += (parseInt(document.getElementsByName("erwachsene")[0].value,10)<1 || document.getElementsByName("erwachsene")[0].value=="") ? "\n\t" + myTexte["Erwachsene"] : "";
			if (document.getElementsByName("kinder")[0]){
			text += (parseInt(document.getElementsByName("kinder")[0].value,10)<0 || document.getElementsByName("kinder")[0].value=="") ? "\n\t" + myTexte["Kinder"] : "";
			text += (parseInt(document.getElementsByName("kinder")[0].value,10)>0 && document.getElementsByName("kinderAlter")[0].value=="") ? "\n\t" + myTexte["KinderAlter"] : "";
			}
			//text += (document.getElementsByName("von")[0].value=="" || document.getElementsByName("bis")[0].value=="") ? "\n\t" + myTexte["Zeit"] : "";

			//------------------------------------------------------------------------------------------------
			anzahlDz=true;anzahlMbz=true;
			if (document.getElementsByName("dz")[0]){
				if (parseInt(document.getElementsByName("dz")[0].value,10)==0 ||document.getElementsByName("dz")[0].value=="" || isNaN(document.getElementsByName("dz")[0].value)) anzahlDz=false; else anzahlDz=true;
			}
			if (document.getElementsByName("mbz")[0]){
				if (parseInt(document.getElementsByName("mbz")[0].value,10)==0 ||document.getElementsByName("mbz")[0].value=="" || isNaN(document.getElementsByName("mbz")[0].value)) anzahlMbz=false; else anzahlMbz=true;
			}
			text += (!(anzahlMbz || anzahlDz)) ? "\n\t" + myTexte["Zimmer"] : "";
			//------------------------------------------------------------------------------------------------
			
			if (document.getElementsByName("email")[0].value==""){
				text +="\n\t" + myTexte["Mail"] + "";
			} else {
				if (document.getElementsByName("email")[0].value!=""){
					text +=checkEmail(document.getElementsByName("email")[0].value)
				}
			}

			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}

		//=====================================================================================================	
		case 'buchungsAnfrage':
		case 'zimmerAnfrage':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";
			text += (parseInt(document.getElementsByName("erwachsene")[0].value,10)<1 || document.getElementsByName("erwachsene")[0].value=="") ? "\n\t" + myTexte["Erwachsene"] : "";
			text += (parseInt(document.getElementsByName("kinder")[0].value,10)<0 || document.getElementsByName("kinder")[0].value=="") ? "\n\t" + myTexte["Kinder"] : "";
			text += (parseInt(document.getElementsByName("kinder")[0].value,10)>0 && document.getElementsByName("kinderAlter")[0].value=="") ? "\n\t" + myTexte["KinderAlter"] : "";

			text += (document.getElementsByName("von")[0].value=="" || document.getElementsByName("bis")[0].value=="") ? "\n\t" + myTexte["Zeit"] : "";
			
			if (document.getElementsByName("email")[0].value==""){
				text +="\n\t" + myTexte["Mail"] + "";
			} else {
				if (document.getElementsByName("email")[0].value!=""){
					text +=checkEmail(document.getElementsByName("email")[0].value)
				}
			}

			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}

		//=====================================================================================================	
		case 'call_back':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\tVorname" : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\tFamilienname" : "";
			//text += (document.getElementsByName("text")[0].value=="") ? "\n\tNachrichtentext" : "";
			text += (document.getElementsByName("telNr")[0].value=="") ? "\n\tTel. Nr." : "";
			
			
			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}

		//=====================================================================================================	
		case 'katalog':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";
			text += (document.getElementsByName("land")[0].value=="") ? "\n\t" + myTexte["Land"] : "";
			/*text += (document.getElementsByName("text")[0].value=="") ? "\n\tNachrichtentext" : "";*/
			text += (document.getElementsByName("plz")[0].value=="") ? "\n\t" + myTexte["Plz"] : "";
			text += (document.getElementsByName("ort")[0].value=="") ? "\n\t" + myTexte["Ort"] : "";
			text += (document.getElementsByName("strasse")[0].value=="") ? "\n\t" + myTexte["Strasse"] : "";

			
			/*if (document.getElementsByName("email")[0].value==""){
				text +="\n\teMail-Adresse";
			} else {
				text +=checkEmail(document.getElementsByName("email")[0].value)
			}*/

			if (!text==""){text = myTexte["Meldung"] + text + "";alert (text);	return (false);
			}else{return (true);}
			
		//=====================================================================================================	
		case 'newsletter':
		//=====================================================================================================	
			if (document.getElementsByName("email")[0].value==""){
				text +="\n\teMail-Adresse";
			} else {
				text +=checkEmail(document.getElementsByName("email")[0].value)
			}

			if (!text==""){
				text = myTexte["Meldung"] + text;
				alert (text);
				return (false);
			}else{
				return (true);
			}
			
		//=====================================================================================================	
		case 'verleih':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\tVorname" : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\tFamilienname" : "";
			text += (document.getElementsByName("verleihAbholTag")[0].value=="") ? "\n\tTag der Abholung" : "";
			text += (document.getElementsByName("verleihAbholZeit")[0].value=="") ? "\n\tZeit der Abholung" : "";
			
			if (document.getElementsByName("verleih1Anzahl")[0].value=="0" &&
				document.getElementsByName("verleih2Anzahl")[0].value=="0" &&
				document.getElementsByName("verleih3Anzahl")[0].value=="0"){
				text +="\n\tAnzahl der Sportgeräte";
			} else {
				if ((document.getElementsByName("verleih1Anzahl")[0].value!="0" && document.getElementsByName("verleih1Tage")[0].value=="0") ||
				    (document.getElementsByName("verleih2Anzahl")[0].value!="0" && document.getElementsByName("verleih2Tage")[0].value=="0") ||
					(document.getElementsByName("verleih3Anzahl")[0].value!="0" && document.getElementsByName("verleih3Tage")[0].value=="0")){
					text +="\n\tAnzahl der Verleihtage";
				}

				if ((document.getElementsByName("verleih1Anzahl")[0].value!="0" && document.getElementsByName("verleih1Ware")[0].value=="") ||
				    (document.getElementsByName("verleih2Anzahl")[0].value!="0" && document.getElementsByName("verleih2Ware")[0].value=="") ||
					(document.getElementsByName("verleih3Anzahl")[0].value!="0" && document.getElementsByName("verleih3Ware")[0].value=="")){
					text +="\n\tArt des Sportgeräts";
				}
			}

	}//end switch
}
//***********************************
function checkEmail(eMail){
//***********************************
	//Format: Teil1[.Teil2]@Teil3.Teil4 pruefen
	suche = /^([_a-zA-z0-9-])+(\.[_a-zA-z0-9-]+)*@([_a-zA-z0-9-]+\.)+([a-zA-Z]{0,})/;
	text=""
	ergebnis=suche.test(eMail)

	if (!ergebnis) text += myTexte["MailDetail1"];
	//teil hinter dem @
	teile=eMail.split("@")
	//durch '.' getrennte segmente holen
	teile=teile[teile.length-1].split(".")
	//auf mehr als 2 segmente pruefen
	if (teile.length>2) text += myTexte["MailDetail2"];

	if (teile){
		//letztes segment = TLD holen
		teil=teile[teile.length-1]

		//laenge und A-Z pruefen
		suche=/[a-zA-Z]{2,4}/
		if (suche.exec(teil) != teil){
		text += myTexte["MailDetail3"];
		}
	}

	return(text)
}

//========================================================================================
function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
//========================================================================================
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;

	for( i = 0; i < cardNumber.length; ++i ) {
		ar[i] = parseInt(cardNumber.charAt(i));
	}
	for( i = ar.length -2; i >= 0; i-=2 ) { // you have to start from the right, and work back.
		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, ADD those individual digits together 

	for( i = 0; i < ar.length; ++i ) {
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
	}
	return (((sum%10)==0)?true:false);	 	
}

//========================================================================================
function expired( month, year ) {
//========================================================================================
	var now = new Date();							// this function is designed to be Y2K compliant.
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute & second of expired month
	if( now.getTime() < expiresIn.getTime() ) return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
}

//========================================================================================
function validateCard(cardNumber,cardType,cardMonth,cardYear) {
//========================================================================================
	if (cardType=='Rechnung'){
		return true;
	}
	if( cardNumber.length == 0 ) {						//most of these checks are self explanitory
		alert("Bitte Kartennummer eingeben.\n\nPlease enter card number.");
		return false;				
	}
	for( var i = 0; i < cardNumber.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = cardNumber.charAt(i);
		if( c < '0' || c > '9' ) {
			alert("Bitte nur Ziffern, keine Leerzeichen oder Trennstriche eingeben.\n\nUse only digits. do not use spaces or hyphens.");
			return false;
		}
	}
   	var length = cardNumber.length;			//perform card specific length and prefix tests

	switch( cardType ) {
		case 'American Express':
			errorText="Bitte geben Sie eine gültige American Express Kartennummer ein.\n\nPlease enter a valid American Express card number.";
		
			if( length != 15 ) {
				alert(errorText);
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) {
				alert(errorText);
				return;
			}
			break;
		case 'Discover Card':
			errorText="Bitte geben Sie eine gültige Discover Card Kartennummer ein.\n\nPlease enter a valid Discover Card number.";
			if( length != 16 ) {
				alert(errorText);
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,4));
			if( prefix != 6011 ) {
				alert(errorText);
				return;
			}
			break;
		case 'MasterCard':
			errorText="Bitte geben Sie eine gültige MasterCard Kartennummer ein.\n\nPlease enter a valid MasterCard number.";
			if( length != 16 ) {
				alert(errorText);
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix < 51 || prefix > 55) {
				alert(errorText);
				return;
			}
			break;

		case 'Visa':
			errorText="Bitte geben Sie eine gültige Visa Kartennummer ein.\n\nPlease enter a valid Visa card number.";
			if( length != 16 && length != 13 ) {
				alert(errorText);
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix != 4 ) {
				alert(errorText);
				return;
			}
			break;

		case 'Diners Club':
			errorText="Bitte geben Sie eine gültige Diners Club Kartennummer ein.\n\nPlease enter a valid Diners Club card number.";
			if( length != 14 && length != 17 ) {
				alert(errorText);
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix != 30 && prefix != 36 && prefix != 38) {
				alert(errorText);
				return;
			}
			break;
		}

		if( !mod10( cardNumber ) ) { 		// run the check digit algorithm
			alert("Sorry! this is not a valid credit card number.");
			return false;
		}
		if( expired( cardMonth, cardYear ) ) {							// check if entered date is already expired.
			alert("Sorry! The expiration date you have entered would make this card invalid.");
			return false;
		}
		
		return true; // at this point card has not been proven to be invalid
}
var anzahlDerSchleifendurchlaeufe=0;
var minHeight=0; //global
var contentHintergrundGrafikHoehe=0; //global
var anker=null;
var debug=parent.document.getElementById("debug");
var wordCloud=parent.document.getElementById("wordCloud");
var spider=parent.document.getElementById("spider");

//***********************************
function setDivHeight(minHeightVar,contentHintergrundGrafikHoeheVar, zusaetzlicherOffsetVar,vBarOffsetVar) {
/************************************
hier wird eigentlich nur der anker gesetzt*/
	if (typeof setDivHeight.minHeight == 'undefined') setDivHeight.minHeight=minHeightVar; 

	if (typeof setDivHeight.contentHintergrundGrafikHoehe == 'undefined') setDivHeight.contentHintergrundGrafikHoehe=contentHintergrundGrafikHoeheVar;
	contentHintergrundGrafikHoehe=setDivHeight.contentHintergrundGrafikHoehe; //quasi static variable
	if (typeof setDivHeight.zusaetzlicherOffset == 'undefined') setDivHeight.zusaetzlicherOffset=zusaetzlicherOffsetVar;
	zusaetzlicherOffset=setDivHeight.zusaetzlicherOffset; //quasi static variable
	
	if (typeof setDivHeight.vBarOffset == 'undefined') setDivHeight.vBarOffset=vBarOffsetVar;
	vBarOffset=setDivHeight.vBarOffset; //quasi static variable
	
	if (!this.document.getElementById('eof')){
		document.write("<img id=\"eof\" src=\"/spacer.gif\" height=\"1\"  width=\"1\"/>");
	}else{
		if (debug) {debug.innerHTML+="<br>2. Aufruf! von "+this+" Ankerbild bereits gesetzt!";} // kommt bei routenberechnung google maps vor => daher brauche ich static contentHintergrundGrafikHoehe
	}
	anker=document.getElementById("eof"); //global weil var im root
	waitForImages();
}
//***********************************
function waitForImages() {
//is eine funktion, weil die ja mit setTimeout immer wieder aufgerufen wird
//***********************************
	if (debug){	debug.innerHTML+="<br><u>492</u> <strong>waitForImages</strong>";}
	anzahlDerSchleifendurchlaeufe++; //global
	//aktiv=null;
	
	if (!checkIfAllImgLoaded()) {
		aktiv=window.setTimeout("waitForImages()", 300);
		if (debug){debug.innerHTML+="<br>waitForImages: "+anzahlDerSchleifendurchlaeufe;}
		if (anzahlDerSchleifendurchlaeufe<20) {
			return false;
		}else{
			window.clearTimeout(aktiv);
		}
	}else{
	}
	//if (debug){	debug.innerHTML+="<br><u>506</u> <strong>vor setDivHeight2(anker)</strong> minHeight:"+setDivHeight.minHeight;}
	setDivHeight2(anker) //diese funktion wird dann rekursiv aufgerufen

}

//***********************************
function setDivHeight2(anker) {
//***********************************
	if (debug){	debug.innerHTML+="<br><u>514</u> <strong>setDivHeight2:</strong> minHeight: "+setDivHeight.minHeight;}
	if (debug){	debug.innerHTML+="<br>anker. in Tag:"+anker.offsetParent.tagName+"<br>anker.offsetParent.offsetTop:"+anker.offsetParent.offsetTop+" offsetTop:"+anker.offsetTop+" offsetHeight:"+anker.offsetHeight;}
	//zusaetzlicherOffset = 0;
	zusaetzlicherOffset = (anker.offsetParent.tagName =="DIV") ? anker.offsetParent.offsetTop : 0;
	zusaetzlicherOffset += setDivHeight.zusaetzlicherOffset;
	vBarOffset=setDivHeight.vBarOffset;
	vBarGanzeSeite=false;
	fusszeileHintergrundHoehe=50; // nur für v-bar???
	contentGrafikHintergrundHoehe=setDivHeight.contentHintergrundGrafikHoehe;
	fusszeile=parent.document.getElementById('fusszeile');
	kopfzeile=parent.document.getElementById('kopfzeile');
	fusszeileElement=parent.document.getElementById('fusszeileElement');
	content=parent.document.getElementById('content');
	verlaengerung=parent.document.getElementById('contentVerlaengerung');
	vBar=parent.document.getElementById('vBar');
	hBar=parent.document.getElementById('hBar');
	main=parent.document.getElementById('main');
	indexBody=parent.document.getElementById('indexBody');
	copyright=parent.document.getElementById('fusszeileCopyright');
	contentFrm=parent.document.getElementById('contentFrm');
	directionsPanel = document.getElementById("googleMapDirections"); //alert(directionsPanel);
	mapPanel = document.getElementById("googleMapCanvas");
	mapWrapper = document.getElementById("googleMapWrapper");




	if (debug) {debug.innerHTML+="<br><u>541</u> clientHeight: "+indexBody.clientHeight+"<br>scrollHeight:"+indexBody.scrollHeight+"<br>fusszeileHoehe:"+fusszeile.offsetHeight+"<br>copyright.offsetTop:"+copyright.offsetTop+" copyright.offsetHeight:"+copyright.offsetHeight+"<br>content.offsetTop:"+content.offsetTop+" content.offsetHeight:"+content.offsetHeight+"<br>verlaengerung.offsetTop:"+verlaengerung.offsetTop+" verlaengerung.offsetHeight:"+verlaengerung.offsetHeight;}
	if (debug && vBar) {debug.innerHTML+="<br><u>542</u> vBarHoehe:"+vBar.offsetHeight;}
	gesamtOffset=anker.offsetTop+anker.offsetHeight+zusaetzlicherOffset;
	if (debug) debug.innerHTML+="<br><u>544</u> gesamtOffset: "+gesamtOffset+"";
	
	//nur ändern wenn minimumgröße überschritten wird
	if (gesamtOffset < setDivHeight.minHeight){
		gesamtOffset=setDivHeight.minHeight
		if (debug) {debug.innerHTML+="<br><u>549</u> gesamtOffset < minHeight: "+setDivHeight.minHeight;}
	}else{
		if (debug) {debug.innerHTML+="<br><u>552</u> gesamtOffset >= minHeight: "+setDivHeight.minHeight;}
		if (directionsPanel) {
			differenzGooglePanels=directionsPanel.offsetHeight-mapPanel.offsetHeight;
			if (differenzGooglePanels > 0) {
				gesamtOffset+=differenzGooglePanels; //brauchts weil gmaps nachträglich die grünen punkte setzt
				//mapWrapper.style.height=directionsPanel.offsetHeight; das geht nicht im ff
				//mapPanel.style.height=directionsPanel.offsetHeight;
			}
			if (debug) {debug.innerHTML+="<br><u>559</u> directionsPanel: "+directionsPanel.offsetHeight+" gesamtOffset: "+gesamtOffset;}; 	} // directionsPanel wird aber durch gmaps scheinbar ersetzt
	}
		if (vBar) {
			vBarHoehe=gesamtOffset+content.offsetTop+vBarOffset;
			if (debug) debug.innerHTML+="<br><u>554</u> vBar: "+copyright.offsetTop+" "+copyright.offsetHeight+" "+content.offsetTop+" "+content.offsetHeight+" "+indexBody.clientHeight+"<br>vBarHoehe: "+vBarHoehe;
	
			//-------------------------------------------------------------------------------------------------------		
			if (vBarGanzeSeite){
				vBarHoehe+=copyright.offsetTop+copyright.offsetHeight;
				if (debug) debug.innerHTML+="<br><u>559</u> vBarGanzeSeite: vBarHoehe: "+vBarHoehe;
				if (vBarHoehe < indexBody.clientHeight) vBarHoehe=indexBody.clientHeight+9; //9px offset für ff
				
				if (indexBody.scrollHeight > vBarHoehe) { //scrollHeight stammt ggf. noch von der vorigen seite
						vBar.style.height=vBarHoehe+"px"; //9px offset für ff
				}else{
						vBar.style.height=indexBody.scrollHeight+"px"; 
				}
			}else{ //nicht vBarGanzeSeite


			} //vBarGanzeSeite
		vBar.style.height=vBarHoehe+fusszeileHintergrundHoehe+"px"; 
		} //vbar
	
	
	//-------------------------------------------------------------------------------------------------------		
	this.window.scrollTo(0,0); //sonst geht ff auf hash position
	if (fusszeile) {fusszeile.style.top=content.offsetTop+gesamtOffset+"px";
	if (debug){debug.innerHTML+="<br><u>579</u> <strong>fusszeile gesetzt:</strong> "+fusszeile.style.top;}	}
	//-------------------------------------------------------------------------------------------------------		
	if (content) {
		content.style.height=gesamtOffset+"px";
		// contentFrm hoehe muss gesetzt werden wenn <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
		// "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
		// oder bei IE6
		contentFrm.style.height=gesamtOffset+"px";
	} //content
	//-------------------------------------------------------------------------------------------------------		
	if (verlaengerung) { // position wird im primaDiv.css gesetzt
	//alert("Verlängerungs-DIV da!");
		if (fusszeile.offsetTop-contentGrafikHintergrundHoehe>0){
		//alert(typeof fusszeile.offsetTop+" "+contentHintergrundGrafikHoehe);
			verlaengerung.style.visibility="visible"; 
			verlaengerung.style.top=contentGrafikHintergrundHoehe+"px";
			verlaengerung.style.height=fusszeile.offsetTop-contentGrafikHintergrundHoehe+"px";
		}else{
			verlaengerung.style.visibility="hidden"; //alert(typeof fusszeile.offsetTop+" "+contentHintergrundGrafikHoehe);
		}
	}else{//alert("Verlängerungs-DIV fehlt!"); 
	} //verlaengerung
		//-------------------------------------------------------------------------------------------------------		
	//}else{//vBar
	//}
		

	if (hBar && hBar.style.visibility=="visible") { //das visible muss inline oder per js gesetzt werden - kein stylesheet
		hBar.style.height=gesamtOffset+"px";
		hBar.style.width=indexBody.clientWidth+"px";
		positionLinks=main.offsetLeft*-1; 
		hBar.style.left=positionLinks+"px";
		//alert(hBar.style.width+"\n"+hBar.style.height+"\nvis: "+hBar.style.visibility+"\n"+positionLinks);//if (debug) debug.innerHTML+="<br>parent.document: "+parent.document.width;
	}

	if (window.location.hash){
		hash=window.location.hash.slice(1);
		parent.window.scrollTo(0,(parseInt(content.offsetTop)+_posFromBody (window.document.getElementsByName(hash)[0],"y")-50)); 
	}else{
		window.location.hash
		parent.window.scrollTo(0,0); //wozu raufscrollen wenn # vorhanden
	}


	
	if (debug) {debug.innerHTML+="<br><u>624</u> clientHeight: "+indexBody.clientHeight+"<br>scrollHeight:"+indexBody.scrollHeight+"<br>fusszeileHoehe:"+fusszeile.offsetHeight+"<br>copyright.offsetTop:"+copyright.offsetTop+" copyright.offsetHeight:"+copyright.offsetHeight+"<br>content.offsetTop:"+content.offsetTop+" content.offsetHeight:"+content.offsetHeight+"<br>fusszeile.offsetTop:"+fusszeile.offsetTop+"<br>verlaengerung.offsetTop:"+verlaengerung.offsetTop;}



	if (debug){	debug.innerHTML+="<br><u>628</u> minHeight: "+setDivHeight.minHeight+"<br>gesamtOffset="+gesamtOffset+"<br>zusaetzlicherOffset="+zusaetzlicherOffset+"<br>content.offsetTop="+content.offsetTop+"<br>fusszeile.offsetHeight="+fusszeile.offsetHeight+"<br>fusszeile.offsetTop="+fusszeile.offsetTop+"<br>window.location.hash="+window.location.hash+"<br>";}

return (true);
}
//***********************************
function _posFromBody (object,achse,alreadyKnownPos){ //erstmals bei robl
//***********************************
	//nur 1 arg bedeutet 1. aufruf -> init;
	if (_posFromBody.arguments.length==2) {var alreadyKnownPos=0}
	alreadyKnownPos += (achse=="x") ? object.offsetLeft : object.offsetTop;
	/*offsetParent: Speichert dasjenige Elternelement eines Elements, von dessen Positionierung 
	die Positionierung des Elements abhängt. offsetParent ist dabei eine Art Zeiger auf das übergeordnete Element.
	*/
	if (object.tagName !="BODY"){alreadyKnownPos = _posFromBody (object.offsetParent,achse,alreadyKnownPos);} //rekursion

	return alreadyKnownPos;
}

//***********************************
function checkIfAllImgLoaded() {
//***********************************
	//return true;
	if (debug){	debug.innerHTML+="<br><u>650</u> <strong>checkIfAllImgLoaded</strong>";}
	var imgNichtGeladen=0;
	var ausgabe="";

	var lists = document.getElementsByTagName("IMG");
	if (!lists.length){
		if (debug){	debug.innerHTML+="<br><u>656</u> keine Bilder da!";}
		return true;
	}else{
		//if (debug){	debug.innerHTML+="<br><u>659</u> "+lists.length+" Bilder";}
	}
	
	for (var i = 0; i < lists.length; i++) {
		ausgabe+=(lists[i].complete) ? "" : lists[i].src+": nicht geladen\n";

		if (lists[i].complete==false){
			if (debug) debug.innerHTML+="<br>not loaded: "+lists[i].src;
			imgNichtGeladen++;
		}
	}

	//window.defaultStatus=imgNichtGeladen;
	if (debug) debug.innerHTML+="<br>checkIfAllImgLoaded: offen "+imgNichtGeladen;
	
	if (imgNichtGeladen){
		return false;
	}else{
		return true;
	}
}

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

//***********************************
function ControlVersion(){
//***********************************
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version){
		try {// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 

			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version){
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
//***********************************
function GetSwfVer(){
//***********************************
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
// nur mehr für hth => global prima.js
// pano, geotec (? evtl html - nicht php), hun, zico => kein globales prima.js
//***********************************
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision){
//***********************************
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
//***********************************
//dragMe
//***********************************
var ie=document.all;
var nn6=document.getElementById&&!document.all;
var isdrag=false;
var x,y;
var dobj;

function movemouse(e){
  if (isdrag){
    dobj.style.left = nn6 ? tx + e.clientX - x+"px" : tx + event.clientX - x;
    dobj.style.top  = nn6 ? ty + e.clientY - y+"px" : ty + event.clientY - y;
    return false;
  }
}

function selectmouse(e) {
  var fobj       = nn6 ? e.target : event.srcElement;
  var topelement = nn6 ? "HTML" : "BODY";

  while (fobj.tagName != topelement && fobj.className != "dragMe"){
    fobj = nn6 ? fobj.parentNode : fobj.parentElement;
	if (!fobj) break; // IE bringt fehler wenn objekt null
  }

  if (fobj && fobj.className=="dragMe"){
    isdrag = true;
    dobj = fobj;
    tx = parseInt(dobj.style.left+0);
    ty = parseInt(dobj.style.top+0);
    x = nn6 ? e.clientX : event.clientX;
    y = nn6 ? e.clientY : event.clientY;
    document.onmousemove=movemouse;
    return false;
  }
}

document.onmousedown=selectmouse;
document.onmouseup=new Function("isdrag=false");

//***********************************
//tabelle altColor
//***********************************
function tableAltColor(){
	if (document.getElementsByTagName('table')){ // gibt's überhaupt tabellen
		tabellen=document.getElementsByTagName('table'); //alle tabellen in array
		text="";
		for (var i = 0; i < tabellen['length']; i++){ //tabellen array iterieren
			text+=i+" "+tabellen[i].className+" "+tabellen[i].id+"\n";
			if (tabellen[i].className.toLowerCase() == "altcolor"){ //hat die tabelle die 
	alert(text);
				for (var j = 0; j < tabellen[i].rows.length; j++){
					if (j % 2 ==1){
						tabellen[i].rows[j].className="altColor"; //muss im css definiert sein
					}else if (j==0) {
						tabellen[i].rows[j].className="altColorHeader"; //muss im css definiert sein
					}
				}
			}

		} // end for
	} //table?
}
//***********************************
function setMinContentHeight(minHeightVar) {
//***********************************
	var content=this.document.getElementById('content');
	if (content){ // bei postkarte gibt es keinen content
		if (content.offsetHeight < minHeightVar) content.style.height=minHeightVar+"px";
	}
}
