function check_date(str, divider)
{
 // Функция проверяет валидность даты, заданной как dd.mm.yy или dd.mm.yyyy
// if(isNaN(divider) || 
 if(divider.length!=1) divider='/'; // хотя разделителем можно указать, например, цифру, и результат будет непредсказуемым
 var VEK="20";
 var slen=str.length;
 var begpos=0;
 var yy="", mm="", dd="";
 var year=0, mon=0, day=0, maxday;
  
 if (slen == 0) return false;
    
 for(var i=0; i < slen; i++)
  if ((str.charAt(i)<'0' || str.charAt(i)>'9') && str.charAt(i)!=divider) return false
  else
  if (str.charAt(i)==divider)
   {
    if (begpos==i)return false;
    if (dd.length==0) { dd=str.substring(begpos,i); begpos=i+1; }
    else
    if (mm.length==0) { mm=str.substring(begpos,i); begpos=i+1; }
    else
    return false;
   }
    
 if (begpos>=slen) return false;
 yy=str.substring(begpos,slen);
 if (dd.length>2 || dd.length<1) return false;
 if (mm.length>2 || mm.length<1) return false;
 if (yy.length!=4/* && yy.length!=2*/) return false;
    
 day=dd; mon=mm; year=yy;
    
 if (mon<1 || mon>12) return false;
 if (day<1 || day>31) return false;
 if (year<1 || year>9999) return false;
// if (yy.length==2) year=VEK+yy;
 if (mon==2)
  {
   maxday=28;
   if (year%400==0 || (year%4==0 && year%100>0)) maxday=29;
  }
 else
  {
   maxday=31;
   if (mon==2) maxday=28;
   if (mon==4 || mon==6 || mon==9 || mon==11) maxday=30;
  }
  if (day>maxday) return false;
  return true;
}

function check_uint(i)
{
// return (i.match(/^(\+|-)?\d+$/)); - проверка со знаком
 return (i.match(/^(\+)?\d+$/)); // проверка без знака
}

function check_ufloat(i)
{
 return (i.match(/^(\+)?\d+\.?\d*$/));
}

function check_empty(i)
{
 return (i.match(/^\s*$/));
}

function check_email(i)
{
 // Проверяет, яыляется ли i валидным адресом e-mail в формате login@[subdomen.]domen.tail
 return (i.match(/^[a-zA-Z_\.0-9\-]+@([a-zA-Z_0-9\-]+\.){1,2}([A-Za-z]){2,4}$/));
}

function trim(i)
{
 return (i.replace(/^\s*/, "").replace(/\s*$/, ""));
}

function check_mobile(i)
{
 // Проверяет корректность номера телефона.
 // Номер считается корректным, если он состоит из цифр, только в самом начале может стоять +
 return (i.match(/^\+?[0-9]+$/));
}
