<!--
// ф-ция пробегает по полям, имена которых лежат в массиве field_names и,
// если они пустые, то выводит соответствующие err_texts
function check_form_no_spaces(frm,field_names,err_texts) {
  var i, obj;
  for (i=0;i<field_names.length;i++) {
    obj = eval("frm."+field_names[i]);
    if (KillSpaces(obj.value)=="") {
      alert("Field \""+err_texts[i]+"\" cannot be empty");
      obj.select();
      obj.focus();
      return(false);
    }
  }
  return(true);
}

function check_form_no_integer(frm,field_names,err_texts) {
  var i, obj;
  for (i=0;i<field_names.length;i++) {
    obj = eval("frm."+field_names[i]);
    if (obj.value.length>0 && isInteger(obj.value)==false) {
      alert("Field \""+err_texts[i]+"\" must be numeric");
      obj.select();
      obj.focus();
      return(false);
    }
  }
  return(true);
}

function check_form_no_select(frm,field_names,err_texts) {
  var i, obj;
  for (i=0;i<field_names.length;i++) {
    obj = eval("frm."+field_names[i]);
    if (isPositiveInteger(obj.value)==false) {
      alert("Field \""+err_texts[i]+"\" must be selected");
      return(false);
    }
  }
  return(true);
}

function check_form_no_chkbx(Frm,Prfx,Mess) {
   var CheckedOnce = 0;
   for (i=0; i<Frm.elements.length; i++) {
      if ( Frm.elements[i].name.substr(0,Prfx.length)==Prfx && Frm.elements[i].checked==true )
         CheckedOnce = 1;
   }
   if ( CheckedOnce==0 ) {
      alert(Mess);
      return(false);
   }
   return(true);
}
//Для отсекания ввода всех символов кроме 0..9 для ввода целых чисел. 
//Нужно вставлять в обработчик события onkeypress соответствующего текстового поля.
//Пример <input type=".." name=".." value=".." onkeypress="return numeric();">
function RightEmail(str) {
  return str.match(/^(\w|-|\d|_)+(\.(\w|-|\d|_)+)*@(\w|-|\d)+(\.(\w|-|\d)+)+$/)
}

function numeric() {
  if (48<=window.event.keyCode && window.event.keyCode<=57) {
    return true;
  } else {
    return false;
  }
}

//Для отсекания ввода всех символов кроме 0..9 и точки для ввода дробных чисел и дат.
//Нужно вставлять в обработчик события onkeypress соответствующего текстового поля.
//Пример <input type=".." name=".." value=".." onkeypress="return real_date();">
function real_date() {
  if (48<=window.event.keyCode && window.event.keyCode<=57 || window.event.keyCode==46) {
    return true;
  } else {
    return false;
  }
}

//проверяет дату в формате dd.mm.yyyy, т.е. проверяет то, что она правильная
function right_date(input) {
  var arr,y,m,d;
  arr = input.split('.');
  if (arr.length==3) {
    d=CInt(arr[0]);m=CInt(arr[1]);y=CInt(arr[2]);
    if (isNaN(y) || (y<2001)||(y>3000)) {return false;}
    if (isNaN(m) || (m<1) || (m>12)) {return false;}
    if (isNaN(d) || d<1 || d>31) {return false;}
    if ((m==4 || m==6 || m==9 || m==11) && (d>30)) {return false;}
    if ((m==2) && (d>29)) {return false;}
    if (m==2) {
     if ((y%4!=0)&&(d>28)) {return false;}  //Остальные, делящиеся на 4   - високосные
    }
  } else {
     return false;
  }
  return true;
}

//удаляет пробелы слева и справа и все двойные пробелы преобразует в одинарные
function KillSpaces(str)
{
        return (str.replace(/(^\s*)|(\s*$)/g,"")).replace(/\s\s+/g," ");
}

//удаляет пробелы слева и справа - аналог одноименной функции в VBScript
function Trim (tempStr)
{
        var Str=new String(tempStr);
        while (Str.charAt(0)==" " && Str.length>0){
                Str=Str.substr(1);
        };      
        while (Str.charAt(Str.length-1)==" " && Str.length>0){
                Str=Str.substr(0,Str.length-1);
        };
        return (Str);
}

//удаляет пробелы слева - аналог одноименной функции в VBScript
function LTrim (tempStr)
{
        var Str=new String(tempStr);
        while (Str.charAt(0)==" " && Str.length>0){
                Str=Str.substr(1);
        };      
        return (Str);
}

//удаляет пробелы справа - аналог одноименной функции в VBScript
function RTrim (tempStr)
{
        var Str=new String(tempStr);    
        while (Str.charAt(Str.length-1)==" " && Str.length>0){
                Str=Str.substr(0,Str.length-1);
        };
        return (Str);
}       

//улучшенная функция преобразования строки в Int
function CInt(tempValue)
{
        tempValue=RTrim(tempValue);
        var Value=new String(tempValue);
        if (tempValue.length==0) return (NaN);
        while ((Value.charAt(0)==" " || (Value.charAt(0)=="0" && Value.length>1)) && Value.length>0){
                Value=Value.substr(1);
        };      
        return(parseInt(Value));
}

//улучшенная функция преобразования строки в Float
function CFloat(tempValue)
{
        tempValue=RTrim(tempValue);
        var Value=new String(tempValue);
        if (tempValue.length==0) return (NaN);
        while ((Value.charAt(0)==" " || (Value.charAt(0)=="0" && Value.length>1)) && Value.length>0){
                Value=Value.substr(1);
        };      
        Value=Value.replace(",",".");
        return(parseFloat(Value));
}

//добавляет в строку str (в позицию pos) подстроку substr
function InsertSubString(str,pos,substr)
{
        if (pos==0)
                return substr+str;
        else
                return str.slice(0,pos-1)+substr+str.slice(pos-1);
}
//-->