comp = navigator.appName;
vers = navigator.userAgent;

function CheckField(f_field, f_name, f_type, f_len) {
	var sError = '';
	if ( f_field.value.length == 0 )
		sError = 'Поле "' + f_name + '" не заполнено!';
	else if ( f_type != 'anychars' && CheckInvalidField(f_field.value, f_type) )
		sError = 'Поле "' + f_name + '" содержит недопустимые символы!\n' + sInvalidFieldWarn;
	else if ( f_len && (f_field.value.length != f_len) )
		sError = 'Длина поля "' + f_name + '" должна составлять ' + f_len + ' симв.';
		
	if ( sError ) {
		alert(sError);
		f_field.focus();
		return false;
	}
	return true;
}

function CheckOptField(f_field, f_name, f_type) {
	if ( f_field.value.length > 0 )
		if ( CheckInvalidField(f_field.value, f_type) ) {
			alert('Поле "' + f_name + '" содержит недопустимые символы!\n' + sInvalidFieldWarn);
			f_field.focus();
			return false;
		}
	return true;
}

function CheckInvalidField (s, sKind) {
	switch (sKind) {
		case 'login': //Логин, пароль
			sInvalidFieldWarn = "Допускаются прописные и строчные латинские буквы, цифры и знак подчеркивания.";
			sPossibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_';
			break;                                        
		case 'name': //Имя, фамилия, отчество
			sInvalidFieldWarn = "Допускаются прописные и строчные русские и латинские буквы, минус и пробел.";
			sPossibleChars = 'ЇїіІБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- ';
			break;
		case 'city': //Город
			sInvalidFieldWarn = "Допускаются прописные и строчные русские и латинские буквы, цифры, дробь, номер, минус и пробел.";
			sPossibleChars = 'ЇїіІАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890№/- ';
			break;
		case 'phonecity': //Телефон
			sInvalidFieldWarn = "Допускаются цифры, минус и пробел.";
			sPossibleChars = '1234567890- ';
			break;
		case 'phonecountry': //Телефон
			sInvalidFieldWarn = "Допускаются цифры, минус и пробел.";
			sPossibleChars = '1234567890- ';
			break;
		case 'phone': //Телефон
			sInvalidFieldWarn = "Допускаются цифры, минус и пробел.";
			sPossibleChars = '1234567890- ';
			break;
		case 'number': // Число
			sInvalidFieldWarn = "Допускаются только цифры.";
			sPossibleChars = '1234567890';
			break;
		case 'email': //E-mail ***
			sInvalidFieldWarn = "Допускаются прописные и строчные латинские буквы, цифры, @, минус и знак подчеркивания.";
			//Ищем собаку
			if ( (iDogPosition = s.indexOf('@')) == -1 || s.indexOf('@') == 0 || s.indexOf('@') == s.length-1 )
				return 1;
			//Ищем точку с позиции собаки до конца строки
			else if ( (iPointPosition = s.indexOf('.', iDogPosition+2)) == -1 || s.indexOf('.', iDogPosition+2) == 0 || s.indexOf('.', iDogPosition+2) == s.length-1 )
				return 1;
			else
				sPossibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_.@';
			break;
	}		
	for (var i = 0; i < s.length; i++) {
		if (sPossibleChars.indexOf(s.charAt(i)) == -1) {
			return 1; //Найден недопустимый символ
		}
	}
	return 0; //Все OK                  
}

