



function list_on_checkbox_form(name_form_ch)
  {
   var list="";
   var raz="";
   var obj_form=document.forms[name_form_ch];//.form_data_users;
   var e;
   for (e=0;e<obj_form.elements.length;e++)
     {
      if (obj_form.elements[e].type=="checkbox")
        {
         if (obj_form.elements[e].checked == true)
           {
            list+=raz+obj_form.elements[e].value;
            raz=",";
           }
          
          
        }
      
     }
   return (list);
  }


function get_on_name_checkbox_form(name_form_ch,name_pole_checkbox,ignore_value)
  {
   var list="";
   var raz="";
   var obj_form=document.forms[name_form_ch];
   if ( obj_form )
     {
      if ( obj_form[name_pole_checkbox] )
        {
         var obj_pole=obj_form[name_pole_checkbox];
         
         if ( typeof( obj_pole.length ) == "undefined" )
           {
            if ( obj_pole.checked && ( ignore_value === false || ( ignore_value !== false && obj_pole.value != ignore_value ) ) )
              {
               list=obj_pole.value;
               
              }
            
           }
          else
            {
             var i=0;
             for ( i=0;i<obj_pole.length; i++ )
               {
                if ( obj_pole[i].checked && ( ignore_value === false || ( ignore_value !== false && obj_pole[i].value != ignore_value ) ) )
                  {
                   list+=raz+obj_pole[i].value;
                   raz=",";
                  }
                
                
               }
             
             
            }
         
         
        }
     }
   
   
   return (list);
  }


function unchecked_name_checkbox_form(name_form_ch,name_pole_checkbox)
  {
   
   var obj_form=document.forms[name_form_ch];
   if ( obj_form )
     {
      if ( obj_form[name_pole_checkbox] )
        {
         var obj_pole=obj_form[name_pole_checkbox];
         
         if ( typeof( obj_pole.length ) == "undefined" )
           {
            obj_pole.checked=false;
            
           }
          else
            {
             var i=0;
             for ( i=0;i<obj_pole.length; i++ )
               {
                obj_pole[i].checked=false;
                
               }
             
             
            }
         
         
        }
     }
   
   
   
  }






function inver_checkbox(name_form_inv)
  {
   
   var obj_form_checked=document.forms[name_form_inv];//.form_checkbox_object;
   for (i=0;i<obj_form_checked.elements.length;i++)
     {
      if (obj_form_checked.elements[i].type=='checkbox')
        {
         if (obj_form_checked.elements[i].checked)
           {
            obj_form_checked.elements[i].checked=false;
           }
          else
            obj_form_checked.elements[i].checked=true;
        }
      
     }
   
   
   return (false);
  }



function decode_one_mas(name_mas)
  {
   var q=0;
   var k=0;
   for (q=0;q<name_mas.length;q++)
     for (k in name_mas[q])
       name_mas[q][k]=decodeURIComponent(name_mas[q][k]);
  }

function decode_one_mas_join(name_mas)
  {
   var q=0;
   var k=0;
   var t=0;
   for (q in name_mas)
     for (k in name_mas[q])
       name_mas[q][k]=decodeURIComponent(name_mas[q][k]);
  }

function decode_one_mas_join_3level(name_mas)
  {
   var q=0;
   var k=0;
   var t=0;
   for (q in name_mas)
     for (k in name_mas[q])
       for (t in name_mas[q][k])
         name_mas[q][k][t]=decodeURIComponent(name_mas[q][k][t]);
  }

function decode_join_mas(name_mas)
  {
   var q=0;
   for ( q in name_mas )
     name_mas[q]=decodeURIComponent(name_mas[q]);
   
  }

function decode_mas(name_mas)
  {
   // number , string , object
   // 
   var q;
   for ( q in name_mas )
     {
      //alert( typeof( name_mas[q] ) );
      if ( typeof( name_mas[q] ) == "object" )
        {
         decode_mas( name_mas[q] );
        }
       else
         {
          name_mas[q]=decodeURIComponent(name_mas[q]);
         }
      
     }
  }








