function pageValidate()
{
	RequiredErrorMessages = "Field '{name}' must be not empty";
	FormatErrorMessages = "Field '{name}' have not correct format";
	
	if (!document) document = window.document;
	
	var pageIsValig = true;
	var errorMessage = "";

	validateRequired();
	if (pageIsValig == true)  validateFormat();

	displayError();
	
	return pageIsValig;

	function validateRequired()
	{
		validateRequiredCollection( document.body.getElementsByTagName("input") );
		validateRequiredCollection( document.body.getElementsByTagName("textarea") );
	}

	function validateFormat()
	{
		validateFormatCollection( document.body.getElementsByTagName("input") );
		validateFormatCollection( document.body.getElementsByTagName("textarea") );
	}
	
	function validateRequiredCollection(RequiredCollection)
	{
		for (var i = 0; i < RequiredCollection.length; i++)
		{
			if (RequiredCollection[i].getAttribute("classNameSave") != null)  RequiredCollection[i].className = RequiredCollection[i].getAttribute("classNameSave");

			if (RequiredCollection[i].getAttribute("IsRequired") != null)
			{
				if (RequiredCollection[i].getAttribute("IsRequired").toLowerCase() == "true" )
				{
					
					if (RequiredCollection[i].value == "" || RequiredCollection[i].value == null )
					{
						RequiredCollection[i].classNameSave = RequiredCollection[i].className;
						RequiredCollection[i].className = "rowinputerror";

						if (RequiredCollection[i].getAttribute("RequiredMessage") == null || RequiredCollection[i].getAttribute("RequiredMessage") == "")
							addError(RequiredErrorMessages.replace("{name}", RequiredCollection[i].name));
						else
							addError(RequiredCollection[i].getAttribute("RequiredMessage"));
					}
				}
			}
		}
		
		return pageIsValig;
	}

	function validateFormatCollection(FormatCollection)
	{
		for (var i = 0; i < FormatCollection.length; i++)
		{
			if (FormatCollection[i].getAttribute("classNameSave") != null)  FormatCollection[i].className = FormatCollection[i].getAttribute("classNameSave");

			if (FormatCollection[i].getAttribute("FormatRegExp") != null)
			{
				if (!FormatCollection[i].value.match(FormatCollection[i].getAttribute("FormatRegExp")))
				{
					FormatCollection[i].classNameSave = FormatCollection[i].className;
					FormatCollection[i].className = "rowinputerror";

					if (FormatCollection[i].getAttribute("NotFormatMessage") == null || FormatCollection[i].getAttribute("NotFormatMessage") == "")
						addError(FormatErrorMessages.replace("{name}", FormatCollection[i].name));
					else
						addError(FormatCollection[i].getAttribute("NotFormatMessage"));
				}
			}
		}
		
		return pageIsValig;
	}

	function displayError()
	{
		if (pageIsValig == false)
		{
			alert(errorMessage);
		}
	}
	
	function addError( errorMsg )
	{
		pageIsValig = false;
		errorMessage = errorMessage + "\n" + errorMsg;
	}
}
