//###########################################################################
//###########################################################################	  
//Formular Prüfung
function pruefen() {
		var f = document.kontaktformular;
		fehler = new Array();
		var klammeraffe = f.email.value;
		//Name überprüfen
		if (f.name.value == "") {
			fehler.push("Bitte tragen sie Ihren Namen ein.");
		} 	else {
				if (f.name.value.length <= "1") {
					fehler.push("Bitte tragen sie Ihren vollst&auml;ndigen Namen ein.");
				}
		  	}
		//Club überprüfen
		if (f.club.value == "") {
			fehler.push("Bitte tragen sie die Veranstaltung ein.");
		} 	else {
				if (f.club.value.length <= "1") {
					fehler.push("Bitte tragen sie das vollst&auml;ndige Event ein.");
				}
		  	}
		//Adresse überprüfen
		if (f.adresse.value == "") {
			fehler.push("Bitte tragen sie Ihre Adresse ein.");
		} 	else {
				if (f.adresse.value.length <= "1") {
					fehler.push("Bitte tragen sie ihre vollst&auml;ndige Adresse ein.");
				}
		  	}
		//PLZ Ort überprüfen
		if (f.plzort.value == "") {
			fehler.push("Bitte tragen sie PLZ und Ort ein.");
		} 	else {
				if (f.plzort.value.length <= "1") {
					fehler.push("Bitte tragen sie die vollst&auml;ndige PLZ und den Ort ein.");
				}
		  	}
		//Telefon überprüfen
		if (f.telefon.value == "") {
			fehler.push("Bitte tragen sie Ihre Telefonnummer ein.");
		} 	else {
				if (f.telefon.value.length <= "1") {
					fehler.push("Bitte tragen sie Ihre vollst&auml;ndige Telefonnummer ein.");
				}
		  	}
		//eMail überprüfen
		if (f.email.value == "") {
			fehler.push("Bitte tragen sie Ihre eMail Adresse ein.");
		} 	else {
				if (klammeraffe.indexOf("@") < 1) {
			  		fehler.push("Ihre eMail Adresse enth&auml;lt kein @ Zeichen.");
				} 	else {
						var punkt = f.email.value.substring(klammeraffe).indexOf(".");
						if (punkt < 2) {
							fehler.push("Ihre eMail Adresse enth&auml;lt keinen Punkt.");
						}
			  		}
		   	}
		//Date überprüfen
		if (f.date.value == "") {
			fehler.push("Bitte tragen sie das Veranstaltungsdatum ein.");
		} 	else {
				if (f.date.value.length <= "1") {
					fehler.push("Bitte tragen sie das vollst&auml;ndige Veranstaltungsdatum ein.");
				}
		  	}
		//Style überprüfen
		if (f.style.value == "") {
			fehler.push("Bitte tragen sie die Stilrichtung ein.");
		} 	else {
				if (f.style.value.length <= "1") {
					fehler.push("Bitte tragen sie die vollst&auml;ndige Stilrichtung ein.");
				}
		  	}
		//Gage überprüfen
		if (f.gage.value == "") {
			fehler.push("Bitte tragen sie Ihr Gagenangebot ein.");
		} 
		//wenn es Fehler gibt
		if (fehler != "") {
		//wandel das Fehler Array in eine Zeichenkette um und gib sie im div fehlermeldung aus
		fehlerauflistung = fehler.join("<br />");
		document.getElementById("fehlermeldung").style.color = "#EA6846";
		document.getElementById("fehlermeldung").style.fontSize = "1.0em";
		document.getElementById("fehlermeldung").innerHTML = fehlerauflistung;
		return false;
		} 	else {
				//erstellt Request
				createRequest();
				//verschickt Daten
				put();
				//Mitteilung wenn versendet und Felder werden gesperrt
				document.getElementById("fehlermeldung").style.color = "#E39A69";
				document.getElementById("fehlermeldung").style.fontSize = "1.0em";
				document.getElementById("fehlermeldung").innerHTML = "Ihre Bookinganfrage wurden verschickt.";
				document.kontaktformular.name.disabled = true;
				document.kontaktformular.club.disabled = true;
				document.kontaktformular.adresse.disabled = true;
				document.kontaktformular.plzort.disabled = true;
				document.kontaktformular.telefon.disabled = true;
				document.kontaktformular.email.disabled = true;
				document.kontaktformular.date.disabled = true;
				document.kontaktformular.style.disabled = true;
				document.kontaktformular.website.disabled = true;
				document.kontaktformular.gage.disabled = true;
				document.kontaktformular.bemerkung.disabled = true;
				document.kontaktformular.button.disabled = true;
				document.kontaktformular.resetform.disabled = true;
				return false;
			}
} 
	
