// JavaScript Document
function openWindow(theURL,winName,features) { //v2.0
	//window.defaultStatus="theURL: "+theURL+" winName: "+winName+" features: "+features+ "opener: "+winName.opener;
	window.defaultStatus="opener: "+winName.opener;

	if (typeof features == "undefined")
	{
		features="status=no"
	}
	var winName=window.open(theURL,winName,features);
	winName.focus();
	//alert("warten");

}
function closeWindow(winName) { //v2.0
	winName.close();
}

//***********************************
function writeFlash(file, breite, hoehe, id, wmode){
//***********************************
	if (typeof id =="undefined"){
		id="mainFlash";
	}
	if (typeof wmode =="undefined"){
		wmode="transparent";
	}
	//alert(id);
	document.write('<OBJECT id="'+id+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+breite+'" height="'+hoehe+'">\n');
	document.write('<PARAM name="movie" value="'+file+'" />\n');
	document.write('<PARAM name="quality" value="high" />\n');
	document.write('<PARAM name="menu" value="false" />\n');
	document.write('<PARAM name="allowScriptAccess" value="always" />\n');

	document.write('<PARAM name="wmode" value="'+wmode+'" />\n');
	document.write('<PARAM name="swliveconnect" value="true" />\n');

	document.write('<EMBED NAME="'+id+'" src="'+file+'" width="'+breite+'" height="'+hoehe+'" TYPE="application/x-shockwave-flash" QUALITY="high" MENU="false" WMODE="'+wmode+'" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" allowScriptAccess="always" swliveconnect="true" ></embed>\n');
	document.write('</OBJECT>\n');
}




