var errorMsg = "";

function getMessage(element)
{
	msg = element.getAttribute("title") ? element.getAttribute("title") : element.getAttribute("alt");
	msg = msg ? msg : "- Enter a valid " + element.getAttribute("name").replace(/_/g, " ");

	return msg;
}

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 validate email address\n";
			}
		}
		else if ( elementsInputs[i].className == "req" )
		{
			if ( !elementsInputs[i].value )
			{
				blnvalidate = false;
				errorMsg += getMessage(elementsInputs[i]) + "\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_float" )
		{
			if ( !validateFloat(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- Enter a valid number for " + elementsInputs[i].name.replace("_", " ") + "\n";
			}		
		}		

	}	


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

		for ( var i=0; i<chkTextArea.length; i++ )
		{	
			if ( /req$/.test(chkTextArea[i].className) )
			{
				if ( !chkTextArea[i].value )
				{
					blnvalidate = false;
					errorMsg += getMessage(chkTextArea[i]) + "\n";
				}
			}
		}			
	}

	return blnvalidate;
	
}

function validateFloat(value)
{
	return parseInt(value) || parseFloat(value)
}

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;

}


addLoadEvent(validateForms);
