// проверяет все ли символы в переданной строке ЦИФРЫ
function checkNum(id_obj, msg){

  var result = false;
  var msg = false;

  var mass = "1234567890";
  var obj = document.getElementById(id_obj);

  if (obj.value.length){

    result = true;

    for (var i = 0; i < obj.value.length; i++){

      if (mass.search( obj.value.charAt(i) )==-1) result = false
    }
  }
  if (!result && msg) alert(msg)

  return result;
}

// димина функция для ссылки НАЧАЛО
function openPopup_CAR() {
  p="height=560,width=735,toolbar=no,directories=no,status=no,scrollbars=auto,resizable=no,menubar=no";
  hWnd=window.open("http://mobile.bynet.org/banner.htm","Hwnd",p);
  hWnd.focus();
}
// димина функция для ссылки КОНЕЦ

// удалить когда переделаю грузы и машины НАЧАЛО
function tr_light(tr,bgColor,textcolor,fontproperty)
{

  //alert("введите значение ТОЛЬКО цифрами");
  tr.style.backgroundColor=bgColor;
  tr.style.color=textcolor;
  //tr.style.font=fontproperty;
}
// удалить когда переделаю грузы и машины КОНЕЦ


// скрывает или отображает HTML обьект,
// в зависимости от его текущего состояния
function show_hide(
                  id_obj // id HTML обьекта
                  ){

  obj = document.getElementById(id_obj)

  if (obj.style.display == "none" || obj.style.visibility == "hidden")  {
    obj.style.display = "block";
    obj.style.visibility = "visible";
  }
  else{
    obj.style.display = "none";
    obj.style.visibility = "hidden";
  }
}

// копирует значение value из id_obj1 в value id_obj2
function data2value(
                    data,   // данные
                    id_obj1 // id HTML обьекта

                    ){

  obj1 = document.getElementById(id_obj1)

  if(data!=""){
    obj1.value = data
  }
}

