// Copyright 1998 Telegraaf Elektronische Media

// Author: Edwin Martin

// 1.0   ( 9 maart 98): first release

// 1.1   (13 maart 98): added e-mail check

// 1.2   ( 2 april 98): radiobuttons supported

// 1.3   ( 4 juni  98): geen komma's in e-mail adres (compuserve) en wat kleine verbeteringen

// 1.4   ( 5 juni  98): MSIE 3.02 hack

// 1.5   ( 8 juni  98): MSIE 4 reparatie

// 1.6   (15 juni  98): cijfer achter '@' weer mogelijk

// 1.7   (14 dec   98): domain .cc toegevoegd

var form;

var req;

var nonfilled;



function checkEmail(email){

    var at;

    var c;

    var pos;

    if(email.indexOf(',')!=-1){

        if(email.toLowerCase().indexOf('compuserve.com')!=-1)

            return "in een compuserve-adres dient u de komma's door punten te vervangen";

        else

            return "een e-mail adres mag geen komma's bevatten";

    }

    at=email.indexOf('@');

    if(at==0)

        return "er staat niets voor het @-teken";

    else if(at==-1)

        return "een e-mail adres hoort een @-teken te bevatten";

    c=email.charAt(at+1).toLowerCase();

    if((c<'a'||c>'z')&&(c<'0'||c>'9'))

        return "achter het @-teken hoort een letter of cijfer te staan";

    if(email.indexOf('..',at)!=-1)

        return "achter het @-teken staan twee punten achter elkaar";

    for(pos=at+1;pos<email.length;pos++){

        c=email.charAt(pos).toLowerCase();

        if((c<'a'||c>'z')&&(c<'0'||c>'9')&&c!='.'&&c!='-')

            return "het e-mail adres bevat het ongeldige teken '"+c+"'";

    }

    pos=email.lastIndexOf('.');

    if(pos==-1)

        return "de domeinnaam bevat geen punt";

    c=email.substring(pos+1,email.length);

    return null;

}



function formCheck(theForm, required) {

    var firstc=0;

    var lastc=0;

    var verder=true;

    var nietIngevuld='';

    var melding='';

    var aantal=0;

    var filled=true;

    var elementName;

    var email=null;

    var wrongEmail=null;

    var emailFirst=false;

    var req = (typeof required == 'string') ? required : required.value;

    form = theForm;

    nonfilled=null;



    while(verder){

        lastc=req.indexOf(',',lastc+1);

        if(lastc==-1){

             lastc=req.length;

             verder=false;

        }

        if(req.charAt(firstc)==' ')

            firstc++;

        elementName=req.substring(firstc,lastc);

        if(!form[elementName]){

            alert("Foutje van de webmaster: '"+elementName+"' komt niet in het fomulier voor.");

            return false;

        }

        if(form[elementName].type){

            switch(form[elementName].type) {

                case 'select':

                    filled=form[elementName].selectedIndex>0;

                    break;

                case 'checkbox':

                    filled=form[elementName].checked;

                    break;

                default:

                    filled=form[elementName].value != '' && form[elementName].value.substring(0,1) != '?';

                    if (elementName.toLowerCase()=='e-mail' || elementName.toLowerCase()=='email' ||

                        elementName.indexOf('email') > 0) {

                        email=elementName;

                        emailFirst=!nonfilled;

                    }

                    break;

            }

        }else if(form[elementName].length){

            var radioCheck=false;

            for(var i=0;i<form[elementName].length;i++){

                if(form[elementName][i].checked)

                    radioCheck=true;

            }

            filled=radioCheck;

        }else

            return true; // MSIE 3.02 hack

        if(!filled){



            if (form[elementName].length) {

                displayName = (form[elementName][0].title) ? (form[elementName][0].title) : (form[elementName][0].id) ? form[elementName][0].id : elementName

            } else {

                displayName = (form[elementName].title) ? (form[elementName].title) : (form[elementName].id) ? form[elementName].id : elementName;

            }



            if(!nonfilled)

                nonfilled = elementName;



            if(aantal > 0)

                nietIngevuld +="\n";



            nietIngevuld += "- " + displayName;

            aantal++;

        }

        firstc=lastc+1;

    }

    if (email && form[email].value != '' )

        wrongEmail = checkEmail(form[email].value);

    if (aantal == 1)

        melding="Het veld "+nietIngevuld+" is nog niet ingevuld";

    else if(aantal > 0) {

        var lastcomma=nietIngevuld.lastIndexOf("\n");

        nietIngevuld=nietIngevuld.substring(0,lastcomma)+"\nen '"+nietIngevuld.substring(lastcomma+2,nietIngevuld.length) + "'";

        melding="Waarschuwing!\n De gegevens voor:\n"+nietIngevuld+" zijn nog niet ingevuld.";

    }

    if (wrongEmail){

        melding+="\nDit e-mail adres is niet juist ingevuld: "+wrongEmail;

    }

    if (wrongEmail||aantal>0)

        alert(melding+".");

    if (aantal > 0 && !(wrongEmail && emailFirst) && form[nonfilled].type) {

        switch(form[nonfilled].type) {

            case 'select':

                form[nonfilled].focus();

                setTimeout("form[nonfilled].blur();",100);

                setTimeout("form[nonfilled].focus();",200);

                setTimeout("form[nonfilled].blur();",300);

                setTimeout("form[nonfilled].focus();",400);

                break;

            case 'checkbox':

                form[nonfilled].focus();

                break;

            case 'radio':

                form[nonfilled][0].focus();

                break;

            case 'file':

                form[nonfilled].focus();

                break;

            default:

                form[nonfilled].value='   <  <  <';

                setTimeout("form[nonfilled].value='  <  <  <';",200);

                setTimeout("form[nonfilled].value=' <  <  <';",400);

                setTimeout("form[nonfilled].value='<  <  <';",600);

                setTimeout("form[nonfilled].value='';form[nonfilled].focus();",800);

                break;

        }

    } else if(wrongEmail){

        form[email].select();

        form[email].focus();

    }

    return aantal==0&&!wrongEmail;

}





