// check_2.2.js | (c) Gonschik, 2010 | http://www.nashproekt.ru

var Eng = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM", Num = "0123456789",
	Rus = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

// Формат массива Fields
// [name, "Название", заполнение (true/false), корректность (Eng,Rus,"+-=.,", ...), min размер (num), max размер (num)]
	
function check_form(form,Fields) {
	for (u=0;u<Fields.length;++u) {
		if (!check_field(form,Fields[u])) return false;
	}
	return true;
}

function check_field(form,Field) {
	if (Field[2]==true) {
		if (is_value(form[Field[0]].value,Field[1])) {
			form[Field[0]].focus(); return false;
		}
	}
	if (form[Field[0]].value != "") {
		if (Field[3]) {
			if (is_valid(form[Field[0]].value,Field[3],Field[1])) {
				form[Field[0]].focus(); return false;
			}
		}
		if (Field[4]) {
			if (is_size(form[Field[0]].value,Field[1],Field[4],((Field[5])?Field[5]:Field[4]))) {
				form[Field[0]].focus(); return false;
			}
		}
	}
	if (Field[0]=="email") {
		if (form[Field[0]].value) {
			if (is_email(form.email.value)) {
				form.email.focus(); return false;
			}
		}
	}
	return true;
}

function is_value(value, fn) {
	if (value == "") { alert("Не заполнено поле «"+fn+"»!"); return true; }
	else return false;
}

function is_valid(value, valid, fn) {
	for (i = 0; i < value.length; i++) {
		if(valid.indexOf(value.charAt(i)) < 0) {
			alert("Поле '"+fn+"' содержит недопустимые символы!\nВ частности, «"+value.charAt(i)+"». Допускаются символы:\n"+valid); return true;
		}
	}
	return false;
}

function is_size(value, fn, mn, mx) {
	ln = value.length; 
	if (ln < mn || ln > mx) {
		msg = "Неверное количество символов поля «"+fn+"»! ("+ln+")\nПравильное значение: ";
		if (mn == mx) msg += mn; else msg += "от "+mn+" до "+mx; alert(msg); return true; 
	}
	else return false;
}

function is_email(value) {
	if (value.length < 7 || value.indexOf("@") < 1 || value.indexOf(".") < 1 || (value.indexOf(".")+2) >= value.length) {
		alert("Неверный e-mail!"); return true;
	}
}

function dg_range(value, fn, mn, mx) {
	msg = "Введённое значение поля '" + fn + "' ("+value+")\n";
	if (value < mn) {
		msg += "меньше минимально допустимого ("+mn+")!";
		alert(msg); return true;
	}
	if (mx>0 && value > mx) {
		msg += "больше максимально допустимого ("+mx+")!";
		alert(msg); return true; 
	}
	return false;
}