// проверяет на валидность условия переданные в стоку через запятую
function valid_condition (
                          str_conditions, // строка с условиями которые нужно проверить
                                          // строка чувствительна к пробелам между оператором сравнения и ","(запятой)
                                          // формат строки : var1==value1, var2!=value2, var3<, var3<value3  и т.д.

                          msg,            // сообщение выводимое при ошибке
                          dbg_area        // id html эл. для вывода отладочной инфы
                          ){
  /*
  test = document.getElementById(dbg_area)// раскомментировать при дебаге
  /**/

  ar_conditions = str_conditions.split(",") // разбираем строку по ","(запятой) на части и
  // создаём массив, каждый эл. массива будет иметь вид
  // ar_conditions[0] - "var1==value1"
  // ar_conditions[1] - "var2!=value2"
  // ar_conditions[1] - "var3<value3" и т.д.

  for(i=0; i<ar_conditions.length; i++){

    el=ar_conditions[i]                  // выбираем поочередно каждый эл.массива
    // 3.(правая часть от оператора сравнения)
    /*                                                                          //---отладочная инфа
    test.value +="Проверка № "+(i+1)+" из "+ar_conditions.length+"\r\n"
    test.value += "Переданное Условие ["
    test.value += el
    test.value += "]"
    test.value += "\r\n"
    /**/


    //        reg=/([\w|\.|\(|\)|\'|\"]*)(==|!=|<=|>=|<|>)([\w|\-|\s]*)/
    reg=/(((\w+\.\w+)+)|(\w+\([\'|\"]?\w*[\'|\"]?\)))(==|!=|<=|>=|<|>)([\w|\-|\s]*)/

    if (!el.match(reg)){
      alert("не удалось распознать условие № "+(i+1))
      return false
    }

    ar_el=el.match(reg)

    l_part=ar_el[1]                             // левая часть от оператора сравнения
    operator_of_compare=ar_el[5]                // оператор сравнения
    r_part=ar_el[6]                             // правая часть от оператора сравнения

    /*                                                                          //---отладочная инфа
    test.value += "Распознанное Условие ["
    test.value += l_part+""
    test.value += operator_of_compare+""
    test.value += r_part+"]"
    test.value += typeof ar_el[3]
    test.value += "\r\n"

    //        test.value += "1 "+ar_el[1]
    //        test.value += "\r\n"
    //        test.value += "2 "+ar_el[2]
    //        test.value += "\r\n"
    //        test.value += "3 "+ar_el[3]
    //        test.value += "\r\n"
    //        test.value += "4 "+ar_el[4]
    //        test.value += "\r\n"
    //        test.value += "5 "+ar_el[5]
    //        test.value += "\r\n"
    //        test.value += "6 "+ar_el[6]
    //        test.value += "\r\n"
    //        test.value += "7 "+ar_el[7]
    //        test.value += "\r\n"

    /**/

    valid=true                                  // внутренне состояние проверки ВСЕХ условий
    // true - все верны ; false - какое-то неверно

    //проверяем корректно ли пропарсили условие
    if (!l_part || !operator_of_compare || !r_part ){

      alert("не удалось распознать \r\n  все части условия")
      return false
    }
    // если левая часть - пареметр или метод
    if( l_part.indexOf(".")!=-1){

      id=l_part.slice( 0, l_part.indexOf(".") )
      other=l_part.slice( l_part.indexOf(".") )
      l_part_value="document.getElementById('"+id+"')"+other
    }
    else  l_part_value=l_part                  // если левая часть другое функция

    l_part_value = eval(l_part_value)           // получаем значение левой части
    if ( parseInt(l_part_value) )  l_part_value=parseInt(l_part_value) // если результат ЦИФРА обращаем в число

    // сроки FALSE, true ... обращаем в значение
    if ( r_part=="false" || r_part=="true" || r_part=="FALSE" || r_part=="TRUE" )   r_part_value=eval(r_part)
    else r_part_value=r_part

    /*                                                                          //---отладочная инфа
    test.value += "Полученные Данные  ["
    test.value += l_part+"="+l_part_value
    test.value += "]"+typeof l_part_value
    test.value += "\r\n"
    test.value += "\r\n"
    /**/

    switch (operator_of_compare){

      case "==":

      if(!(l_part_value==r_part_value)) valid=false
      break

      case "!=":

      if(!(l_part_value!=r_part_value)) valid=false
      break

      case ">":

      if(!(l_part_value>r_part_value)) valid=false
      break

      case "<":

      if(!(l_part_value<r_part_value)) valid=false
      break

      case ">=":

      if(!(l_part_value>=r_part_value)) valid=false
      break

      case "<=":

      if(!(l_part_value<=r_part_value)) valid=false
      break
    }

    if (!valid){
      /*                                                                      //---отладочная инфа
      alert("результат сравнения условие №"+(i+1)+" false");
      /**/
      if(!msg)msg="Правильно заполните все обязательные поля"
      alert(msg)
      return false
    }
  }

  /*                                                                      //---отладочная инфа
  alert("OK");
  return false
  /**/
  return true

  /*-------- Применять в качестве элемента для вывода информации отладки
  <textarea id=test_area cols="50" rows="6"></textarea>
  /**/

}

/*-------------- Пример использования
<input id="test" value=8 > <input id="test2" value=8 >
<input type=button value=8 OnClick="valid_value('test!=3,test2!=4')" >

/*-------- Применять <textarea id=test> в качестве элемента для вывода информации отладки
<textarea id=test_area cols="38" rows="3"></textarea>
/**/


// формирует динамический <SELECT id=dinamic_select > с данными из массива array_dinamic_data,
// в зависимости от выбранного пункта в статическом <SELECT id=static_select >
function dynamic_select(
                        static_select_html_id,  // html id статического select
                        dinamic_select_html_id, // html id динамического select
                        array_dinamic_data,     // массив с данными для динамического select (структуру см. пример )
                        msg,                    // текст выводимый в первом элементе списка
                        current                 // текущий элемент в списке
                        ){



  var id_static_select = document.getElementById(static_select_html_id).options[document.getElementById(static_select_html_id).selectedIndex].value;
  var obj_dinamic_select = document.getElementById(dinamic_select_html_id);
  var current_index;

  obj_dinamic_select.options.length = 0;

  if ( msg && id_static_select!=-1 ) obj_dinamic_select.options[0] = new Option( msg, -1, false);

  if(array_dinamic_data[id_static_select]){
    for( var i = 0; i < array_dinamic_data[id_static_select].length; i++ ){

      obj_dinamic_select.options[obj_dinamic_select.length] = new Option( array_dinamic_data[id_static_select][i][1],array_dinamic_data[id_static_select][i][0]);
      if (array_dinamic_data[id_static_select][i][0] == current) {
        current_index = i+1;
      }

    }
  }
  if ( current ) obj_dinamic_select.selectedIndex = current_index;
}