// проверяет все ли символы в переданной строке ЦИФРЫ
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;
}
