
function isEmpty(stringParam)
{
	if ( stringParam.match(/^\s*$/g,'') )
	{
		return true;
	}
	else
		return false;
}

function hasAngles(stringParam)
{
	if ( stringParam.match(/[<>]/g,'') )
	{
		return true;
	}
	else
		return false;
}

function formValidate(form) {
	errorArray = Array(0,0,0,0);

	errorStringArray = Array(
		'Please be sure that you have filled in all required fields.',
		'Please be sure that you have entered a number for telephone and fax numbers.',
		'Please be sure that you have entered a valid email address.',
		'Please be sure that you have not entered any invalid characters (< or >) in your submission.');

	errorFieldColor = '#FF9999';

	for (i=0; i<form.elements.length; ++i) {
		switch ( form.elements[i].type )
		{
			case 'text':
				// parse name for requirements
				reqString = form.elements[i].name;
				reqArray = reqString.split(':');

				fieldError = 0;
				fieldName = reqArray[0];

				// Revert to normal color
				form.elements[i].style.backgroundColor = '';

				// Requirements built in to the form element
				for (reqIndex=1; reqIndex < reqArray.length; ++reqIndex )
				{
					switch (reqArray[reqIndex])
					{
					case 'required':
						if (isEmpty(form.elements[i].value))
						{
							errorArray[0] = 1;
							fieldError = 1;
						}
						break;

					case 'number':
						if (isEmpty(form.elements[i].value))
						{
							errorArray[0] = 1;
							fieldError = 1;
							break;
						}
						if (!form.elements[i].value.match(/^\d+$/))
						{
							errorArray[1] = 1;
							fieldError = 1;
						}
						break;

					case 'email':
						if (isEmpty(form.elements[i].value))
						{
							errorArray[0] = 1;
							fieldError = 1;
							break;
						}
						if (!form.elements[i].value.match(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i))
						{
							errorArray[2] = 1;
							fieldError = 1;
						}
						break;

					default:
						break;
					}
				}

				// default text field checks
				if (hasAngles(form.elements[i].value))
				{
					errorArray[3] = 1;
					fieldError = 1;
				}

				// color if there's an error
				if (fieldError)
				{
					form.elements[i].style.backgroundColor = errorFieldColor;
				}

				break;

			default:
				break;
		}
	}

	errorMsg = '';

	for (errorIndex=0; errorIndex<errorArray.length; errorIndex++)
	{
		if (errorArray[errorIndex])
			errorMsg += errorStringArray[errorIndex] + "\n";
	}

	if (errorMsg != '')
	{
		alert(errorMsg);
		return false;
	}
	else
	{
		return true;
	}
}