/*

S5FormElmObj[#form element name#] = {	
				"errorText":"#alert/error text when input element is required#",
				"checkList":[{
					"funct":"#function name for special value checks#(elmValue)",
					"errorText":"alert/error text when a special value in input element is required"
					}
					]
			}
*/

var S5FormElmObj = new Object();

// ============================================================

//function to validate an email address
function validEmail(value) {
   	var format = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
	return format.test( value );
}

// function to validate a dutch postalcode.
function validNLPostCode( value )
{
   var format = /\d{4}[a-zA-Z]{2}/;
   return format.test( value );
}

//function to validate an email address
function validURL(value) {
   	var format = /^http(s?):\/\/[a-z0-9|\.|-]+\.+[a-z]{2,3}/i;
	return format.test( value );
}
// display an error alert
function error(elem,text) {
	if (errorFound) return;
	displayError(text);
	if (elem!=null){
		elem.focus();
	}
	errorFound = true;
}
function displayError(text)
{
	var inpageErrorDisplay = document.getElementById("errorDisplay");
	if(inpageErrorDisplay)
	{
		inpageErrorDisplay.innerHTML=text;
		inpageErrorDisplay.className="hasError";
	}
	else
	{
		window.alert(unescape(text));
	}
}

// ==============================

var errorFound
var elmValue
// check the form 
function checkForm(formObj)
{ 
	errorFound = false;
	
	if(S5FormElmObj==null) return true;

	for(var i in S5FormElmObj)
	{
		formElm = formObj[i];
		if(formElm){
			// check for type form element
			if(formElm.type)
			{ 
				elmValue = formElm.value;
			 	switch(formElm.type)
				{
					// input type="text"
					case "text":
					// input type="password"
					case "password":
					// input type="file"
					case "file":
					// textarea
					case "textarea":
						if(S5FormElmObj[i].errorText)
						{
							if(elmValue.length<=0){
								error(formElm, S5FormElmObj[i].errorText);
								return !errorFound;
							}
						}
						if(S5FormElmObj[i].checkList && elmValue.length)
						{
							for(var j=0;j<S5FormElmObj[i].checkList.length;j++)
							{
								if(!eval(S5FormElmObj[i].checkList[j].funct))
								{
									error(formElm, S5FormElmObj[i].checkList[j].errorText);
									return !errorFound;
								}
							}
						}
						break;
					// input type="checkbox"
					case "checkbox":
						if(!formElm.checked)
						{
							error(formElm, S5FormElmObj[i].errorText);
							return !errorFound;
						}
						break;
					// select
					case "select-one":
						if(elmValue.length<=0)
						{
							error(formElm, S5FormElmObj[i].errorText);
							return !errorFound;
						}
						break;
					// select multiple="multiple"
					case "select-multiple":
						if(formElm.selectedIndex<0)
						{
							error(formElm, S5FormElmObj[i].errorText);
							return !errorFound;
						}
						break;
				}
			}
			else 
			{
			 	// input type="radio"
				isChecked=false;
			 	for(var j=0;j<formElm.length;j++)
				{
					if(formElm[j].checked)
					{
						isChecked=true;
						break;
					}
				}
				if(!isChecked)
				{
					error(formElm[0], S5FormElmObj[i].errorText);
					return !errorFound;
				}
			}
		}
	}
	return !errorFound;
}
