// JavaScript Document
<!--//--><![CDATA[//><!--	
		// ----------------------------------------------------------------------
// Javascript form validation routines.
// Author: Stephen Poley
//
// Simple routines to quickly pick up obvious typos.
// All validation routines return true if executed by an older browser:
// in this case validation must be left to the server.
//
// Update Jun 2005: discovered that reason IE wasn't setting focus was
// due to an IE timing bug. Added 0.1 sec delay to fix.
//
// Update Oct 2005: minor tidy-up: unused parameter removed
//
// Update Jun 2006: minor improvements to variable names and layout
// ----------------------------------------------------------------------

var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

// --------------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// --------------------------------------------

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


// --------------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// --------------------------------------------

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(valfield)
{
  // save valfield in global variable so value retained when routine exits
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}


// --------------------------------------------
//                  msg
// Display warn/error message in HTML element.
// commonCheck routine must have previously been called
// --------------------------------------------

function msg(fld,     // id of element to display message in
             msgtype, // class to give element ("warn" or "error")
             message) // string to display
{
	//alert(message);
	// setting an empty string can give problems if later set to a 
	// non-empty string, so ensure a space present. (For Mozilla and Opera one could 
	// simply use a space, but IE demands something more, like a non-breaking space.)
	/*
	// turned of because does not work properly in IE6
	var dispmessage;
	if (emptyString.test(message)) 
	dispmessage = String.fromCharCode(nbsp);    
	else  
	dispmessage = message;
	*/
	var elem = document.getElementById(fld);
	// turned of because does not work properly in IE6
	// elem.innerHTML +=dispmessage; // "<br />"+ 
  	elem.className = msgtype;   // set the CSS class to adjust appearance of message
}

// --------------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// valfield 	: element to be validated
// infofield	: id of element to receive info/error msg
// required		: true if required
// Returns true (validation passed), 
//         false (validation failed) or 
//         proceed (don't know yet)
// --------------------------------------------

var proceed = 2;  

function commonCheck    (valfield, infofield, required){
	if (!document.getElementById){ 
		return true;  // not available on this browser - leave validation to the server
	}
	var elem = document.getElementById(infofield);
	if (!elem.firstChild){
		return true;  // not available on this browser 
	}
	if (elem.firstChild.nodeType != node_text){
		return true;  // infofield is wrong type of node  
	}
	if (emptyString.test(valfield.value)) {
		if (required) {
			msg (infofield, "error", "FOUT: verplicht");  
			//setfocus(valfield);
			return false;
		} else {
			msg (infofield, "warn", "");   // OK
			return true;  
		}
	}
	return proceed;
}

// --------------------------------------------
// validatePresent
// Validate if something has been entered
// Returns true if so 
// valfield		: element to be validated
// infofield	: id of element to receive info/error msg
// --------------------------------------------

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

// --------------------------------------------
//               validateEmail
// Validate if e-mail address
// valfield 	: element to be validated
// infofield	: id of element to receive info/error msg
// required		: true if required
// Returns true if so (and also if could not be executed because of old browser)
// --------------------------------------------

function validateEmail  (valfield,infofield,required)  
{
	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 = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;///^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
	if (!email.test(tfld)) {
		msg (infofield, "error", "FOUT: geen gelding emailadres");
		// setfocus(valfield);
		return false;
	}
	return true;
	/*
	var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;
	if (!email2.test(tfld)) {
		msg (infofield, "warn", "Unusual e-mail address - check if correct");
	} else {
		msg (infofield, "warn", "plop");
		return true;
	}
	*/
}
function validatePostcode(valfield,infofield,required){
	//alert("plop");
	var tfld = trim(valfield.value);
	var oc = /^(\d){4}( )?([a-zA-Z]{2})$/  ;
	if (!oc.test(tfld)) {
    	msg (infofield, "error", "FOUT: geen geldige postcode");
    	// setfocus(valfield);
    	return false;
  	}
	return true;
}

// --------------------------------------------
// validateTelnr
// Validate telephone number
// Returns true if so (and also if could not be executed because of old browser)
// Permits spaces, hyphens, brackets and leading +
// valfield		: element to be validated
// infofield	: id of element to receive info/error msg
// required		: true if required
// --------------------------------------------

function validateTelnr  (valfield, infofield, required) {
	var stat = commonCheck (valfield, infofield, required);
	if (stat != proceed){
		return stat;
	}	
	var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
	var telnr = /^\+?[0-9 ()-]+[0-9]$/  ;
	if (!telnr.test(tfld)) {
		msg (infofield, "error", "FOUT: geen geldig telefoonnummer. Toegestane karakters: cjfers, spatie, '()', '+' en '-'");
		// 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) {
		msg (infofield, "error", "FOUT: " + numdigits + " digits - too short");
		//setfocus(valfield);
		return false;
	}
	if (numdigits>14){
		msg (infofield, "warn", numdigits + " digits - check if correct");
		return false;
	}
	return true;
}
		
// Only script specific to this form goes here.
// General-purpose routines are in a separate file.
function validateOnSubmit() {
	var elem;
	var errs=0;
	// execute all element validations in reverse order, so focus gets
	// set to the first one in error.	
	/*
	if (!validatePresent(document.forms.contact.voornaam,  'lbl_voornaam',true)) errs += 1; 
	if (!validatePresent(document.forms.contact.achternaam,  'lbl_achternaam',true)) errs += 1; 
	if (!validatePresent(document.forms.contact.straat,  'lbl_straat',true)) errs += 1; 
	if (!validatePostcode(document.forms.contact.postcode,  'lbl_postcode',true)) errs += 1; 
	if (!validatePresent(document.forms.contact.woonplaats,  'lbl_woonplaats',true)) errs += 1; 
	if (!validateTelnr  (document.forms.contact.telefoon, 'lbl_telefoon', true)) errs += 1; 
	if (!validateEmail  (document.forms.contact.email, 'lbl_email', true)) errs += 1; 
	if (!validatePresent(document.forms.contact.bericht,  'lbl_bericht',true)) errs += 1; 
	*/
	/**/
	/*
	if(errs > 0){
		var instrElem = document.getElementById("instruction");
		instrElem.innerHTML = "Het formulier bevat fouten en kan niet worden verzonden. Corrigeer de rood gemarkeerde velden en probeer het opnieuw.";
		instrElem.className = "errorContainer";
	}
	*/
	return (errs==0);
};
//--><!]]>

