/***************************************
Stellt Routinen zur Überprüfung von Formulareingaben
zur Verfügung
(c) Landschaftsverband Westfalen-Lippe
    IT-Zentrum, 48133 Münster, Germany
***************************************/

function nurErlaubteZeichen(erlaubt, aString) {
    for (i=0; i<aString.length; i++) {
        ch=aString.charAt(i);
        for(j=0; j<erlaubt.length; j++)
            if(ch==erlaubt.charAt(j))
                break;
        if(j==erlaubt.length)
            return(false);
    }
    return(true);
}

function nurErlaubteZeichenMitFehlertext(einFeld,erlaubt, aString) {
    for (i=0; i<aString.length; i++) {
        ch=aString.charAt(i);
        for(j=0; j<erlaubt.length; j++)
            if(ch==erlaubt.charAt(j))
                break;
        if(j==erlaubt.length){
            alert("Nicht erlaubte Zeichen eingegeben. Erlaubt sind:\""+erlaubt+"\".");
            einFeld.focus();
            return(false);
        }
    }
    return(true);
}

function trim(aString){
    while(aString.substring(aString.length-1,aString.length)==" ")
        aString=aString.substring(0,aString.length-1);
    while(aString.substring(0,1)==" ")
        aString=aString.substring(1,aString.length);
    return(aString);
}

function etwasEingegeben(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld && einFeld.value.length==0) {
        alert("Bitte geben Sie im Feld \""+bezeichnung+"\" etwas ein.");
        einFeld.focus();
        return(false);
    }
    return(true);
}

function pruefePositiveGanzzahl(einFeld, bezeichnung, pflichtfeld) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if(!nurErlaubteZeichen("0123456789",einFeld.value)) {
        alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" nur eine positive Ganzzahl ein!");
        einFeld.focus();
        return(false)
    }
    return(true);
}


function pruefePositiveGanzzahlVonBis(einFeld, bezeichnung, pflichtfeld, von, bis) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!pruefePositiveGanzzahl(einFeld, bezeichnung, pflichtfeld)) return(false);
        wert=parseInt(einFeld.value,10);
        if(wert<von||wert>bis) {
            alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" nur Werte von "+von+" bis "+bis+" ein!");
            einFeld.focus();
            return(false)
        }
    }
    return(true);
}


function pruefeTextfeld(einFeld, bezeichnung, pflichtfeld, minLaenge) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if((pflichtfeld>0 || einFeld.value.length>0) && einFeld.value.length<minLaenge) {
        alert("Bitte geben Sie im Feld \""+bezeichnung+"\" mindestens "+minLaenge+" Zeichen ein.");
        einFeld.focus();
        return(false);
    }
    return(true);
}

function pruefeDatum(einFeld, bezeichnung, pflichtfeld, zukuenftigErlaubt) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if(!pflichtfeld && einFeld.value.length==0) return(true);
    var ok=true;
    if(!nurErlaubteZeichen("0123456789. ",einFeld.value))
        ok=false
    else {
        var s="00";
        for(i=0; i<einFeld.value.length; i++)
            // Leerzeichen entfernen
            if(einFeld.value.charAt(i)!=" ")
                s=s+einFeld.value.charAt(i);
        // den String in tag, monat, jahr zerlegen
        s="00"+einFeld.value;
        pos1=s.indexOf(".");
        pos2=s.indexOf(".",pos1+1);
        if(pos1<0 || pos2<0 || pos2>s.length-2)
            ok=false
        else {
            jahr=parseInt(s.substring(pos2+1,s.length),10);
            if(jahr<100) {
                if(jahr<=20)
                    jahr=2000+jahr
                else
                    jahr=1900+jahr;
            }
            tag=parseInt(s.substring(pos1-2,pos1),10);
            s="00"+s.substring(pos1+1,s.length);
            pos2=s.indexOf(".");
            monat=parseInt(s.substring(pos2-2,pos2),10);
        }
    }
    if(!ok) {
        alert("Bitte geben Sie im Feld \""+bezeichnung+"\" ein Datum in dem Format TT.MM.JJJJ ein.");
        einFeld.focus();
        return(false);
    }

    // das durch tag, monat, jahr angegebene Datum prüfen
    //(samt Schaltjahr-Regelung)
    if(tag<1 || monat<1 || monat>12)
        ok=false
    else {
        switch(monat) {
            case 2:
                if(jahr%4==0 && (jahr%100!=0 || jahr%400==0))
                    max=29
                else
                    max=28;
                break;
            case 4: max=30; break;
            case 6: max=30; break;
            case 9: max=30; break;
            case 11: max=30; break;
            default: max=31;
        };
        ok=(tag<=max);
    }
    if(!ok) {
        alert("Das in dem Feld \""+bezeichnung+"\" eingegebene Datum ist ungültig.");
        einFeld.focus();
        return(false);
    }

    // liegt das Datum nach dem aktuellen Systemdatum?
    if(!zukuenftigErlaubt) {
        heute=new Date();
        if(jahr>heute.getFullYear())
            ok=false
        else
            if(jahr==heute.getFullYear()) {
                if(monat>heute.getMonth()+1)
                    ok=false
                else {
                    if(monat==heute.getMonth()+1) {
                        // es gibt keine getDayOfMonth-Funktion!
                        if(tag>parseInt(heute.toGMTString().substring(5,7),10))
                            ok=false;
                    }
                }
            }
        if(!ok) {
            alert("Bitte geben Sie im Feld \""+bezeichnung+"\" kein zukünftiges Datum ein.");
            einFeld.focus();
            return(false);
        }
    }
    //alert(tag+"."+monat+"."+jahr);
    return(true);
}


