// JavaScript Document

// ###################################################
// Formular überprüfen								 #
// ###################################################

function pruefen() {
	var f = document.kontaktformular;
	fehler = new Array();
	var aetzeichen = f.email.value;

// Namen ü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!")
			}
		}
			
// E-Mail überprüfen
	if (f.email.value == "") {
		fehler.push("Bitte tragen Sie ihre eMail-Adresse ein!");
		} 	else {
				if (aetzeichen.indexOf("@") < 1) {
			  		fehler.push("Ihre eMail-Adresse enth&auml;lt kein @ Zeichen!");
				} 	else {
						var punkt = f.email.value.substring(aetzeichen).indexOf(".");
						if (punkt < 2) {
							fehler.push("Ihre eMail-Adresse enth&auml;lt keinen Punkt!");
						}
			  		}
		   	}
			
//Betreff überprüfen
	if (f.betreff.value == "") {
			fehler.push("Bitte tragen Sie einen Betreff ein!");
		} 	else {
				if (f.betreff.value.length <= "4") {
				fehler.push("Bitte tragen Sie einen vollst&auml;ndigen Betreff ein!");
				} 	
		 	}
			
//Nachricht überprüfen
	if (f.nachricht.value == "") {
			fehler.push("Bitte tragen Sie eine Nachricht ein!");
		} 	else {
				if (f.nachricht.value.length <= "10") {
				fehler.push("Bitte tragen Sie eine vollst&auml;ndige Nachricht ein!");
				} 	
		 	}
			
// falls es Fehler gibt
	if (fehler != "") {
// das Fehler-Array wird in eine Zeichenkette umgewandelt & gibt sie in einer div-Fehlermeldung aus
		fehlerauflistung = fehler.join("<br>");
		document.getElementById("fehlermeldung").style.color = "#019cdf";
		document.getElementById("fehlermeldung").style.fontSize = "1.0em";
		document.getElementById("fehlermeldung").innerHTML = fehlerauflistung;
		return false;
	}	 	else {
// erstellt ein Request
				createRequest();
// verschickt die Daten
				put();
// Mitteilung wenn die Daten versendet wurden & daraufhin werden die Eingabefelder gesperrt
				document.getElementById("fehlermeldung").style.color = "black";
				document.getElementById("fehlermeldung").style.fontSize = "1.0em";
				document.getElementById("fehlermeldung").innerHTML = "Vielen Dank Herr/Frau " + " " + f.name.value + ", ihre Nachricht wurde verschickt.";
				document.kontaktformular.name.value = "";
				document.kontaktformular.name.disabled = true;
				document.kontaktformular.email.value = "";
				document.kontaktformular.email.disabled = true;
				document.kontaktformular.website.value = "";
				document.kontaktformular.website.disabled = true;
				document.kontaktformular.betreff.value = "";
				document.kontaktformular.betreff.disabled = true;
				document.kontaktformular.nachricht.value = "";
				document.kontaktformular.nachricht.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) {  // für alle anderen Browser
		try {
			request = new XMLHttpRequest();
		} catch(e) {
		}
	} else if(window.ActiveXObject) {    // für IE 6
		try {
		    request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
		    try {         // für 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	email = encodeURIComponent(document.kontaktformular.email.value);
	var	website = encodeURIComponent(document.kontaktformular.website.value);
	var	betreff = encodeURIComponent(document.kontaktformular.betreff.value);
	var	nachricht = encodeURIComponent(document.kontaktformular.nachricht.value);
	var request = createRequest();
	if(request) {   // wenn es erfolgreich erstellt wurde
// für einen POST-request wird im requestBody kodierter Text benötigt, JS macht das automatisch
// die Daten, die über den POST Request versand werden sollen
		requestBody = ('name='+name+'&email='+email+'&website='+website+'&betreff='+betreff+'&nachricht='+nachricht);
//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 hergestellt
// 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.fraeuleink.de/wordpress/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);
	}
}