function preobDate(stamp_text)
   {
    //alert (stamp_text);
	if (stamp_text==0 ) return (" нет ");
	var month= new Array ("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
    var obj_time = new Date();
    //a=((stamp_text-0)-11*3600)*1000;
    var a=stamp_text*1000;
    var date_text;
    obj_time.setTime(a);
    //date_text=((obj_time.getHours()<10)?"0"+obj_time.getHours():obj_time.getHours())+":"+((obj_time.getMinutes()<10)?"0"+obj_time.getMinutes():obj_time.getMinutes())+":"+((obj_time.getSeconds()<10)?"0"+obj_time.getSeconds():obj_time.getSeconds())+" ";
    date_text=obj_time.getDate()+" "+month[obj_time.getMonth()]+" "+obj_time.getFullYear();
    return (date_text);
    //return (stamp_text);
   }


function preobDateOclock(stamp_text)
   {
    //alert (stamp_text);
	if (stamp_text==0 ) return (" нет ");
	var month= new Array ("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
    var obj_time = new Date();
    //a=((stamp_text-0)-11*3600)*1000;
    var a=stamp_text*1000;
    var date_text = "";
    obj_time.setTime(a);
    
    date_text+=((obj_time.getHours()<10)?"0"+obj_time.getHours():obj_time.getHours())+":"+((obj_time.getMinutes()<10)?"0"+obj_time.getMinutes():obj_time.getMinutes());//+":"+((obj_time.getSeconds()<10)?"0"+obj_time.getSeconds():obj_time.getSeconds())+" ";
    date_text += " / ";
    date_text+=obj_time.getDate()+" "+month[obj_time.getMonth()]+" "+obj_time.getFullYear();
    return (date_text);
    //return (stamp_text);
   }






function jsCodeHtmlChars(r)
  {
   r=jsStringReplace(r,"&","&amp;");
   r=jsStringReplace(r,"<","&lt;");
   r=jsStringReplace(r,">","&gt;");

   r=jsStringReplace(r,"'","&#039;");
   r=jsStringReplace(r,'"',"&quot;");
   return (r);
  }
function jsStringReplace(text,searchString,replaceString)
  {
   var lengthSearchString=searchString.length;
   var lengthReplaceString=replaceString.length;
   var rezultText=text;
   var start_poz=0;
   var poz;
   while ((poz=rezultText.indexOf(searchString,start_poz))!=-1)
     {
      var firstPart=rezultText.substring(0,poz);
      var lengthRezultText=rezultText.length;
      var endPart=rezultText.substring(poz+lengthSearchString,lengthRezultText);
      rezultText=firstPart+replaceString+endPart;
      start_poz=poz+lengthReplaceString;
     }
   return (rezultText);
  }



function search_data_from_mas(mas_element,search_key,search_value,key_value)
  {
   //если указан key_value , то будет возвращено значение ключа найденой строчки
   //если key_value равен false, то будет возвращен номер строки массива
   var rez = false;
   var i;
   //alert(mas_element.length);
   for (i=0;i<mas_element.length;i++)
     {
      //alert("->"+mas_element[i][search_key]);
      if (mas_element[i][search_key] == search_value)
        {
         if (key_value === false)
           rez=i;
          else
            rez=mas_element[i][key_value];
        }
      
      
     }
   
   return (rez);
  }

function search_element_mas(mas_element,search_key,search_value)
  {
   var mas = new Array();
   var i;
   //alert(mas_element.length);
   for (i=0;i<mas_element.length;i++)
     {
      //alert("->"+mas_element[i][search_key]);
      if (mas_element[i][search_key] == search_value)
        {
         
         mas[mas.length]=mas_element[i];
        }
      
      
     }
   
   return (mas);
  }

function on_search_value_mas(mas_values,search_value)
  {
   var rez=false;
   var i;
   for (i=0;i<mas_values.length;i++)
     {
      if (mas_values[i] == search_value)
        {
         rez=true;
         break;
        }
     }
   
   return (rez);
  }

function text_one_mas(name_mas)
  {
   var q=0;
   var k=0;
   var t="";
   for (q=0;q<name_mas.length;q++)
     for (k in name_mas[q])
       t+=k+" "+(name_mas[q][k])+" |";
   return (t);
  }






function get_value_radio(obj_radio)
  {
   var value="";
   if ( typeof(obj_radio.length) == "undefined" )
     {
      if ( obj_radio.checked )
        value=obj_radio.value;
      
     }
    else
      {
       var i;
       for (i=0;i<obj_radio.length;i++)
         {
          if ( obj_radio[i].checked )
            {
             value=obj_radio[i].value;
             break;
            }
         }
       
      }
   
   return (value);
  }

function set_radio_to_value(obj_radio,s_value,set_checked)
  {
   var on_set=false;
   if ( typeof(set_checked) == "undefined" )
     set_checked = true;
   
   if ( set_checked )
     set_checked = true;
    else
      set_checked = false;
   
   if ( typeof(obj_radio.length) == "undefined" )
     {
      if ( obj_radio.value == s_value )
        {
         obj_radio.checked = set_checked;
         on_set=true;
        }
      
     }
    else
      {
       var i;
       for (i=0;i<obj_radio.length;i++)
         {
          if ( obj_radio[i].value == s_value )
            {
             obj_radio[i].checked = set_checked;
             on_set = true;
             break;
            }
         }
       
      }
   
   return (on_set);
  }


function unset_value_radio(obj_radio)
  {
   
   if ( typeof(obj_radio.length) == "undefined" )
     {
      
      obj_radio.checked = false;
      
     }
    else
      {
       var i;
       for (i=0;i<obj_radio.length;i++)
         {
          
          obj_radio[i].checked = false;
          
         }
       
      }
   
  }


function set_value_pole_select(obj_select,set_value)
  {
   
   var on_set=false;
   
   
   var i;
   for (i=0;i<obj_select.options.length;i++)
     {
      if ( obj_select.options[i].value == set_value )
        {
         obj_select.options[i].selected = true;
         on_set = true;
         break;
        }
     }
   
   
   return (on_set);
   
  }


function construct_html_options_select(mas_data,on_value)
  {
   var t="";
   var q;
   if ( typeof(on_value) == "undefined" ) on_value = false;
   for (q in mas_data)
     t+="<option value='"+jsCodeHtmlChars(q)+"' "+( on_value && on_value == q ? " selected = 'selected' " : "" )+" >"+jsCodeHtmlChars(mas_data[q])+"</option>";
   
   return (t);
  }


function encode_mas_query_ajax(mas_data)
  {
   var query="";
   var i;
   var raz="";
   for ( i=0;i< mas_data.length;i++ )
     {
      query+=raz+mas_data[i][0]+"="+encodeURIComponent(mas_data[i][1]);
      raz="&";
     }
   
   return (query);
  }


function encode_assoc_mas_query_ajax(mas_data)
  {
   var query="";
   var i;
   var raz="";
   for ( i in mas_data )
     {
      query+=raz+i+"="+encodeURIComponent(mas_data[i]);
      raz="&";
     }
   
   return (query);
  }





function processing_block()
  {
   
   
   this.create_block_div = function(name_block)
     {
      //функция создает новый блок (абсолютно позиционируемый) с id name_block, 
      // если же такой блок существует, то возращает ссылку на этот объект
      
      if (!document.getElementById(name_block))
         {
           elem_div=document.createElement("div");
           elem_div.setAttribute("id",name_block);
           elem_div.style.position="absolute";
           elem_div.style.top="0px";
           elem_div.style.left="0px";
           elem_div.style.zIndex=-100;
           obj_div=document.body.appendChild(elem_div);
         }
        else
          {
           obj_div=document.getElementById(name_block);
           
           
          }
      
      return (obj_div);
     }
   
   this.set_style_obj = function(obj,mas_data_style)
     {
      /*
      пример mas_data_style = [ ["top","0px"],["left","0px"],["zIndex",100] ];
      
      */
      var i;
      for ( i=0; i<mas_data_style.length;i++ )
        {
         obj.style[mas_data_style[i][0]]=mas_data_style[i][1];
         
         
        }
      
      
     }
   
   this.get_size_window = function()
     {
      
      var width_window=0;
      var height_window=0;
      if (window.outerWidth)
          width_window=window.innerWidth;
        else
           width_window=document.body.offsetWidth;
      if (window.outerHeight)
         height_window=window.innerHeight;
        else
          height_window=(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.offsetHeight);
      
      return ( { "width":width_window , "height":height_window } );
      
     }
   
   this.get_size_page = function()
     {
      
      var razmers_page=getDocumentSize(document);
      //var page_width=razmers_page.width;
      //var page_height=razmers_page.height;
      
      return ( { "width":razmers_page.width , "height":razmers_page.height } );
     }
   
   
   this.set_opacity = function(obj,v_opacity)
     {
      
      obj.style.opacity = v_opacity/100;
      obj.style.filter = 'alpha(opacity=' + v_opacity + ')';

      
     }
   
   
   this.set_onclick = function(obj,atr_onclick)
     {
      
      obj.onclick=atr_onclick;
      
     }
   
   this.get_delta_page = function()
     {
      
      var delta_top=document.body.scrollTop;
      var delta_left=document.body.scrollLeft;
      
      if (delta_top == 0 && delta_left == 0 && document.body.parentNode)
         {
          delta_top = delta_top  +document.body.parentNode.scrollTop;
          delta_left = delta_left + document.body.parentNode.scrollLeft;
         }
      
      return ( { "top":delta_top , "left":delta_left } );
     }
   
   this.write_up_block = function(
     name_block_fon,name_block_up,width,height,backgroundFon,opacityFon,functionClickFon,backgroundUpBlock
     )
     {
      
      var size_page = this.get_size_page();
      var size_window = this.get_size_window();
      var delta_page = this.get_delta_page();
      
      //выводим фон
      var obj_fon = this.create_block_div(name_block_fon);
            
      var mas_style_fon = [ ["display","block"],["top","0px"],["left","0px"],["zIndex",100],
       ["width",size_page.width+"px"],["height",size_page.height+"px"],
       ["background",backgroundFon]       ];
      
      
      this.set_style_obj(obj_fon,mas_style_fon);
      this.set_opacity(obj_fon,opacityFon);
      
      if ( functionClickFon )
        obj_fon.onclick=functionClickFon;
      
      //выводим блок
      
      var top_up_block = delta_page.top + ( size_window.height - height )/2;
      var left_up_block = delta_page.left + ( size_window.width - width )/2;
      
      var obj_up_block = this.create_block_div(name_block_up);
      
      var mas_style_up_block = [ ["display","block"],["top",top_up_block+"px"],["left",left_up_block+"px"],["zIndex",200],
       ["width",width+"px"],["height",height+"px"],
       ["background",backgroundUpBlock]       ];
      
      
      this.set_style_obj(obj_up_block,mas_style_up_block);
      
      
      return (obj_up_block);
     }
   
   
   this.close_up_block = function(name_block_fon,name_block_up)
     {
      
      if ( document.getElementById(name_block_fon) )
        document.getElementById(name_block_fon).style.display = "none";
      
      if ( document.getElementById(name_block_up) )
        document.getElementById(name_block_up).style.display = "none";
      
     }
   
  }



obj_processing_block = new processing_block();














function getDocumentSize(doc)
 { 
  // getting a real size document with scrolling etc.
  
  //примеры использования
  //getDocumentSize(document)
  //getDocumentSize(window.frames['iframe_name'].document)
  
  var r = { width: 0, height: 0 };
 
  var width1=0, width2=0, width3=0, width4=0, maxWidth=0;
  var height1=0, height2=0, height3=0, height4=0, maxHeight=0;
  
  
  if (doc.width) maxWidth = doc.width; 
  if (doc.body) { 
	if (doc.body.scrollWidth) width1 = doc.body.scrollWidth;
	if (doc.body.offsetWidth) width2 = doc.body.offsetWidth; 
  }
  if (doc.documentElement) {
	width3 = doc.documentElement.scrollWidth; 
	width4 = doc.documentElement.clientWidth;
  } 
  
  maxWidth = Math.max(Math.max(Math.max(width1, width2), Math.max(width3, width4)),maxWidth);
  
  if (doc.height) maxHeight = doc.height;
  if (doc.body) {
	if (doc.body.scrollHeight) height1 = doc.body.scrollHeight;
	if (doc.body.offsetHeight) height2 = doc.body.offsetHeight;
  }
  if (doc.documentElement) {
	height3 = doc.documentElement.scrollHeight;
	height4 = doc.documentElement.clientHeight;
  }
  maxHeight = Math.max(Math.max(Math.max(height1, height2), Math.max(height3, height4)),maxHeight);
  
  r.width = maxWidth;
  r.height = maxHeight;
  
  return r;
 }


function get_size_window()
  {
   var width_window=0;
   var height_window=0;
   if (window.outerWidth)
       width_window=window.innerWidth;
     else
        width_window=document.body.offsetWidth;
   if (window.outerHeight)
      height_window=window.innerHeight;
     else
       height_window=(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.offsetHeight);
   
   return ( { "width":width_window , "height":height_window } );
  }



function js_trim(t)
  {
   t = t.replace( /^\s+/g, '');
   t= t.replace( /\s+$/g, '');
   
   return (t);
  }

function js_preob_rn(t)
  {
   t = t.replace( /\r\n|\n\r|\r/g, "\n" );
   
   return (t);
  }


function check_data_email(email)
  {
   //if(preg_match("#^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#", $email))
   var re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/gi;
   if (  email.match(re) )
     {
      return (true);
     }
   
   return (false);
  }



function check_numeric_value(value)
  {
   var check = false;
   if ( value )
     {
      if ( js_trim( value ) && js_trim(value) == value  && !isNaN(value - 0) )
        check = true;
     }
    else
      {
       check = true;
      }
   
   return (check);
  }



/* определим тип браузера */
var bIE=0;bOp=0;bFF=0;
var verBr=navigator.userAgent;
if (verBr.indexOf("Opera")!=-1)
     bOp=1;
  else 
   {
   if (verBr.indexOf("MSIE")!=-1)
      bIE=1;
    else
     {
      //if (verBr.indexOf("Firefox")!=-1)
        bFF=1;
     }
   }



function set_class_row_tab_syn()
  {
   // первоночально задаем: on_insert_row_table_syn=1;
   
   var t="";
   t+=' class="row_tab_syn_insert_'+on_insert_row_table_syn+'" ';
   if (on_insert_row_table_syn == 1)
     on_insert_row_table_syn=2;
    else
      on_insert_row_table_syn=1;
   
   
   return (t);
  }


function set_name_class_row_table_nt(num_type)
  {
   // первоночально задаем: num_serial_pickout_row_table=1;
   
   var t="";
   t+='row_tab_pickout_t'+num_type+"_n_"+num_serial_pickout_row_table+'';
   if (num_serial_pickout_row_table == 1)
     num_serial_pickout_row_table=2;
    else
      num_serial_pickout_row_table=1;
   
   return (t);
  }




function formation_html_select_from_mas(mas,on_choose_value,choose_value,on_add_begin,value_add_begin,name_add_begin)
  {
   //значения по умолчанию
   if ( typeof(on_choose_value ) == "undefined" ) on_choose_value=false;
   if ( typeof(choose_value ) == "undefined" ) choose_value="";
   if ( typeof(on_add_begin ) == "undefined" ) on_add_begin=false;
   if ( typeof(value_add_begin ) == "undefined" ) value_add_begin=-1;
   if ( typeof(name_add_begin ) == "undefined" ) name_add_begin="Выберите...";
   
   
   var html="";
   var selected=false;
   var key=0, value = 0;
   for (key in mas )
     {
      var value = mas[key];
      var element_choose="";
      if (on_choose_value && choose_value == key)
        {
         element_choose="selected='selected'";
         selected=true;
        }
      html += "<option "+element_choose+" value='"+key+"'>"+value+"</option>";
     }
   if (on_add_begin)
     {
      html="<option value='"+value_add_begin+"'>"+name_add_begin+"</option>"+html;
     }
   var rez = { "html":html,"selected":selected };
   return (rez);
  }


function formation_html_select_from_mas_rows(mas,key_value,key_name,on_choose_value,choose_value,on_add_begin,value_add_begin,name_add_begin)
  {
   // если key_value равняется false, то значением option будет ключ соответствующей строки
   if ( typeof( on_choose_value ) == "undefined" ) on_choose_value=false;
   if ( typeof( choose_value ) == "undefined" ) choose_value="";
   if ( typeof( on_add_begin ) == "undefined" ) on_add_begin=false;
   if ( typeof( value_add_begin ) == "undefined" ) value_add_begin=-1;
   if ( typeof( name_add_begin ) == "undefined" ) name_add_begin="Выберите...";
   
   var html="";
   var selected=false;
   var i = 0;
   for (i in mas )
     {
      var one_row = mas[i];
      var key = ((key_value === false) ? i : one_row[key_value]);
      var value=one_row[key_name];
      var element_choose="";
      if (on_choose_value && choose_value == key)
        {
         var element_choose="selected='selected'";
         selected=true;
        }
      html+="<option "+element_choose+" value='"+key+"'>"+value+"</option>";
     }
   if (on_add_begin)
     {
      html="<option value='"+value_add_begin+"'>"+name_add_begin+"</option>"+html;
     }
   rez = { "html":html,"selected":selected };
   return (rez);
  }





function forming_select_f_date(timestamp,d,m,y,name_pf_day,name_pf_month,name_pf_year,text_begin,text_raz,text_end)
  {
   //если не задан timestamp, то тогда дата будет определяться d, m , y - день, месяц и год
   var mas_day=new Array();
   var mas_month=new Array();
   var mas_year=new Array();
   var i = 0;
   for (i=1;i<=31;i++) mas_day[i]=i;
   for (i=1;i<=12;i++) mas_month[i]=i;
   for (i=2010;i<=2020;i++) mas_year[i]=i;
   
   var t="";
   
   if ( timestamp !== false )
     {
      var objDate=new Date();
      objDate.setTime(timestamp*1000);
      d=objDate.getDate();
      m=objDate.getMonth();
      y=objDate.getFullYear();
     }
   
   var mas_form_day=formation_html_select_from_mas(mas_day,true,d,false,-1,"Выберите...");
   var mas_form_month=formation_html_select_from_mas(mas_month,true,m,false,-1,"Выберите...");
   var mas_form_year=formation_html_select_from_mas(mas_year,true,y,false,-1,"Выберите...");
   
   t+=text_begin;
   t+="<select name='"+name_pf_day+"'>"+mas_form_day["html"]+"</select>";
   t+=text_raz;
   t+="<select name='"+name_pf_month+"'>"+mas_form_month["html"]+"</select>";
   t+=text_raz;
   t+="<select name='"+name_pf_year+"'>"+mas_form_year["html"]+"</select>";
   t+=text_end;
   
   return (t);
  }


function forming_select_f_oclock(timestamp,h,m,name_pf_hours,name_pf_minutes,text_begin,text_raz,text_end)
  {
   //если не задан timestamp, то тогда дата будет определяться d, m , y - день, месяц и год
   var mas_hours=new Array();
   var mas_minutes=new Array();
   var i = 0;
   for (i=0;i<=23;i++) mas_hours[i]=( i < 10 ? "0"+i : i );
   for (i=0;i<=59;i++) mas_minutes[i]=( i < 10 ? "0"+i : i );
   //for ($i=2010;$i<=2020;$i++) $mas_year[$i]=$i;
   
   var t="";
   
   if ( timestamp !== false )
     {
      var objDate=new Date();
      objDate.setTime(timestamp*1000);
      
      h=objDate.getHours();
      m=objDate.getMinutes();
      
     }
   
   var mas_form_hours=formation_html_select_from_mas(mas_hours,true,h,false,-1,"Выберите...");
   var mas_form_minutes=formation_html_select_from_mas(mas_minutes,true,m,false,-1,"Выберите...");
   //$mas_form_year=formation_html_select_from_mas($mas_year,true,$y,false,-1,"Выберите...");
   
   t+=text_begin;
   t+="<select name='"+name_pf_hours+"'>"+mas_form_hours["html"]+"</select>";
   t+=text_raz;
   t+="<select name='"+name_pf_minutes+"'>"+mas_form_minutes["html"]+"</select>";
   
   t+=text_end;
   
   return (t);
  }


function cr_timestamp(d,m,y,h,min)
  {
   var t = 0;
   var objDate = new Date();
   
   objDate.setDate(d);
   objDate.setMonth(m);
   objDate.setFullYear(y);
   objDate.setHours(h);
   objDate.setMinutes(min);
   
   t = objDate.getTime();
   return (t/1000);
  }



go_function_on_load_iframe = false;
//функция обрабатывающая ответ при закачке файла на сервер (вызывается с фрейма)
// и передает управление функции указанной в переменной go_function_on_load_iframe 
function answer_load_file(numError,textError,answer)
  {
   if (document.getElementById("div_status_load_data"))
     document.getElementById("div_status_load_data").innerHTML="&nbsp;";
   
   operLoad=false;
   if (numError!=0)
     alert (textError);
    else
     {
      if ( go_function_on_load_iframe )
         go_function_on_load_iframe(numError,textError,answer);
      
     }
   
  }



//проверка расширения отправляемых файлов в форме на серевер 
function check_exp_name_file_form(obj_form,name_pole_mas,name_atr_pole,list_exp,message_error)
  {
   // obj_form - объект формы
   // name_pole_mas - имя поля типа file 
   // list_exp = "gif|jpg|jpeg|png"; - допустимые расширения или "all"
   // message_error - первая часть сообщения об ошибке
   
   var j = 0;
   
   if ( name_pole_mas )
     {
      
      var obj_pole_mas=obj_form[name_pole_mas];
      
      //alert(typeof(obj_pole_mas));
      
      if (typeof(obj_pole_mas.length) == "undefined")
        {
         if (!check_exp_file(obj_pole_mas.value,list_exp,message_error))
           return (false);
        }
       else
         {
          for (j=0;j<obj_pole_mas.length;j++)
            {
             if (!check_exp_file(obj_pole_mas[j].value,list_exp,message_error) )
               return(false);
            }
         }
      
     }
   
   if ( name_atr_pole )
     {
      
      for ( j=0;j<obj_form.elements.length;j++ )
        {
         
         if (obj_form.elements[j].getAttribute(name_atr_pole) !== null)
           {
            
            if ( !check_exp_file(obj_form.elements[j].value,list_exp,message_error ) )
              return (false);
            
           }
         
        }
      
     }
   
   return (true);
  }



function check_exp_file(name_file,list_exp,message_error)
  {
   if ( !list_exp || list_exp === "all" ) return (true);
   if ( !name_file ) return (true);
   
   mas_exp = list_exp.split("|");
   
   exp_file = get_exp_file(name_file);
   
   var on_exp = false;
   var i = 0;
   for ( i=0;i<mas_exp.length; i++ )
     {
      if ( mas_exp[i] == exp_file )
        {
         on_exp = true;
         break;
        }
     }
   
   if ( !on_exp && message_error )
     {
      var text_alert = message_error;
      var raz = "";
      for ( i=0;i<mas_exp.length;i++)
       {
        if ( i > 0 && i == ( mas_exp.length - 1) )
          {
           raz = " или ";
          }
         else
           {
            if ( i > 0 ) raz = ",";
           }
        text_alert += raz + mas_exp[i];
        
       }
      text_alert += "!";
      alert(text_alert);
     }
   return (on_exp);
  }


function get_exp_file(name_file)
  {
   var exp = "";
   //name_file="kdfkdDFEE.kdfjk.djkdf.kdf.ADFE";
   
   if ( name_file.length  )
     {
      
      var mas_data_file = name_file.split(".");
      if ( mas_data_file.length >= 2 )
        {
         
         exp = mas_data_file[mas_data_file.length - 1];
         exp=exp.toLowerCase();
         
        }
      
     }
   
   return (exp);
  }


function ext_file_name(path)
  {
   //функция возвращает имя файла из пути
   //alert(path);
   var name_file = "";
   var mas_path = [];
   if ( path )
     {
      if ( path.indexOf("\\") != -1 )
        {
         path = jsStringReplace(path,"\\","/");
        }
      if ( path.indexOf("\/") != -1 )
        {
         name_file = path;
         mas_path = path.split("\/");
         if ( mas_path.length )
           name_file = mas_path[mas_path.length-1];
        }
       else
         name_file = path;
     }
   
   return (name_file);
  }



/*

masInit = 
 [
  [
   "имя поля формы",
   "имя возвращаемого ключа",
   "тип поля: text, select, checkbox, radio",
   "тип значения: numeric, text",
   "обязательно должно быть поле формы: true или false",
   "обязательно должно быть указано значение: true или false",
   "параметр определяющий 'пустое значение' (работает совместно с предыдущим параметром), то есть значение которое будет определять, что в списке (select) не выбран параметр"
   "параметр определяющий, надо ли проверять значение на определенную велечину:
     false - нет,
     value - если параметр должен быть равен определенному значению,
     listv - если параметр должен быть равен одному из значений,
     hablonv - если значение должно удовлетворять шаблону регулярного выражения,
     function - если значение должно быть проверено функцией
   ",
   "параметр зависящий от предыдущего параметра. если предыдущий параметр равен:
     false - то этот параметр не имеет ни какого значения и должен равняться пустой строке,
     value - то этот параметр должен содержать, то значение, которое должна иметь переменная,
     listv - то этот параметр должен содержать список возможных значений указанных через запятую, которые может содержать переменная,
     hablonrv - то этот параметр должен содержать регулярное выражение, которому должно соответствовать значение переменной
     function - то этот параметр должен содержать название функции
   ",
   "значение по умолчанию, для параметра checkbox, в случае если checkbox не установлен: false - если нет значения, 
     или должно содержать значение - если нужно устанавливать значение по умолчанию",
   "текст ошибки, в случае когда значение не задано, или false если сообщать не надо ",
   "текст ошибки, в случае когда значение задано не верно, или false если сообщать не надо ",
   "название параметра, например, 'Текст объявления'"
  ]
 ];

*/
function processing_data_form(objForm,masInit)
  {
   var i,one_init;
   var data = new Array();
   var error = false;
   var value = "";
   for (i = 0; i < masInit.length ; i++  )
     {
      one_init = masInit[i];
      if ( !objForm[one_init[0]] )
        {
         if ( one_init[4] )
           {
            error = true;
            alert("Обнаружена внутренняя ошибка!");
            break;
           }
          else
            {
             var default_value = "";
             if ( typeof(one_init[9]) !== "undefined" && one_init[9] !== false )
               default_value = one_init[9];
             data[one_init[1]]= default_value;
             continue;
            }
         
        }
      value = "";
      switch ( one_init[2] )
        {
         case ("radio"):
           {
            value = get_value_radio( objForm[one_init[0]] );
            
            break;
           }
         case ("text"):
           {
            value = objForm[one_init[0]].value;
            
            break;
           }
         case ("select"):
           {
            value = objForm[one_init[0]].value;
            
            break;
           }
         
         case ("checkbox"):
           {
            if ( objForm[one_init[0]].checked )
              {
               value =objForm[one_init[0]].value;
              }
             else
               {
                if ( typeof(one_init[9]) !== "undefined" && one_init[9] !== false )
                  value = one_init[9];
               }
            
            break;
           }
         
        }
      
      if ( typeof( one_init[5] ) !== "undefined" && one_init[5] )
        {
         if ( value == "" || ( typeof( one_init[6]) !== "undefined" && one_init[6] !== false && value == one_init[6] ) )
           {
            alert( one_init[10] );
            error = true;
            break;
           }
         
        }
      
      //проверяем значение, если оно должно быть типа numeric
      if ( typeof( one_init[3] ) !== "undefined" && one_init[3] == "numeric" )
        {
         if ( value  )
           {
            if ( !check_numeric_value(value) )
              {
               if ( typeof( one_init[11] ) !== "undefined" && one_init[11] )
                 {
                  if ( one_init[11] === true )
                    {
                     if ( typeof( one_init[10] ) !== "undefined" && one_init[10] )
                       alert(one_init[10]);
                    }
                   else
                     alert(one_init[11]);
                 }
               error = true;
               break;
              }
            
            
           }
          else
            {
             value = 0;
            }
         
        }
      
      if ( typeof( one_init[7] ) !== "undefined" && one_init[7] != false )
        {
         var on_alert_error = false;
         switch ( one_init[7] )
           {
            case ( "value" ):
              {
               if ( value != one_init[8] )
                 on_alert_error = true;
               break;
              }
            case ( "listv" ):
              {
               var mas_values = one_init[8].split(",");
               var s;
               var on_value = false;
               for ( s=0; s<mas_values.length; s++)
                 {
                  if ( value == mas_values[s] )
                    {
                     on_value = true;
                     break;
                    }
                 }
               if ( !on_value ) on_alert_error = true;
               break;
              }
            case ( "hablonrv" ):
              {
               if ( !value.match(one_init[8]) ) on_alert_error = true;
               break;
              }
            case ( "function" ):
              {
               var do_function = one_init[8];
               if ( !do_function(value) ) on_alert_error = true;
               break;
              }
            
           }
         
         if ( on_alert_error )
           {
            error = true;
            if ( typeof(one_init[11]) !== "undefined" && one_init[11] )
              {
               if ( one_init[11] === true )
                 {
                  if ( typeof(one_init[10]) !== "undefined" && one_init[10] )
                    alert(one_init[10]);
                 }
                else
                  {
                   alert(one_init[11]);
                  }
              }
            break;
           }
         
        }
      
      data[one_init[1]]= value;
      
     }
   
   return ( new Array(error,data) )
  }




function getElementIdStyle(idElem,CssProp)
  {
   return ( getElementStyle(document.getElementById(idElem),CssProp) );
  }


function getElementStyle(objElem,CssProp)
  {
   //функция извлекает значение свойства каскадных таблиц стилей CssProp элемента objElem
   var v_style = "";
   if ( !objElem ) return ("");
   if ( window.getComputedStyle )
     {
      //if ( CssProp == "float" )
      //  CssProp = "cssFloat";
      var compStyle = window.getComputedStyle(objElem,"");
      v_style = compStyle.getPropertyValue(CssProp);
     }
    else
      {
       if ( objElem.currentStyle )
         {
          if ( CssProp == "float" )
            CssProp = "styleFloat";
          CssProp=convPropCss(CssProp);
          v_style=objElem.currentStyle[CssProp];
         }
       
      }
   return (v_style);
  }

function convPropCss(CssProp)
  {
   //преобразуем CSS свойство для применения в javascript
   //например, свойство margin-top преобразуется в marginTop
   var tProp = CssProp + "";
   var re = /(\-([a-z]){1})/g;
   if (re.test(CssProp))
     {
      tProp = tProp.replace( re , function (){ return arguments[2].toUpperCase(); } );
     }
   return (tProp);
  }


function convSizeByte(v)
  {
   var t = v;
   if ( check_numeric_value(v) )
     {
      if ( v < 1024 )
        t = v +" B";
       else if ( v < 1048576 )
         t = roundv(v/1024,2) + " KB";
        else
           t = roundv(v/1048576,2) + " MB";
     }
   
   return (t);
  }


function roundv(v,t)
  {
   //функция округления числа, второй параметр определяет точность округления
   var s = 0;
   if ( typeof( t ) == "undefined" || !t )
     {
      s = Math.round(v);
     }
    else
      {
       s = Math.round(v*Math.pow(10,t))/Math.pow(10,t);
      }
   return (s);
  }



function setCookie (name, value, expires, path, domain, secure)
  {
   document.cookie = name + "=" + escape(value) +
     ((expires) ? "; expires=" + expires : "") +
     ((path) ? "; path=" + path : "") +
     ((domain) ? "; domain=" + domain : "") +
     ((secure) ? "; secure" : "");
  }

function getCookie(name)
  {
   var cookie = " " + document.cookie;
   var search = " " + name + "=";
   var setStr = null;
   var offset = 0;
   var end = 0;
   if (cookie.length > 0) {
     offset = cookie.indexOf(search);
     if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
               end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
   return(setStr);
  }



var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}


function js_sizeof(mas)
  {
   var size = 0;
   for ( var n in mas ) size++;
   return (size);
  }