function erweitereDatum(einFeld){
    s=einFeld.value;
    if(s.length>0 && nurErlaubteZeichen("0123456789. ",s)){
        if(s.length<=4 && s.indexOf(".")==-1){
            s="01.01."+s;
        }
        else{
            if(s.indexOf(".",s.indexOf(".")+1)==-1 && s.indexOf(".")!=-1){
                s="01."+s;
            }
        }
    }
    einFeld.value=s;
}

function erweitereDatumReturnwert(einFeld){
    s=einFeld.value;
    if(s.length>0 && nurErlaubteZeichen("0123456789. ",s)){
        if(s.length<=4 && s.indexOf(".")==-1){
            s="01.01."+s;
        }
        else{
            if(s.indexOf(".",s.indexOf(".")+1)==-1 && s.indexOf(".")!=-1){
                s="01."+s;
            }
        }
    }
    return(s);
}

function pruefeEMailAdresse(einFeld, bezeichnung, pflichtfeld) {
    var ok=true;
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
        if(!nurErlaubteZeichen("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._@",einFeld.value)) ok=false;
        // ich bin mir nicht 100%ig sicher das die oben angegebenen Zeichen ausreichen!
        pos=einFeld.value.indexOf("@");
        if((pos<1)||(pos>einFeld.value.length-4)) ok=false;
        pos=einFeld.value.indexOf(".",pos+2);
        if((pos<3)||(pos>einFeld.value.length-2)) ok=false;
        if(!ok) {
            alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" eine gültige E-Mail-Adresse ein!");
            einFeld.focus();
        }
    }
    return ok;
}

function pruefeURL(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || (einFeld.value.length!=0 && einFeld.value!="http://")) {
            einFeld.value=trim(einFeld.value);
        if(pflichtfeld && (einFeld.value.length==0 || einFeld.value=="http://")) {
            alert("Bitte geben Sie im Feld \""+bezeichnung+"\" etwas ein.");
            einFeld.focus();
            return(false);
        }
        s=einFeld.value;
        chars=":=?&"+"\\";
        for(i=0;i<chars.length;i++) {
            pos=s.indexOf(chars.charAt(i));
            while(pos>=0) {
                s=s.substring(0,pos)+s.substring(pos+1,s.length);
                pos=s.indexOf(chars.charAt(i));
            };
        };
        if(s!=escape(unescape(s))) {
            alert("Die in das Feld \""+bezeichnung+"\" eingegebene URL enthält ungültige Leer- oder Sonderzeichen.");
            einFeld.focus();
            return(false);
        }
    }
    return(true);
}

function pruefeTelefonnr(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
        if(!nurErlaubteZeichen("0123456789-/+() ",einFeld.value)) {
            alert("In dem Feld \""+bezeichnung+"\" sind nur Zahlen und die Zeichen / - + ( ) erlaubt!");
            einFeld.focus();
            return(false)
        }
        if(einFeld.value.length<3) {
            alert("Bitte geben Sie im Feld \""+bezeichnung+"\" mindestens 3 Zeichen ein.");
            einFeld.focus();
            return(false);
        }
    }
    return(true);
}

function pruefeListe(eineListe, bezeichnung) {
    if(eineListe.selectedIndex==0) {
        alert("Bitte wählen Sie in der Liste \""+bezeichnung+"\" etwas aus.");
        eineListe.focus();
        return(false);
    }
    return(true);
}
