function check_date(evt, fld) {
var chr = (evt.which) ? evt.which : event.keyCode;
var ch = String.fromCharCode(chr);
var l = fld.value.length;
var s = fld.value;
var noerr = true;

//Проверяем на BackSpace
if (chr == 8) return true;

//Проверяем на ESC
if (chr == 27) {
  //fld.value = '';
  return false;
}

//Проверяем первую цифру дня
if (l == 0 && ch != '0' && ch != '1' && ch != '2' && ch != '3') noerr=false;

//Проверяем вторую цифру дня
if (l == 1 && ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false;
if (l == 1 && s.charAt(0) == '3' && ch != '0' && ch != '1') noerr=false;
if (l == 1 && s.charAt(0) == '0' && ch == '0') noerr=false;

//Если надо - вводим точку после дня
if (l == 2 && noerr) {
  l++;
  fld.value += '.';
}

//Проверяем первую цифру месяца
if (l == 3 && ch != '0' && ch != '1') noerr=false;

//Проверяем вторую цифру месяца
if (l == 4 && ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false;
if (l == 4 && s.charAt(3) == '1' && ch != '0' && ch != '1' && ch != '2') noerr=false;
if (l == 4 && s.charAt(3) == '0' && ch == '0') noerr=false;

//Если вдруг точка после второй цифры месяца не введена - вводим ее
if (l == 5 && noerr) {
  l++;
  fld.value += '.';
}

//Проверяем первую цифру года
if (l == 6 && ch != '1' && ch != '2') noerr=false;

//Проверяем вторую цифру года
if (l == 7 && s.charAt(6) == '1' && ch != '9' && ch != '8') noerr=false;
if (l == 7 && s.charAt(6) == '2' && ch != '0' && ch != '1') noerr=false;

//Проверяем третью и четвертую цифры года
if ((l == 8 || l == 9) && ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false; 

//Чтоб длину не превысить - отбой после 10 символов
if (l >= 10) noerr=false;

//Если символ подходящий - вводим его в поле
if (noerr) {
  l++;
  fld.value += ch;
}
else if (ch != '.') {
  alert('Неподходящий символ для ввода!\nФормат даты - ДД.ММ.ГГГГ, где ДД варьируется от 0 до 31, ММ - от 01 до 12, ГГГГ - от 1800 до 2199.');
  fld.focus();
}

//Если надо - добавляем точку
if ((l == 2 || l == 5) && noerr) {
  fld.value +='.';
}

//Возвращаем FALSE, так как символ уже добавлен к строке
return false;
}






function check_string(evt, fld, cs, smpl, msg) {
var chr = (evt.which) ? evt.which : event.keyCode;
var ch = String.fromCharCode(chr);
var l = fld.value.length;
var s = fld.value;
var ls = smpl.length;
var i=0;

if (cs) tl = 'да';
else tl = 'нет';

//Проверяем на BackSpace
if (chr == 8) return true;

//Проверяем на ESC
if (chr == 27) {
  //fld.value = '';
  return false;
}

//Проверяем символ на вхождение в шаблон ввода
while (i < ls) {
  if (cs) {
    if (ch != smpl.charAt(i)) {noerr = false;}
    else {noerr = true; break;}
  }
  else {
    if (ch.toUpperCase() != smpl.charAt(i).toUpperCase()) {noerr = false;}
    else {noerr = true; break;}
  }
  i++;
}

//Если символ подходящий - вводим его в поле
if (noerr) {
  l++;
  //fld.value += ch;
  return true;
}
else {
  alert('Неподходящий символ для ввода!\n\n'+msg+'\n\nДопустимые символы: '+smpl+'\nЗаглавные и прописные буквы считаются разными: '+tl);
  fld.focus();
  return false;
}

//Возвращаем FALSE, так как символ уже добавлен к строке
//return false;
}





function check_strsmpl(fld, smpl, cs) {
var s = fld.value;
var ls = fld.value.length;
var lsmpl = smpl.length;
var i,j;
var noerr = true;

for (i=0; i<ls; i++) {
  noerr = false;
  for (j=0; j<lsmpl; j++) {
    if (cs) {
      if (s.charAt(i) == smpl.charAt(j)) {noerr = true; break}
    }
    else {
      if (s.charAt(i).toUpperCase() == smpl.charAt(j).toUpperCase()) {noerr = true; break}
    }
  }

  if (!noerr) break;
}

return noerr;
}





function check_dsmpl(fld) {
var l = fld.value.length;
var s = fld.value;
var noerr = true;

//Проверяем длину
if (l != 10) return false;

//Проверяем первую цифру дня
if (l >= 1) {
  ch = s.charAt(0);
  if (ch != '0' && ch != '1' && ch != '2' && ch != '3') noerr=false;
}

//Проверяем вторую цифру дня

if (l >= 2) {
  ch = s.charAt(1);
  if (ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false;
  if (s.charAt(0) == '3' && ch != '0' && ch != '1') noerr=false;
  if (s.charAt(0) == '0' && ch == '0') noerr=false;
}

//Проверяем первую точку
if (l >= 3) {
  ch = s.charAt(2);
  if (ch != '.') noerr=false;
}

//Проверяем первую цифру месяца
if (l >= 4) {
  ch = s.charAt(3);
  if (ch != '0' && ch != '1') noerr=false;
}

//Проверяем вторую цифру месяца
if (l >= 5) {
  ch = s.charAt(4);
  if (ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false;
  if (s.charAt(3) == '1' && ch != '0' && ch != '1' && ch != '2') noerr=false;
  if (s.charAt(3) == '0' && ch == '0') noerr=false;
}

//Проверяем первую точку
if (l >= 6) {
  ch = s.charAt(5);
  if (ch != '.') noerr=false;
}

//Проверяем первую цифру года
if (l >= 7) {
  ch = s.charAt(6);
  if (ch != '1' && ch != '2') noerr=false;
}

//Проверяем вторую цифру года
if (l >= 8) {
  ch = s.charAt(7);
  if (s.charAt(6) == '1' && ch != '9' && ch != '8') noerr=false;
  if (s.charAt(6) == '2' && ch != '0' && ch != '1') noerr=false;
}

//Проверяем третью цифру года
if (l >= 9) {
  ch = s.charAt(8);
  if (ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false; 
}

//Проверяем четвертую цифру года
if (l >= 10) {
  ch = s.charAt(9);
  if (ch != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4' && ch != '5' && ch != '6' && ch != '7' && ch != '8' && ch != '9') noerr=false; 
}

return noerr;

}





function prefj(dbirth, dreq, s) {
  var age = yearj(dreq) - yearj(dbirth);
    
  if (monthj(dreq) > monthj(dbirth) || (monthj(dreq) == monthj(dbirth) && dayj(dreq) > dayj(dbirth)))
    age--;
    
  if (age < 2) return "Inf";
  if (age >= 2 && age < 12) return "Chd";
  if (age >= 12 && s == 1) return "Mr";
  if (age >= 12 && s == 2) return "Mrs";
}

function monthj(ddd) {
  var m = ddd.substring(3, 4);
  return eval(m);
}

function dayj(ddd) {
  var d = ddd.substring(0, 1);
  return eval(d);
}

function yearj(ddd) {
  var y = ddd.substring(6, 9);
  return eval(y);
}


function test_email(email) {
  email = email.replace(/^\s+|\s+$/g, '');
  return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

function check_email(evt, fld) {
    return check_string(evt,fld,0,'ABCDEFGHIJKLMNOPQRSTUVWXYZ.-_@1234567890','');
}


function isValid(what,chars) {	
	//проверяет, что все символы из what принадлежат множеству chars
	//если what пустая - ошибка
	
	if (what=="") return true;	
	
	bool1=false;	
	for (count1=0; (count1<what.length)&&(!bool1); count1++) {
		bool2=false;
		for (count2=0; (count2<chars.length)&&(!bool2);count2++) {
			if (what.charCodeAt(count1)==chars.charCodeAt(count2)) {				
				bool2=true;			
				break;
			}		
		}
		
		if (!bool2) {
			bool1=true;
			break;
		}	
	}	
	
	return !bool1;
}