function validateForm(formObj){err="";for(n=0;n<formObj.elements.length;n++){validate=formObj.elements[n].validate;if(validate!=undefined){elementName="document."+formObj.getAttributeNode("name").value+"."+formObj.elements[n].name;elementValue=formObj.elements[n].value;validateName=formObj.elements[n].validateName;if(validateName==undefined){validateName=formObj.elements[n].name;}
errorText=formObj.elements[n].error;if(errorText==undefined){errorText="-- No detailed error supplied for "+elementName+" but it failed validation test '"+validate+"' --\n";}else{eval("errorText = '"+formObj.elements[n].error.replace(/\'/g,"")+"';");}
if(validate.indexOf(" ")!=-1){validateExtra=validate.substring(validate.indexOf(" ")+1);validateType=validate.substring(0,validate.indexOf(" "));}else{validateType=validate;}
if((elementValue=="")&&(formObj.elements[n].mandatory!=undefined)){err+=validateName+" is a mandatory field.\n";}else{switch(validateType){case "":case "-- none --":break;case "pulldown":selectable=eval(elementName+".options["+elementName+".selectedIndex].validate");if(selectable=="cant select"){err+=errorText+"";}
break;case "date":var regex=/^(?=\d)(?:(?!(?:(?:0?[5-9]|1[0-4])(?:\.|-|\/)10(?:\.|-|\/)(?:1582))|(?:(?:0?[3-9]|1[0-3])(?:\.|-|\/)0?9(?:\.|-|\/)(?:1752)))(31(?!(?:\.|-|\/)(?:0?[2469]|11))|30(?!(?:\.|-|\/)0?2)|(?:29(?:(?!(?:\.|-|\/)0?2(?:\.|-|\/))|(?=\D0?2\D(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|2[0-8]|1\d|0?[1-9])([-.\/])(1[012]|(?:0?[1-9]))\2((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?:$|(?=\x20\d)\x20)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/;if(!regex.test(elementValue)){err+=errorText+"";}
break;case "integer":if((elementValue=="")||(isNaN(elementValue)||(elementValue!=parseInt(elementValue)))){err+=errorText+""}
break;case "blankOrInteger":if((elementValue!="")&&(isNaN(elementValue)||(elementValue!=parseInt(elementValue)))){err+=errorText+""}
break;case "float":if((elementValue=="")||(isNaN(elementValue))){err+=errorText+""}
break;case "blankOrFloat":if((elementValue!="")&&(isNaN(elementValue))){err+=errorText+""}
break;case "text":if(elementValue.length>validateExtra){err+=errorText+"";}
break;case "text>":if(elementValue.length<=validateExtra){err+=errorText+"";}
break;case "match":if(elementValue!=eval("document."+formObj.getAttributeNode("name").value+"."+validateExtra+".value")){err+=errorText+"";}
break;case "email":if(elementValue!=""){var regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;if(!regex.test(elementValue)){err+=errorText+"";}}
break;case "ddmmyyyy":if(elementValue!=""){var regex=/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[-/.](19|20)[0-9]{2}/;if(!regex.test(elementValue)){err+=errorText+"";}}
break;case "checked":if(formObj.elements[n].checked==false){err+=errorText+"";}
break;default:alert("Unknown validation ("+validate+") for object document."+elementName)}}}}
if(err==""){return true;}else{eval("errTitle = '"+formObj.getAttributeNode("error").value+"';");alert(errTitle+"\n"+err);return false;}}
