//###########################################################################
//###########################################################################	  
//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 Vornamen ein.");
		} 	else {
				if (f.name.value.length <= "1") {
					fehler.push("Bitte tragen sie Ihren vollst&auml;ndigen Namen ein.");
				}
		  	}
		//Betreff überprüfen
		if (f.betreff.value == "") {
			fehler.push("Bitte tragen sie einen Betreff ein.");
		} 	else {
				if (f.betreff.value.length <= "1") {
					fehler.push("Bitte tragen sie einen vollst&auml;ndigen Betreff ein.");
				}
		  	}
		//Content überprüfen
		if (f.content.value == "") {
			fehler.push("Bitte tragen sie ihren Content ein.");
		} 	else {
				if (f.content.value.length <= "1") {
					fehler.push("Bitte tragen sie einen vollst&auml;ndigen Content 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.");
						}
			  		}
		   	}
		//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 = "0.8em";
		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 = "#251F13";
				document.getElementById("fehlermeldung").style.fontSize = "1.0em";
				document.getElementById("fehlermeldung").innerHTML = "Ihre Daten wurden verschickt.";
				document.kontaktformular.name.value = "";
				document.kontaktformular.name.disabled = true;
				document.kontaktformular.betreff.value = "";
				document.kontaktformular.betreff.disabled = true;
				document.kontaktformular.content.value = "";
				document.kontaktformular.content.disabled = true;
				document.kontaktformular.email.value = "";
				document.kontaktformular.email.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 betreff = encodeURIComponent(document.kontaktformular.betreff.value);
	var	content = encodeURIComponent(document.kontaktformular.content.value);
	var	email = encodeURIComponent(document.kontaktformular.email.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+'&betreff='+betreff+'&content='+content+'&email='+email);
		//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\", \"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);
	}
}