/*
*
*  Die Standartfunktion, um ein XMLHttpRequest Objekt zu erzeugen
*
*/
function createRequest() {
        // die Rückgabevariable wird am Anfang der Funktion definiert
        // das erhöht die Übersichtlichkeit
	var request = null;
	
	if(window.XMLHttpRequest) {  // alle anderen browser
		try {
			request = new XMLHttpRequest();
		} catch(e) {
		}
	} else if(window.ActiveXObject) {    // IE 6
		try {
		    request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
		    try {         // IE < 6
			    request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
		    	request = null;
			}
		}
	}
	return request;
}
/*
*
*   Diese Funktion ruft die Eingabefelder ab und versendet die Variablen
*
*/
function put() {
	var name = encodeURIComponent(document.kontaktformular.name.value);
	var club = encodeURIComponent(document.kontaktformular.club.value);
	var	adresse = encodeURIComponent(document.kontaktformular.adresse.value);
	var	plzort = encodeURIComponent(document.kontaktformular.plzort.value);
	var	telefon = encodeURIComponent(document.kontaktformular.telefon.value);
	var	email = encodeURIComponent(document.kontaktformular.email.value);
	var	website = encodeURIComponent(document.kontaktformular.website.value);
	var	date = encodeURIComponent(document.kontaktformular.date.value);
	var	style = encodeURIComponent(document.kontaktformular.style.value);
	var	gage = encodeURIComponent(document.kontaktformular.gage.value);
	var	bemerkung = encodeURIComponent(document.kontaktformular.bemerkung.value);
	var request = createRequest();
	if(request) {   // wenn es erfolgreich erstellt wurde
		// für einen POST request wird im requestBody kodierter Text benötigt, JS machts automatisch
		// die Daten, die über den POST Request versand werden sollen
		requestBody = ('name='+name+'&club='+club+'&adresse='+adresse+'&plzort='+plzort+'&telefon='+telefon+'&email='+email+'&website='+website+'&date='+date+'&style='+style+'&gage='+gage+'&bemerkung='+bemerkung);
		//var requestBody = "req=put&form=" + encodedText;
		//die callback funktion. hier als interne Funktion, so dass
		//Aber die entstehende Closure die request Variable in onreadystatechange 
        //erhalten bleibt auch wenn die put Funktion verlassen wird.
		request.onreadystatechange = function() {
            // hier werden der Vollständigkeit halber alle readyStates aufgeführt
            // wirklich wichtig ist nur der readyState 4
			switch(request.readyState) {
				case 0:
					break;
				case 1:
					break;
				case 2:
					break;
				case 3:
					break;
				case 4:     // antwort erhalten
					var response = request.responseText;
					// wenn mit der Dateileseaktion etwas schief gegangen ist, sendet der Server 
                                        // failure: mit einer statusmeldung
                                        // das wird natürlich nicht angezeigt
					if(response.substring(response,0,7) != "failure") {
                                                // die Antwort des Servers wird direkt in das Element 'text'
                                                // hineingeschrieben, da es schon html-formatiert vorliegt
						
						break;
					}
					break;
				default:
					break;
			}
		}
		// die Verbindung zum Server wird ergestellt
		// das http:// ist notwendig, in dem Fall aber nicht ?!?
		// der zweite Parameter gibt an, ob die Anfrage asynchron 
        // gestellt werden soll -> standart für AJAX (Asynchronous Java...)
		request.open("post", "http://www.normanvanthee.com/djsite/send.php", true);        
        // wenn ein requestBody versendet wird, sollten im Header Informationen über den
        // body enthalten sein, in diesem Fall der Typ und die Länge in Bytes
        // application/x-www-form-urlencoded heißt im Klartext: Textdaten aus einem HTML Formular
        // als alternative gibt es multipart/form-data für Dateiuploads
		request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		request.setRequestHeader("Content-length", requestBody.length);
		request.setRequestHeader("Connection", "close");
		// die Daten werden verschickt
		request.send(requestBody);
	}
}
