
function checkAndSendForm(formId,errorClass,correctClass, theFormDivName, theStatusDivName, messageOnSucces, messageOnFailure,thisExtranetEmail){
    
	// alert('debug3');
	
	//alert('formId' + formId + 'theFormDivName,' + theFormDivName + 'theStatusDivName' + theStatusDivName + 'messageOnSucces' + messageOnSucces + 'messageOnFailure' + messageOnFailure + 'thisExtranetEmail' + thisExtranetEmail)
	
	// Don't submit unless all criteria are met.
    var retVal = false; 
    var err=errorClass;
    var ok = correctClass;
    var form = document.getElementById(formId);
    if(form){
        for(attr in form){
            if(attr.indexOf('_')==0){
                checkField(form[attr],'err','ok');
            }
        }
        //eval('var phf = function(){ emailForm("'+formId+'","'+theFormDivName+'","'+theStatusDivName+'","'+messageOnSucces+'","'+messageOnFailure+'","'+thisExtranetEmail+'");}');
        //alert('posthook: ' + phf);
        dwr.engine.beginBatch();        
        emailForm(formId, theFormDivName, theStatusDivName, messageOnSucces, messageOnFailure, thisExtranetEmail);
        dwr.engine.endBatch();
        retVal = true;
    }    
    return retVal;
}

function handleFieldChecked(serverData,field,errorClass, correctClass){    
    if(serverData){
        field.correct=true;
        field.pending=false;
        field.className=correctClass;
    }else{
        field.correct=false;
        field.pending=false;
        field.className=errorClass;
    }
    return serverData;
}

function checkField(theField,errorClass,correctClass){
    var retVal=false;
    var bits = theField.name.split(/_/g);
    if(bits.length>1){
        theField.pending=true;
        var checkType;
        if(document.all){
            checkType = objectEval(bits[0]);
        }else{    
            checkType = objectEval(bits[1]);
        }
        var curField = theField;
        var err = errorClass;
        var ok  = correctClass;
        var fieldHandlerProxy =  function(dataFromServer){     
            return handleFieldChecked(dataFromServer,curField,err,ok);
        }                
        FormCheck.checkFormField(checkType,objectEval('"' + curField.value + '"'),fieldHandlerProxy);
    }else{
        theField.className=errorClass;
    }
    return retVal;
}

function notifyUser(dataFromServer,theFormDivName,theStatusDivName, messageOnSuccess, messageOnFailure){
    var theStatusDiv = $(theStatusDivName);
    var theFormDiv = $(theFormDivName);    
    if(dataFromServer){
        theStatusDiv.innerHTML=messageOnSuccess ;        
    }else{
        theStatusDiv.innerHTML=messageOnFailure;
    }
    Element.hide(theFormDiv);
    $(theStatusDivName).removeClassName("invisible");
    //Element.show(theStatusDiv);
}

function notifyUserOfError(dataFromServer,theFormDivName,theStatusDivName){
    if(dataFromServer){
        var theStatusDiv = $(theStatusDivName);
        var theFormDiv = $(theFormDivName);
        theStatusDiv.innerHTML=dataFromServer ;
        Element.hide(theFormDiv);
        $(theStatusDivName).removeClassName("invisible");
        //Element.show(theStatusDiv);
    }
}

function emailForm(theFormName, theFormDivName, theStatusDivName, messageOnSucces, messageOnFailure,thisExtranetEmail){
	
    dwr.engine.setPostHook(undefined);
    var retVal = true;
    var theForm = document.forms[theFormName];

    for(attr in theForm){
        if(attr.indexOf('_')==0){
            if(theForm[attr].value!="" && (theForm[attr].correct == undefined || !theForm[attr].correct)){                   
                retVal = false;
            }
        }
    }

    if(!retVal){
        alert('U heeft een veld niet goed ingevuld. Het veld is rood gemarkeerd. De velden die u wel goed ingevuld heeft zijn groen gemarkeerd. ...');
    }else{

        var list = {};
        var fieldAdded = false;
        
        var fields = $$("input.ok");
        if(fields.length > 0){
            for(var i = 0; i < fields.length; i++){
                if(fields[i].value != null && fields[i].value != ''){
                    list[fields[i].name]=fields[i].value;
                    fieldAdded = true;
                }
            }
        }
        if(fieldAdded){
            try{
                Element.hide($(theFormDivName));            
                $(theStatusDivName).innerHTML="<p>Uw aanvraag wordt verzonden. Een moment geduld a.u.b.</p><br><br><br>";
                //Element.show($(theStatusDivName));
                $(theStatusDivName).removeClassName("invisible");
                eval('var tempHandler = function(dataFromServer) { '+
                                        'return notifyUser(dataFromServer, "' +
                                                            theFormDivName + '", "' + theStatusDivName + '","' +
                                                            messageOnSucces + '","' +
                                                            messageOnFailure + '"); } ');
                eval('var tempErrHandler = function(message) { '+
                                        'return notifyUserOfError(message, "' +
                                                            theFormDivName + '", "' + theStatusDivName + '","' +
                                                            messageOnFailure + '"); } ');
																
                MailForm.sendForm(list,'OK','NOT OK',thisExtranetEmail,{callback:tempHandler,timeout:10000,errorHandler:tempErrHandler});
            }catch(e){
                $(theStatusDivName).addClassName("invisible");
                //Element.hide($(theStatusDivName));
                Element.show($(theFormDivName));
            }
        }else{
            alert("U heeft geen drukwerk gekozen om te bestellen.");
        }
    }
    return retVal;
}

function checkemail(str){
    var testresults
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(str))
        return true;
    else{
        alert("Geen geldig email adres!");
        return false;
    }
}

