// ----------------------------------------------------------------------
// Javascript form validation routines.
// Author: Stephen Poley
// ----------------------------------------------------------------------
var nbsp = 160; var node_text = 3; var emptyString = /^\s*$/ ; var global_valfield;

//trim
function trim(str) {return str.replace(/^\s+|\s+$/g, '');}

//setfocus
function setFocusDelayed() {global_valfield.focus();}function setfocus(valfield){global_valfield = valfield; setTimeout( 'setFocusDelayed()', 100 );}

//Display Error Message
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;}

//commonCheck
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", "Required"); setfocus(valfield);return false;} else {msg (infofield, "warn", "");return true;}}return proceed;}

//validatePresent
function validatePresent(valfield,  infofield ) { var stat = commonCheck (valfield, infofield, true); if (stat != proceed) return stat; msg (infofield, "warn", ""); return true;}

//validateEmail
function validateEmail  (valfield, infofield, required) { var stat = commonCheck (valfield, infofield, required); if (stat != proceed) return stat; var tfld = trim(valfield.value); var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ; if (!email.test(tfld)) { msg (infofield, "error", "Invalid"); 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", "Invalid email"); else msg (infofield, "warn", ""); return true;}


// Below not used:

//validateTelnr
function validateTelnr  (valfield, infofield, required) {var stat = commonCheck (valfield, infofield, required); if (stat != proceed) return stat; var tfld = trim(valfield.value); var telnr = /^\+?[0-9 ()-]+[0-9]$/  ; if (!telnr.test(tfld)) {msg (infofield, "error", "Invalid number");setfocus(valfield);return false;} var numdigits = 0;for (var j=0; j<tfld.length; j++)if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;if (numdigits<6) {msg (infofield, "error", "ERROR: " + numdigits + " digits - too short"); setfocus(valfield); return false;} if (numdigits>14) msg (infofield, "warn", numdigits + " digits - check if correct"); else {if (numdigits<10) msg (infofield, "warn", "Only " + numdigits + " digits - check if correct"); else msg (infofield, "warn", "");}return true;}

//validateAge
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]{1,3}$/
if (!ageRE.test(tfld)) {msg (infofield, "error", "Invalid age");setfocus(valfield);return false;} if (tfld>=200) {msg (infofield, "error", "Invalid age"); setfocus(valfield); return false;} if (tfld>110) msg (infofield, "warn", "Are you really older than 110?"); else {if (tfld<7) msg (infofield, "warn", "You are a little to young."); else msg (infofield, "warn", "");}return true;}