//***********************************
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["Zeit"] = "Zeitraum";
			myTexte["Tel"] = "Tel. Nummer";
			myTexte["Plz"] = "PLZ";
			myTexte["Ort"] = "Ort";
			myTexte["Strasse"] = "Strasse";
			myTexte["Mail"] = "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["Zeit"] = "Duration";
			myTexte["Tel"] = "Phone Number";
			myTexte["Plz"] = "Postcode";
			myTexte["Ort"] = "City";
			myTexte["Strasse"] = "Street";
			myTexte["Mail"] = "eMail-Address";
			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["Zeit"] = "Duration";
			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 (document.getElementsByName("vorname")[0].value=="debugShowVars" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrima" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrimaAndShowError" ||
		document.getElementsByName("vorname")[0].value=="debugSendPrimaAndShowVars" ||
		document.getElementsByName("vorname")[0].value=="debugShowError"){
		return (true);
	}

	switch (feld){
		case 'undefined':
			alert("Parameter zur Überprüfung fehlt!");

		//=====================================================================================================	
		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("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"] : "";
			text += (document.getElementsByName("von")[0].value=="" || document.getElementsByName("bis")[0].value=="") ? "\n\t" + myTexte["Zeit"] : "";
			text += (document.getElementsByName("tel")[0].value=="") ? "\n\t" + myTexte["Tel"] : "";
			text += (parseInt(document.getElementsByName("erwachsene")[0].value)<1 || document.getElementsByName("erwachsene")[0].value=="") ? "\n\t" + myTexte["Erwachsene"] : "";
			
			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':
		//=====================================================================================================	
			text += (document.getElementsByName("vorname")[0].value=="") ? "\n\t" + myTexte["Vorname"] : "";
			text += (document.getElementsByName("name")[0].value=="") ? "\n\t" + myTexte["Nachname"] : "";
			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 '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]

		//lÃ¤nge 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 anker=null;
var debug=parent.document.getElementById("debug");

//***********************************
function setDivHeight(minHeightVar) {
//***********************************
	//alert("setDivHeight\n"+document.referrer+"\n"+minHeight);
	minHeight=minHeightVar;
	if (!this.document.getElementById('eof')){
		document.write("<img id=\"eof\" src=\"/spacer.gif\" />");
		anker=document.getElementById("eof");
		waitForImages();
	}else{
		anker=document.getElementById("eof");
		waitForImages();
		if (debug) {debug.innerHTML+="<br>2. Aufruf!";}
		
	}
}

//***********************************
function waitForImages() {
//***********************************
	anzahlDerSchleifendurchlaeufe++; //global
	//alert("setDivHeight2\n"+document.referrer+"\n"+minHeight+"\n"+anker.offsetTop+"\n"+zusaetzlicherOffset);
	
	if (!checkIfAllImgLoaded() && anzahlDerSchleifendurchlaeufe<=20) {
		aktiv=window.setTimeout("waitForImages()", 200);
		if (debug){debug.innerHTML+="<br>hab' div nicht gesetzt: "+anzahlDerSchleifendurchlaeufe;}
		return false;
	}else{
		if (typeof aktiv !="undefined" || anzahlDerSchleifendurchlaeufe==20) window.clearTimeout(aktiv);
		//debug.innerHTML+="<br>war nichts mehr zu tun";
	}
	if (debug){	debug.innerHTML+="<br>Anker: "+anker.id;}
	setDivHeight2(anker) //diese funktion wird dann rekursiv aufgerufen

}

//***********************************
function setDivHeight2(anker) {
//***********************************
	var zusaetzlicherOffset=0;
	//anker=document.getElementById("eof");
	fusszeile=parent.document.getElementById("fusszeile");
	content=parent.document.getElementById("content");
	verlaengerung=parent.document.getElementById("contentVerlaengerung");
	//parent.document.getElementById("debug1").innerHTML=anker+"<br>offsetTop: "+anker.offsetTop+"<br>anzahlDerSchleifendurchlaeufe: "+anzahlDerSchleifendurchlaeufe;
	
	//nur ändern wenn minimumgröße überschritten wird
	//alert("setDivHeight2\n"+document.referrer+"\n"+minHeight+"\n"+anker.offsetTop+"\n"+zusaetzlicherOffset);

	if (anker.offsetTop+zusaetzlicherOffset < minHeight){
		gesamtOffset=minHeight
	}else{
		gesamtOffset=anker.offsetTop+zusaetzlicherOffset;
	}

	window.defaultStatus="setDivHeight2: minHeight="+minHeight+" gesamtOffset="+gesamtOffset;

	this.window.scrollTo(0,0); //sonst geht ff auf hash position
	if (fusszeile) {fusszeile.style.top=content.offsetTop+gesamtOffset+"px";}
	if (content) {content.style.height=gesamtOffset+"px";}
	if (verlaengerung) {verlaengerung.style.height=fusszeile.offsetTop-verlaengerung.offsetTop+"px";}
	//alert("verlaengerung.style.height: "+verlaengerung.style.height+"\ncontent.style.height: "+content.style.height+"\nfusszeile.offsetTop: "+fusszeile.offsetTop);

	if (window.location.hash){
		hash=window.location.hash.slice(1);
		//alert("_posFromBody: "+_posFromBody (window.document.getElementsByName(hash)[0],"y")+"\nscrollTo: "+ (parseInt(content.offsetTop)+_posFromBody (window.document.getElementsByName(hash)[0],"y")));
		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
	}

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;
	if (object.tagName !="BODY"){alreadyKnownPos = _posFromBody (object.offsetParent,achse,alreadyKnownPos);} //rekursion

return alreadyKnownPos;
}



//***********************************
function checkIfAllImgLoaded() {
//***********************************
	//alert("checkIfAllImgLoaded\n"+document.referrer);

	var imgNichtGeladen=0;
	var ausgabe="";

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

	//alert(imgNichtGeladen+"\n\n"+ausgabe);
	window.defaultStatus=imgNichtGeladen;
	
	//debug.innerHTML+="<br>&nbsp;&nbsp;&nbsp;imgs noch offen: "+imgNichtGeladen;
	
	if (imgNichtGeladen){
		return false;
	}else{
		return true;
	}
}

