/*
Валидатор форм
	Проверяет правильность заполнения формы

Не проверяет:
	если элемент disabled
	если у него не заполнен параметр alt

Поля:
	text/password/textarea -	alt="re", проверяет в соответствии с регулярным выражением
	radio -	alt!="", проверяет чтобы хотя бы 1 элемент с таким же именем был выбран
	select -	alt!="", проверяет чтобы value!="" 
	chechbox -	alt="N", проверяет чтобы хотя бы 1 элемент с таким же alt был выбран

Примеры alt:
	^.{1,}$ - не пустая строка
	^\d{1,}$ - не пустая строка, только цифры

Примечание:
	passwordId/passwordcId - специальные переменные для проверки пароля

@param form - проверяемая форма
@return - результат проверки true/false

viktoral
*/
function formValidate(form)
{
	var i;
    var type;
    var result = true;
    for (i = 0; i < form.length; i++) 
	{
		type = form[i].type;      
		result &= itemValidate(form[i]);
    }
    return result != 0;
}

/* 
Проверяет правильность введенного значения в поле, по RE в alt. 
Если значение не верное - выводит сообщение с ID fmsg_ID и подсвечивает поле

@param i - ID проверяемого элемента
@return - результат проверки true/false

viktoral
*/
function itemValidate(i) 
{

	var m;
	var id = i.id;
	if (i.disabled == true) return true;
	if (i.alt == "") return true;
	if (i.alt == false) return true;
	if (i.alt == null) return true;
	var v = i.alt;
	//if (!v) return true;
	//alert(i.type);
	//if (i.alt == null) return true;
	
	i.value = i.value.trim();

	if ((i.type == "text")||(i.type == "textarea")||(i.type == "file")) 
	{
		//alert(i.type);
		//alert(i.alt);
		//alert(i.value);
		var re = new RegExp (v, 'i');
		m = i.value.match(re) != null;
	}

    if (i.type == "password")
	{
		var re = new RegExp (v, 'i');
		m = i.value.match(re) != null;
		if(document.getElementById('passwordсId') != null)
		{
			if(i.value != document.getElementById('passwordсId').value) m = false;
		}
	}

	if (i.type == "select-one") 
	{
		m = i.options[i.selectedIndex].value != "";
	}

	if (i.type == "checkbox") 
	{
		m = false;
		for (n = 0; n < i.form.length; n++) 
		{
			if ((i.form[n].alt == i.alt)&&(i.form[n].checked)) m = true;
		}
	}

	if (i.type == "radio") 
	{
		m = false;
		for (n = 0; n < i.form.length; n++) 
		{
			if ((i.form[n].name == i.name)&&(i.form[n].checked)) m = true;
		}
	}

	//if(i.type != "select-one")
	if (m) 
		i.style.backgroundColor = "white"; 
	else 
		i.style.backgroundColor = "#FFA090";

	var div = document.getElementById('fmsg_'+id);
	if (div)
	{

		if (m) display = 'none'; else display = 'block';
		//div.innerHTML = messages[id];
		div.style.display = display;
	}
	return m;
}

