// Check form unit (ver: 2.3)
// (c) developer@alz.ru, 2002-2004

function CheckField(f, params)
{
    var AErr    = new Array("",
			"Поле требует обязательного заполнения.",
			"Значение поля слишком мало.",
			"Значение поля слишком велико.",
			"Значение поля не соответствует формату e-mail адреса.",
			"Значение поля должно быть неотрицательным целым числом.",
			"Значение поля слишком мало.",
			"Недопустимое значение.",
			"Поле требует обязательного выбора.");
    var err     = 0;
    var name    = params[0];
    var realname= params[1];
    var value   = false;

	for (var i=0; i<params[2].length && !err; i++) {
		value = params[2][i][1];
		if (!params[2][i][2] || (params[2][i][2].length && f.elements[params[2][i][2]].value.length)) {
			switch (params[2][i][0]) {
			    case ">":
				if (f.elements[name].value.length < value+1)
					err = f.elements[name].value.length==0 ? 1 : 2;
				break;

			    case "<":
				if (f.elements[name].value.length > value-1) err = 3; break;

			    case "i>":
				if (f.elements[name].value < value+1) err = 6; break;

			    case "s":
				if (f.elements[name].value == 0)
					err = 8;
				break;

			    case "!=":
				if (f.elements[name].value == value)
					err = 7;
				break;

			    case "=":
				switch (value) {
				    case 'email':
					if (null == f.elements[name].value.match(/^[-a-z0-9.]{1,}@[-a-z0-9.]{2,}\.[a-z]{2,4}$/i))
						err = 4;
					break;
				    case 'int':
					if (null == f.elements[name].value.match(/^[0-9]+$/i))
						err = 5;
					break;
				}
				break;
			}
		}
	}
	if (err) { f.elements[name].focus(); window.scrollBy(0, -40); alert("Ошибка в поле \""+ realname +"\"!\n"+AErr[err]); return 1; }
	return 0;
}

var form_is_submit = 0;
function CheckForm(f, params)
{
	if (form_is_submit) return false;
	for(i=0; i < params.length; i++)
		if (params[i] && CheckField(f, params[i])) return false;

	form_is_submit = 1;
//	f.elements['submit'].disabled;
	return true;
}
