var RequiredErrorMessages = "Field '{name}' must not be empty";
var FormatErrorMessages = "Field '{name}' have not correct format";
var errors_count = 0
var error_messages = new Array();

function validateForm (cform, err_destination)
{
	errors_count = 0
	error_messages = new Array();
	
	for(i = 0; i < cform.elements.length; i++)
	{
		switch(cform.elements[i].type)
		{
			case 'text':
			case 'textarea':
			case 'password':
				validate_element_text(cform.elements[i])
			break;
			case 'select-one':
			case 'select':
				validate_element_select( cform.elements[i] )
			break;
			case 'radio':
				//
			break;
			case 'checkbox':
				//
			break;
		}
	}
	
	if(errors_count > 0)
	{
		err_message = error_messages.join("\n ");
		if(err_destination != null && document.getElementById(err_destination) != null)
		{
			document.getElementById(err_destination).innerHTML = err_message
		}
		else
		{
			alert(err_message);
		}
		return false;
	}
	
	return true;
}

function validate_element_select( el )
{
	if ( el.getAttribute("IsRequired") != null )
	{
		if(el.selectedIndex == -1 || el.options[el.selectedIndex].value == '' )
		{
			set_err_message_required(el);
		}
	}
}

function validate_element_text(el)
{
	
	if( el.value != '' )
	{
		if( el.getAttribute("FormatRegExp") != null)
		{
			rexp = new RegExp(el.getAttribute("FormatRegExp"))
			if(!rexp.test(el.value))
			{
				set_err_message_format( el )
			}
		}
	}
	else if ( el.getAttribute("IsRequired") != null )
	{
		set_err_message_required( el )
	}
}

	
function set_err_message_format( el )
{
	if( el.getAttribute("NotFormatMessage") != null)
	{
		message = el.getAttribute("NotFormatMessage");
	}
	else
	{
		message = FormatErrorMessages.replace("{name}", el.name)
	}
	
	errors_count = error_messages.push(message);
}

function set_err_message_required( el )
{
	if( el.getAttribute("RequiredMessage") != null)
	{
		message = el.getAttribute("RequiredMessage");
	}
	else
	{
		message = RequiredErrorMessages.replace("{name}", el.name)
	}
	
	errors_count = error_messages.push(message);
}