    //**************************Plausibilitsprüfungen und Farbhinterlegung von Form-Elementen**************
    //
    //    changelog:
    //    22.02.2001; Dipl.-Ing. Michael Binninger; Erstellung
    //
    //    was noch fehlt: Funktionen zur Überprüfung von Datum und Zeit. Gibts auf den MTV AdminSeiten.


    //*****************************Variablen und Funktionen für farbliche Hinterlegung**************

    var color_mark   = "#ff8080";
    var color_unmark = "#ffffff";

    //Hinterlegt input- oder textarea-form mit Farbe aus color_mark
    //und setzt Kursor in das Feld
    function mark(obj)
    {
        eval("document." + obj + ".focus()");      //Kursor in das input-Feld
        domark(obj,color_mark);
    }
    //Macht die Markierung wieder rückgänig. D.h. setzt Farbe auf color_unmark
    function unmark(obj)
    {
        domark(obj,color_unmark);
    }
    //Farbe setzen. Geht nur im IE, und nur wenn die Farbe des Formelements schon in einem Stylesheet angegeben wurde
    function domark(obj,col)
    {
        if(document.getElementById)
        {
            var prop=eval("document." + obj + ".style");
            if(prop)
                prop.backgroundColor = col;

	}else if(document.all)
        {
            var prop=eval("document.all." + obj + ".style");
            if(prop)
                prop.backgroundColor = col;
            else
                alert("Liebe(r) Programmierer(in)\n\nFür das Formelement " + obj + " wurde keine Stylesheetdefinition für die Hintergrundfarbe angegeben.\nDas ist aber erforderlich um im IE die Farbhinterlegung von FormElementen anzusprechen.\n\nViele Gruesse\nmixel");
        }
    }


    //*****************************eigentliche Plausibilitätsprüfungen**********************

    //Prüft, ob Feld nicht leer ist
    function chk_not_empty(obj,message)
    {
        mark(obj);
        if(eval("document." + obj + ".value") == "")
        {
            alert(message);
            return false;
        }
        unmark(obj);
        return true;
    }
    //Prüft (falls<>""), ob String in Feld nicht zu lang ist
    function chk_too_long(obj,limit,message)
    {
        var prop = eval("document."+obj+".value");
        if(prop!="")
        {
            mark(obj);
            if(prop.length>limit)
            {
                alert(message);
                return false;
            }
            unmark(obj);
        }
        return true;
    }
    //Prüft (falls<>""), ob String in Feld nicht zu kurz ist
    function chk_too_short(obj,limit,message)
    {
        var prop = eval("document."+obj+".value");
        if(prop!="")
        {
            mark(obj);
            if(prop.length<limit)
            {
                alert(message);
                return false;
            }
            unmark(obj);
        }
        return true;
    }
    //Prüft (falls <>""), ob Feld eine Zahl enthält
    function chk_is_number(obj,message)
    {
        var prop = eval("document."+obj);
        if(prop.value!="")
        {
            mark(obj);
            n=parseInt(prop.value);
            if(isNaN(n))
            {
                alert(prop.value+"\n"+message);
                return false;
            }
            prop.value=n;
            unmark(obj);
        }
        return true;
    }
    //Prüft (falls<>"" und Feld eine Zahl ist), ob Zahl in Feld nicht zu gross ist
    function chk_too_big(obj,limit,message)
    {
        var prop = eval("document."+obj);
        if(prop.value!="")
        {
            n=parseInt(prop.value)
            if(!isNaN(n))
            {
                mark(obj);
                if(n>limit)
                {
                    alert(n+"\n"+message);
                    return false;
                }
                unmark(obj);
            }
        }
        return true;
    }
    //Prüft (falls<>"" und Feld eine Zahl ist), ob Zahl in Feld nicht zu klein ist
    function chk_too_small(obj,limit,message)
    {
        var prop = eval("document."+obj);
        if(prop.value!="")
        {
            n=parseInt(prop.value)
            if(!isNaN(n))
            {
                mark(obj);
                if(n<limit)
                {
                    alert(n+"\n"+message);
                    return false;
                }
                unmark(obj);
            }
        }
        return true;
    }
    //Prüft (falls <>""), ob Inhalt der beiden Felder gleich ist
    function chk_is_equal(obj1,obj2,message)
    {
        var prop1 = eval("document."+obj1);
        var prop2 = eval("document."+obj2);
        if(prop1.value!="" || prop2.value!="")
        {
            mark(obj1);
            mark(obj2);
            if(prop1.value!=prop2.value)
            {
                alert(message)
                return false;
            }
            unmark(obj1);
            unmark(obj2);
        }
        return true;
    }
    //Prüft (falls <>""), ob Feld nur Kleinbuchstaben enthält
    function chk_is_lowercase(obj,message)
    {
        var s=eval("document." + obj + ".value");
        if(s!="")
        {
            mark(obj);
            if(s != s.toLowerCase())
            {
                alert(s+"\n"+message);
                return false;
            }
            unmark(obj);
        }
        return true
    }
    //Prüft (falls <>""), ob Feld eines der in verboten angegebenen Zeichen enthält
    function chk_forbidden_chars(obj,forbidden,message)
    {
        var s=eval("document." + obj + ".value");
        if(s!="")
        {
            mark(obj);
            for(i=0;i<forbidden.length;i++)
            {
                if(s.indexOf(forbidden.charAt(i)) != -1)
                {
                        alert(forbidden.charAt(i)+"\n"+message);
                        return false;
                }
            }
            unmark(obj);
        }
        return true
    }
    //Hilfsfunktion für chk_is_email und chk_is_url
    //sucht nach verb Zeichen in s
    function verboten(s,verb)
    {
        debug=false;
        for(i=0;i<verb.length;i++)
        {
            if(s.indexOf(verb.charAt(i)) != -1)
            {
                    if(debug)
                        alert(verb.charAt(i)+"\nEs kommt ein verbotenes Zeichen vor");
                    return false;
            }
        }
        return true;
    }

    //Prüft, ob Email
    function chk_is_email(obj,message)
    {
        var s=eval("document." + obj + ".value");
        if(s!="")
        {
            mark(obj);
            ok=true;
            l=s.length;
            if(l<8)
                ok=false;           //zu kurz!
            x=s.indexOf("@",1);     //ist ab der 2.Stelle irgendwo ein @ zu finden?
            if(!(x!=-1 && x<l-6 && ok))
                ok=false;           //und ist @ mindestens 6 Zeichen vor dem Ende?
            if((s.charAt(l-3)!="." && s.charAt(l-4)!=".") || ok==false)
                ok=false;           //ist das 4.- oder 3.letze Zeichen ein Punkt?
            if(s.indexOf("@",x+1)>-1 || ok==false)
                ok=false;           //kommt noch ein zweites @ vor?
            if(!verboten(s," \"<>|µ,;:#'*+^°!%&/$§()=?\~ß}{[]éèäöüÄÖÜêáàâ") || ok==false)
                ok=false;           //email enthält verbotene zeichen
            if(!ok)
            {
                alert(message);
                return false;
            }
            unmark(obj);
        }
        return true
    }




    // Prüfe ob Geburtsdatum im Format TT.MM.YYYY und erst 28J her
    function chk_is_birthdate(obj,message)
    {
       var s=eval("document." + obj + ".value");
       var date_arr = s.split(".");
       var jetzt = new Date();                   //produziert Date-Objekt
       var max_jahr = jetzt.getFullYear();
       max_jahr = max_jahr-30;
       var jetzt = new Date();                   //produziert Date-Objekt
       var max_monat = jetzt.getMonth();
       max_monat = max_monat+1;
       var jetzt = new Date();                   //produziert Date-Objekt
       var max_tag = jetzt.getDate();
       var max_alter = Date.UTC(max_jahr,max_monat,max_tag);
       var eingegebenes_alter = Date.UTC(date_arr[2],date_arr[1],date_arr[0]);


       if(s!="")
       { mark(obj);
         ok = true;

           if(isNaN(date_arr[0]) || isNaN(date_arr[1]) || isNaN(date_arr[2]))
           	    ok=false;
           if (date_arr[0]<1 || date_arr[0]>31)
                     ok=false;
           if (date_arr[1]<1 || date_arr[1]>12)
                     ok=false;
           if (eingegebenes_alter <= max_alter)
              	    { alert ("Es tut uns leid, aber die ClassicCard kann nur bekommen, wer unter 30 Jahren alt ist. Die ClassicCard-Initiatoren freuen sich auch weiterhin auf Ihren Besuch.");
                         ok=false; }
	  if (!ok)
            	    { alert (message);
               	       return false; }
         unmark(obj);
       }
       return true
    }


    //Prüfe, ob URL (ohne http://)
    function chk_is_url(obj,message)
    {
        var s=eval("document." + obj + ".value");
        if(s!="")
        {
            debug=false;

            mark(obj);
            ok=true;
            l=s.length;
            if(l<6)
                ok=false;           //zu kurz!
            if(!ok && debug) alert("zu kurz l="+l);
            x=s.indexOf("/",6)      //kommt ab 7.Stelle in / vor?
            if(x==-1)
                x=l;                //Nein, dann ist sind wir schon am ende
            if(!ok && debug) alert("x="+x);
            if((s.charAt(x-3)!="." && s.charAt(x-4)!=".") || ok==false)
                ok=false;           //ist das 4. oder 3.letze Zeichen vor Ende oder / ein Punkt?
            if(!ok && debug) alert("x-3="+(x-3)+" bzw x-4="+(x-4)+" ist kein Punkt sondern "+s.charAt(x-3)+ " "+s.charAt(x-4) );
            if(s.lastIndexOf("/",x-1)!=-1 || ok==false)
                ok=false;           //kommt im Domainnamen ein / vor. Darf nicht sein
            if(!ok && debug) alert("im Domainnamen kommt ein / vor");
            if(!verboten(s," \"<>|µ,;:@#'*+^°!&$§()\~ß}{[]éèäöüÄÖÜêáàâ") || ok==false)
                ok=false;           //url enthält verbotene zeichen
            if(!ok && debug) alert("Es kommt ein verbotenes Zeichen vor ");
            if(!ok)
            {
                alert(message);
                return false;
            }
            unmark(obj);
        }
        return true
    }
    //Prüfe, es mit x.gif oder x.jpg oder x.GIF oder x.JPG aufhört
    function chk_is_pic(obj,message)
    {
        var s=eval("document." + obj + ".value");
        if(s!="")
        {
            mark(obj);
            l=s.length;
            s=s.toLowerCase();
            ok=false;
            if((s.charAt(l-5)>='a' && s.charAt(l-5)<='z') || (s.charAt(l-5)>='0' && s.charAt(l-5)<='9'))
                ok=true;     //vor dem Punkt muss mindestens ein Buchstabe kommen
            s=s.substring(l-4,l);
            if(s!=".gif" && s!=".jpg" || !ok)
            {
                alert(message);
                return false;
            }
            unmark(obj);
        }
        return true
    }
    //meckert wenn es kein IE ist
    function chk_IE(message)
    {
        if((!document.all) || (!document.getElementById))
            document.write(message);
    }