/* Validierungsfunktionen

created by A@OG 02/2003
updated 04/2003
///////////////////  für nicht zu prüfende Funktion bitte "no" oder "0" eingeben  /////////////////////////////////////

0 = Pflichtfeld 
1 = Maximale Wortzahl
2 = Maximale Zeichenzahl
3 = Email
4 = Feldbezeichnung in Fehlerausgabe

Beispiel: conf["Feldname"] = new Array("no", "1", "10", "0");
=> Das Feld "Feldname" ist kein Pflichtfeld , darf maximal 1 Wort haben und maximal 10 Zeichen. Außerdem wird keine email-Validierung vorgenommen.

*/

var conf = new Array();				// Welche Felder sollen mit welchen Validierungen überprüft werden
conf["angebotsform"] = new Array("1", "no", "no", "no", "Angebotsform");
conf["aktion"] = new Array("1", "no", "no", "no", "gewünschte Aktion");
conf["teilnehmer"] = new Array("1", "no", "no", "no", "Teilnehmerzahl");
conf["name"] = new Array("1", "no", "no", "no", "Name");
conf["vorname"] = new Array("1", "no", "no", "no", "Vorname");
conf["email"] = new Array("1" , "no", "no", "1", "E-Mail");
conf["strasse"] = new Array("1" , "no", "no", "no", "Straße");
conf["ort"] = new Array("1", "no", "no", "no", "Ort");
conf["telefon"] = new Array("1", "no", "no", "no", "Telefonnummer");
conf["nachricht"] = new Array("1" , "no", "no", "no", "Nachricht");
conf["einverstaendnis"] = new Array("1", "no", "no", "no", "Teilnahmebedingungen");
conf["captcha"] = new Array("1", "no", "no", "no", "Spamschutz");

function isInvalidEmail(field) { // email check funktion

    var validEmail = field.value.match(/^([a-zA-Z0-9_\.\-])+\@((([a-zA-Z0-9\-]{1,99})+\.)*)+(([a-zA-Z0-9\-]{2,99})+\.)+([a-zA-Z0-9]{2,4})+$/);

    if (validEmail){
        return false;
    } else {
        return true;
    }
}

function isEmpty(field) {
    switch (field.type) {
        case "checkbox":
            if (field.checked) {
                return false;
            }
            else {
                return true;
            }
            break;
        case "text":
        default:
            if (field.value == ''){
                return true;
            }
            else {
                return false;
            }
            break;
    }
}

function checkCountWords(configuration, field) {// Wortzahl aus Element auslesen
    matchTable=field.value.match(/\w+/g);
    var zahl = matchTable?matchTable.length:0;
    return zahl > configuration;
}
		
function checkMaxLength(configuration, field){//  Buchstabenzahl aus Element lesen
    return field.value.length > configuration;
}

function validate(configuration) {
    var validate = false;

    if (configuration != "no" && configuration != "0") {
        validate = true;
    }

    return validate;
}

function getDisplayName(configuration, field) {
    var result;

    if (configuration != "")
        result = configuration;
    else
        result = field.name

    return result;
}

function doSubmitAction(tform) {
    var result = true;

    if (tform.elements["doAction"].value == "submit") {
        result = doValidForm(tform);
    }

    return result;
}

function doValidForm (tform) {// Start Validfunktion
    var valtext = "";
    
    for (var i in conf) {
        for (var v = 0; v < conf[i].length ; v++) {
            switch(v) {
                case 0:// Muß ausgefüllt sein !!!
                    if (validate(conf[i][v])) {
                        if (isEmpty(tform.elements[i])) // checkt ob Feld ausgefüllt ist
                        {
                            valtext = valtext + "Pflichtfeld " + getDisplayName(conf[i][4], tform.elements[i])  + " bitte ausfüllen.\n";
                            tform.elements[i].style.backgroundColor = '#FFC8C8';
                        }
                        else {
                            tform.elements[i].style.backgroundColor = 'white';
                        }
                    } // endif
                    break;
                case 1:// Max Wortzahl!!!
                    if (validate(conf[i][v])){
                        if (checkCountWords(conf[i][v], tform.elements[i])) // check Wortzahl
                        {
                            valtext = valtext + "Maximale Wortzahl von " + conf[i][v] + " in Feld " + getDisplayName(conf[i][4], tform.elements[i]) + " überschritten\n";
                            tform.elements[i].style.backgroundColor = '#FFC8C8';
                        } //endif
                        else {
                            tform.elements[i].style.backgroundColor = 'white';
                        }
                    } //endif
                    break;
                case 2:// Max Buchstabenzahl!!!
                    if (validate(conf[i][v])){
                        if (checkMaxLength(conf[i][v], tform.elements[i])) // check Buchstabenzahl
                        {
                            valtext = valtext + "Maximale Zeichenzahl von " + conf[i][v] + " Zeichen in Feld " +  getDisplayName(conf[i][4], tform.elements[i]) + " überschritten\n";
                            tform.elements[i].style.backgroundColor = '#FFC8C8';
                        } //endelse
                        else {
                            tform.elements[i].style.backgroundColor = 'white';
                        }
                    } //endif
                    break;
                case 3:// Emailvalidate!!!
                    if (validate(conf[i][v])){
                        if (isInvalidEmail(tform.elements[i])) {// check Email
                            valtext = valtext + "Bitte eine gültige E-Mail-Adresse in Feld " +  getDisplayName(conf[i][4], tform.elements[i]) + " angeben.\n"
                            tform.elements[i].style.backgroundColor = '#FFC8C8';
                        }
                        else {
                            tform.elements[i].style.backgroundColor = 'white';
                        }
                    } //endif
					
                    break;
            } //endswitch
        } // close innerfor
    } // close outerfor

    if(valtext=="")
    {
        //alert("Validation erfolgreich abgeschlossen");
        return true;
    }
    else
    {
        alert(valtext);
        return false;
    }
} // close func


