var nbsp = 160;		// nbsp karaktervar node_text = 3;	// DOM tekst node-typevar emptyString = /^\s*$/ ;var global_valfield;	// bewaar valfield voor timer thread/* ------------------------------------------ Haal spaties uit invoer weg--------------------------------------------*/ function trim(str){  return str.replace(/^\s+|\s+$/g, '');}/* --------------------------------------------Vertraagde focus setting om IE bug te omzeilen --------------------------------------------*/function setFocusDelayed(){  global_valfield.focus();}function setfocus(valfield){  // bewaar valfield in variabele zodat de waarde bewaart blijft als routine klaar is  global_valfield = valfield;  setTimeout( 'setFocusDelayed()', 100 );}/* -------------------------------------------Waarschuwing of foutmelding in HTML element.--------------------------------------------*/function msg(fld,		// id van melding-element             msgtype,	// class van element ("warn" or "error")             message)	// string melding{/* een lege string kan een probleem geven als het later wordt omgezet naar een gevulde string, om te zorgen dat er een spatie staat. (voor Mozilla en Opera kan gewoon een spatie gebruikt worden, maar IE verlangt iets anders, zoals een nbsp.)*/  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;   // CSS class om weergave melding te veranderen}/* --------------------------------------------      Algemene code voor alle validatie routines om:(a) check voor oudere browsers(b) check als lege velden "required" zijnReturns:	true (validatie ok),          	false (validatie mislukt) of          	proceed (nog niet bekend)--------------------------------------------*/var proceed = 2;  function commonCheck    (valfield,		// element dat gevalideerd moet worden                         infofield,		// id van element dat de info/error boodschap ontvangt                         required)		// true als required bestaat voor dit veld{  if (!document.getElementById)     return true;  // niet beschikbaar in deze browser  var elem = document.getElementById(infofield);  if (!elem.firstChild) return true;  // niet beschikbaar in deze browser   if (elem.firstChild.nodeType != node_text) return true;  // infofield is foutief node-type   if (emptyString.test(valfield.value)) {    if (required) {      msg (infofield, "error", "Dit veld invullen.");        setfocus(valfield);      return false;    }    else {      msg (infofield, "warn", "");   // ok      return true;      }  }  return proceed;}/*--------------------------------------------Validatie of er überhaupt iets is ingevoerdReturn = true als het niet zo is--------------------------------------------*/function validatePresent(valfield,		// element dat gevalideerd moet worden                         infofield		// id van element dat de info/error boodschap ontvangt						 ) {  var stat = commonCheck (valfield, infofield, true);  if (stat != proceed) return stat;  msg (infofield, "warn", "");    return true;}/* --------------------------------------------Validatie e-mail adresReturn True als goed is ingevuld of niet gecheckt kon worden vanwege oude browser --------------------------------------------*/function validateEmail  (valfield,		// element dat gevalideerd moet worden                         infofield,		// id van element dat de info/error boodschap ontvangt                         required)		// true als required bestaat voor dit veld{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;  if (!email.test(tfld)) {    msg (infofield, "error", "Onjuist e-mail adres");    setfocus(valfield);    return false;  } return true;}/*--------------------------------------------validatie Telefoonnr.Return True als goed is ingevuld of niet gecheckt kon worden vanwege oude browser--------------------------------------------*/function validateTelnr  (valfield,		// element dat gevalideerd moet worden                         infofield,		// id van element dat de info/error boodschap ontvangt                         required)		// true als required bestaat voor dit veld{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);		// waarde van veld zonder spaties  var telnr = /^\+?[0-9 ()-]+[0-9]$/  ;  if (!telnr.test(tfld)) {    msg (infofield, "error", "Ongeldig telefoonnr.");    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<10 || numdigits>10) {    msg (infofield, "error", "Ongeldig telefoonnummer");    setfocus(valfield);    return false;  }   return true;}/* --------------------------------------------validatie Postcode.Return True als goed is ingevuld of niet gecheckt kon worden vanwege oude browser----------------------------------------------*/function validatePostcode  (valfield,	// element dat gevalideerd moet worden                         	infofield,  // id van element dat de info/error boodschap ontvangt                         	required)   // true als required bestaat voor dit veld{  var stat = commonCheck (valfield, infofield, required);  if (stat != proceed) return stat;  var tfld = trim(valfield.value);  // waarde van veld zonder spaties  var code = /\d{4}\D{2}/ ;  if (!code.test(tfld)) {    msg (infofield, "error", "Ongeldige postcode");    setfocus(valfield);    return false;  }   return true;}
