var errorMsg = "";

function validateForms()
{
	if ( !document.getElementsByTagName)
	{
		return false;
	}

	elementsForms = document.getElementsByTagName("form");
		
	for ( var i = 0; i < elementsForms.length; i++ )
	{
		elementsForms[i].onsubmit = function()
		{
			if ( !validateForm(this) )
			{
				alert("The following errors have occurred:\n" + errorMsg);
				errorMsg = "";
				return false;
			}
			else
			{
				return true;
			}
		}

	}

}

function validateForm(currentForm)
{
	var blnvalidate = true;
	var elementsInputs;
	
	elementsInputs = currentForm.getElementsByTagName("input");

	for ( var i=0; i<elementsInputs.length; i++ )
	{
		if ( elementsInputs[i].className == "req_email" )
		{
			if ( !validateEmail(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid email address\n";
			}
		}
		else if ( elementsInputs[i].className == "req" )
		{
			if ( !elementsInputs[i].value )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}
		else if ( elementsInputs[i].className == "req_tel" )
		{
			if ( !validateTelephone(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}		
		else if ( elementsInputs[i].className == "req_date" )
		{
			if ( !validateDate(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}		
		
		else if ( elementsInputs[i].className == "req_date" )
		{
			if ( !validateDate(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}			
		else if ( elementsInputs[i].className == "req_dln" )
		{
			if ( !validate_dln(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}			
		else if ( elementsInputs[i].className == "req_dob_year" )
		{
			if ( !validateDOBYear(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- " + elementsInputs[i].getAttribute("alt") + "\n";
			}		
		}	

	}	
	
	if ( currentForm.getElementsByTagName("textarea").length > 0 )
	{
		chkTextArea = currentForm.getElementsByTagName("textarea")[0];

		if ( chkTextArea.className == "req" )
		{
			if ( !chkTextArea.value )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid " + chkTextArea.name.replace("_", " ") + "\n";
			}
		}
	}

	if ( currentForm.getElementsByTagName("select").length > 0 )
	{
		chkSelect = currentForm.getElementsByTagName("select");

		for ( var i=0; i<chkSelect.length; i++ )
		{
			if ( chkSelect[i].className == "req" )
			{
				if ( !chkSelect[i].value )
				{
					blnvalidate = false;
					errorMsg += "- " + chkSelect[i].getAttribute("alt") + "\n";
				}
			}
		}
	}
		
	return blnvalidate;
	
}

function validate_dln(value)
{
	var filter = /^([ A-Za-z0-9-]+)$/;

	if ( !filter.test(value) )
	{
		return false;
	}
	
	return true;
}

function validateDate(value)
{
	var filter = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;

	if ( !filter.test(value) )
	{
		return false;
	}
	
	return true;
}

function validateEmail(value)
{
	var filter = /^.+@.+\..{2,3}$/;
	
	if ( !filter.test(value) )
	{
		return false;
	}
	
	return true;
}

function validateTelephone(value)
{
	var filter = /^([0-9]{7,})$/;

	if ( !filter.test(value) )
	{
		return false;
	}
	
	return true;

}

function validateDOBYear(value)
{
	var filter = /[19,20]{2}[0-9]{2}/;

	if ( !filter.test(value) )
	{
		return false;
	}
	
	return true;	
}


addLoadEvent(validateForms);
