// Marker der Felder, die bereits mit Fehlermeldung besetzt sind.
var exist = new Array();
function validate(id, type, defaultValue) {
    var validation = true;

    // Prüfen, ob Feld ausgefüllt wurde.
    if ($("#contact_" + id).val() == "" || $("#contact_" + id).val() == defaultValue) {
	if (!exist[id]) {
	    // Fehlermeldung setzen und merken
	    exist[id] = true;
	    $("#contact_" + id).css({border:'1px solid #ff0000'});
	    validation = false;
	    return false;
	}
    } else {
	// Fehlermeldung zurücksetzen und löschen aus Array
	$("#contact_" + id).css({border:'1px solid #000'});
	exist[id] = false;
	validation = true;
    }
    
    // Prüfen, ob Feld richtiges Format aufweist
    $("#contact_" + id).filter(function() {
	var regex = /^(.*)$/;
	// Pattern zusammenstellen, bei null als Parameter wird keine Typ-Überprüfung vorgenommen.
	switch (type) {
	    case "string":
		var regex = /^[a-zA-ZüäöÜÄÖ]+$/;
		break;
	    case "int":
		var regex = /^-?\d+$/;
		break;
	    case "email":
		var regex = /^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{2,5}$/;
		break;
	}
	

	// Fehlermeldung erzeugen
	if (!regex.test(this.value)) {
	    if (!exist[id]) {
		exist[id] = true;
		$("#contact_" + id).css({border:'1px solid #ff0000'});
		validation = false;
	    } 
	} else {
	    // Fehlermeldung zurücksetzen und löschen aus Array
	    $("#contact_" + id).css({border:'1px solid #000'});
	    exist[id] = false;
	    validation = true;
	}
    });
    return validation;
}

function validateSelect(id) {
    if ($("#contact_" + id).val() == "fail") {
	if (!exist[id]) {
	    $("#contact_" + id).css({border:'1px solid #ff0000'});
	    exist[id] = true;
	}
	return false;
    } else {
	$("#contact_" + id).css({border:'1px solid #000'});
	exist[false] = true;
	return true;
    }
}

function sendForm() {
    var check = true;
    if (!validate("name", "string", "Name")) {
	check = false;
    }
    if (!validate("firstname", "string", "Vorname")) {
	check = false;
    }
    if (!validate("email", "email", "E-Mail")) {
	check = false;
    }
    if (!validateSelect("subject")) {
	check = false;
    }
    if (!validate("body", "null", "Nachricht")) {
	check = false;
    }
    if (check == true) {
	$.ajax({
	    url: "/home/contact",
	    type: "POST",
	    data: "name=" + $("#contact_name").val() + "&firstname=" + $("#contact_firstname").val() + "&email=" + $("#contact_email").val() + "&subject=" + $("#contact_subject").val() + "&body=" + $("#contact_body").val(),
	    success: function(callback) {
		$("#homeContact").fadeOut(1000);
		if (callback == "true") {
		    $("#form-response").after("<p class='ajax-contact success center'>Vielen Dank für Ihre Kontaktanfrage. Sie werden in Kürze eine Antwort von uns erhalten.</p>");
		} else {
		    $("#form-response").after("<p class='ajax-contact error center'>Leider konnte die Nachricht nicht versendet werden. Bitte benutzen Sie unser anderes <a href='/kontakt' title='Zum Kontaktformular'>Kontaktformular</a>.</p>");
		}
	    }
	});
    }
    return false;
}
