/*
    (c) 1996-2005 TEM, VPSCash, Islive
*/

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 "invalid email";
        else
            return "invalid email";
    }
    at=email.indexOf('@');
    if(at==0)
        return "invalid email";
    else if(at==-1)
        return "invalid email";
    c=email.charAt(at+1).toLowerCase();
    if((c<'a'||c>'z')&&(c<'0'||c>'9'))
        return "invalid email";
    if(email.indexOf('..',at)!=-1)
        return "invalid email";
    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 "the e-mail is invalid: '"+c+"'";
    }
    pos=email.lastIndexOf('.');
    if(pos==-1)
        return "the domainname is incorrect";
    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("Bug: '"+elementName+"' does not exist in the form.");
            return false;
        }

        if(form[elementName].type){

            elementType = form[elementName].type.split('-').shift();

            switch(elementType) {
                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){

            elementType = form[elementName][0].type.split('-').shift();

            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) {
            elem = (elementType == 'radio') ? form[elementName][0] : form[elementName];
            displayName = (elem.title) ? elem.title : (elem.id) ? elem.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="The field "+nietIngevuld+" is empty";
    else if(aantal > 0) {
        var lastcomma=nietIngevuld.lastIndexOf("\n");
        nietIngevuld=nietIngevuld.substring(0,lastcomma)+"\nand '"+nietIngevuld.substring(lastcomma+2,nietIngevuld.length) + "'";
        melding="Warning!\n The details of:\n"+nietIngevuld+" are missing.";
    }
    if (wrongEmail){
        melding+="\nThis e-mail is incorrect: "+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;
}
