var errorMsg = "";

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

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

					if ( document.getElementById("loaderContainer") )
					{
						removeOverlay();
					}
					
					return false;
				}
				else
				{
					return true;
				}
			}
		}
	}

}

function getMessage(element)
{
	return element.getAttribute("title") ? element.getAttribute("title") : element.getAttribute("alt");
}

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

	for ( var i=0; i<elementsInputs.length; i++ )
	{
		if ( /req_email$/.test(elementsInputs[i].className) )
		{
			if ( !validateEmail(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}
		}
		else if ( /req$/.test(elementsInputs[i].className) )
		{
			if ( !elementsInputs[i].value )
			{
				blnvalidate = false;
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}		
		}
		else if ( /req_tel$/.test(elementsInputs[i].className) )
		{
			if ( !validateTelephone(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}		
		}		
		else if ( /req_date$/.test(elementsInputs[i].className) )
		{
			if ( !validateDate(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}		
		}				
		else if ( /req_img$/.test(elementsInputs[i].className) )
		{
			if ( !validateImg(elementsInputs[i].value) )
			{
				blnvalidate = false;
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}		
		}
		else if ( /req_keyword$/.test(elementsInputs[i].className) )
		{
			if ( !validateKeyword(elementsInputs[i].value ) )
			{
				blnvalidate = false;	
				errorMsg += "- " + getMessage(elementsInputs[i]) + "\n";
			}		
			else if ( keyword_array.in_array(elementsInputs[i].value) )
			{
				blnvalidate = false;	
				errorMsg += "- keyword already in use\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";
				}
			}
		}			
	}

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

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

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 validateKeyword(value)
{
	return true;
	var filter = /([ \.]+)/;

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

}

function validateImg(value)
{
	var filter = /(jpg|jpeg|gif)/;

	if ( value == "" )
	{
		return true;
	}

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

}



addLoadEvent(validateForms);
