//Hajetek Solutions form validation script
//created: 2005/09/30
//modified: 2005/09/30
//	added delayed focus (fix for internet explorer)
//	added function trim
//	added function hajeCheck(element)
//	added function validateText(element)
// 	added function debug
//	added variables for regular expressions
//	added debug method
//modified: 2005/10/1
//	added regexps
//	added switch to style 'hajetekform_error' when input does not match the regular expression
//	added switch to style 'hajetekform_default' when input does match the regular expression or empty errormessage
//	added showError
//	added storeError
//	added findError
// 	added select() in dofocusdelayed
//modified: 2005/10/2
//	tested in IE6 OK
//	tested in FireFox 1.06 OK

var dodebug = false;
var regexp_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
var regexp_empty = /^\s*$/
var regexp_tel = /^\+?[0-9 ()-]+[0-9]$/
var regexp_age = /^[0-9]{1,3}$/ 
var regexp_number = /^[0-9]+$/
var regexp_text = /^.+$/
var regexp_name = /^[a-zA-Z]+.{1,}$/
var regexp_dutchzipcode = /^[0-9]{4}[\s]*[a-zA-Z]{2}$/
var regexp_dutchaddress = /^[a-zA-Z]+.+[\s]*[0-9]+.*$/
var regexp_initials = /^[a-zA-Z \.]+$/


var unacceptable_values = new Array ();

function findError (errormsg)
{
	
	for (i=0; i < unacceptable_values.length; i++)
	{
			if (unacceptable_values[i] == errormsg)
			{
					debug ("findError: true");
					return true;
			}
	}
	debug ("findError: false");
	return false;
}

function storeError (errormsg)
{	
	if (findError (errormsg) == false)
	{
			debug ("storeError: " + errormsg);
			unacceptable_values [unacceptable_values.length] = errormsg;
	}
}

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


var global_object;
function doFocusDelayed(zobj)
{
	global_object.select();
	global_object.focus()
}

function dofocus(zobj)
{
	global_object = zobj;
	setTimeout( 'doFocusDelayed()', 100 );
}

function debug (str)
{
	if (dodebug)
	{
		alert (str);
	}
}

function showError (zobj, errormsg)
{
	debug ("showError " + errormsg);
	if (!document.getElementById) 
  	{	
    	return true;  
	}
	zobj.value = errormsg;
	storeError (errormsg);
}

function hajeCheck (zobj, regexp, errormsg)   // true if required
{
  	if (!document.getElementById || !zobj) 
  	{	
		debug ("hajeCheck: object empty or method not supported");
    	return true;  
	}
	zstring = trim (zobj.value);
	if (regexp_empty.test(zstring) || !regexp.test(zstring) || findError (zstring))
	{
			zerror = trim (errormsg);
			if (regexp_empty.test(zerror) == false)
			{
				debug ("hajeCheck: field not correctly filled in");
				zobj.className = "hajetekform_error";
				showError (zobj, zerror);
				storeError (zerror);
				dofocus (zobj);
			} else
			{
				zobj.className = "hajetekform_default";
			}
			return false;
	} 
	zobj.className = "hajetekform_default";
	return true;
}

function validateText (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_text, errormsg);
}

function validateInitials (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_initials, errormsg);
}

function validateName (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_name, errormsg);
}

function validateTel (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_tel, errormsg);
}


function validateDutchZipCode (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_dutchzipcode, errormsg);
}

function validateDutchAddress (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_dutchaddress, errormsg);
}

function validateEmail (zobj, errormsg)
{
	return hajeCheck (zobj, regexp_email, errormsg);
}

/*
	Javascript by Hajetek Solutions (www.hajetek.nl)																																									Javascript by Hajetek Solutions (www.hajetek.nl)
*/


