// Author Stephen Poley
var nbsp=160;
var node_text=3;
var emptyString=/^\s*$/;
var global_valfield;

// Trim leading/trailing whitespace off string
function trim(str){return str.replace(/^\s+|\s+$/g,'');}

// Delayed focus setting to get around IE bug
function setFocusDelayed(){global_valfield.focus();}
function setfocus(valfield){global_valfield=valfield;setTimeout('setFocusDelayed()',100);} //save valfield in global variable - routine exits

// Display warn/error message in HTML element.
function msg(fld,msgtype,message){var dispmessage;if(emptyString.test(message))dispmessage=String.fromCharCode(nbsp);else dispmessage=message;var elem=document.getElementById(fld);elem.firstChild.nodeValue=dispmessage;elem.className=msgtype;}

// Common code for all validation routines to:
var proceed=2;
function commonCheck(valfield,infofield,required){if(!document.getElementById)return true;var elem=document.getElementById(infofield);if(!elem.firstChild)return true;if(elem.firstChild.nodeType!=node_text)return true;if(emptyString.test(valfield.value)){if(required){msg(infofield,"error","Error");setfocus(valfield);return false;}else{msg(infofield,"warn","");return true;}}return proceed;}

// Validate if something has been entered
function validatePresent(valfield,infofield){var stat=commonCheck(valfield,infofield,true);if(stat!=proceed)return stat;msg(infofield,"warn","");return true;}

// Validate if e-mail address
function validateEmail(valfield,infofield){var stat=commonCheck(valfield,infofield,true);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var email=/^[^@]+@[^@.]+\.[^@]*\w\w$/;if(!email.test(tfld)){msg(infofield,"error","Onjuist emailadres");    setfocus(valfield);return false;}var email2=/^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/;if(!email2.test(tfld))msg(infofield,"warn","Vreemd emailadres");else msg(infofield,"warn","");return true;}

// Validate person's age
function validateAge(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var ageRE=/^[0-9]{4}$/;if(!ageRE.test(tfld)){msg(infofield,"error","Onjuiste invoer");setfocus(valfield);return false;}if(tfld<1870||tfld>2011){msg(infofield,"error","Foutieve leeftijd");setfocus(valfield);return false;}if(tfld<1907)msg(infofield,"warn","Leeftijd juist?");else{if(tfld>1987)msg(infofield,"warn","Leeftijd juist?");else msg(infofield,"warn","");}return true;}

function validateMonth(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var ageRE=/^(([1-9])|(0[1-9])|(1[0-2]))$/;if(!ageRE.test(tfld)){msg(infofield,"error","Onjuiste invoer");setfocus(valfield);return false;}if(tfld<1||tfld>12){msg(infofield, "error", "Geen maand");setfocus(valfield);return false;}else{msg(infofield,"warn","");}return true;}

function validateYear(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var ageRE=/^((1[9])|(2[0]))[0-9]{2}$/;if(!ageRE.test(tfld)){msg(infofield, "error","Onjuiste invoer");setfocus(valfield);return false;}if(tfld<1900||tfld>2011){msg(infofield,"error","error: Onjuist jaartal");setfocus(valfield);return false;}if(tfld<1954)msg(infofield,"warn","Jaartal juist?");else{msg(infofield,"warn","");}return true;}

function validateString2(valfield,infofield){var stat=commonCheck(valfield,infofield,true);if(stat!=proceed)return stat;var tfld=trim(valfield.value);if(tfld.length<2){msg (infofield,"error","Min. 2 karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateString8(valfield,infofield){var stat=commonCheck(valfield,infofield,true);if(stat!=proceed)return stat;var tfld=trim(valfield.value);if(tfld.length<8){msg(infofield,"error","Min. 8 karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateString6(valfield,infofield){var stat=commonCheck(valfield,infofield,true);if(stat!=proceed)return stat;var tfld=trim(valfield.value);if(tfld.length<6){msg(infofield,"error","Min. 6 karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateText(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var text=/^[\x00-\xff]+$/;if(!text.test(tfld)){msg(infofield,"error","Onjuiste karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateTags(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var text=/^[\w\s\x2B\x2C\x2D\x2E]+$/;if(!text.test(tfld)){msg(infofield,"error","Onjuiste karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateNLpostcode(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);var text=/[1-9][0-9]{3}[a-zA-Z]{2}/;if(!text.test(tfld)){msg(infofield,"error","Onjuiste karakters");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}

function validateFile(valfield,infofield,required){var stat=commonCheck(valfield,infofield,required);if(stat!=proceed)return stat;var tfld=trim(valfield.value);if((tfld.value.length==0)||(tfld.value==null)){msg(infofield,"error","Error");setfocus(valfield);return false;}else msg(infofield,"warn","");return true;}
