var ajax_url="/ajax_catalog.php";
var searchForm = null;
/* Ф-я посылает AJAX-запрос на сервер*/
function sendAjaxRequest(postdata,ajax_url) 
 {
    if (window.XMLHttpRequest)
      {
        req = new XMLHttpRequest();
      }
    else
     {
       if (window.ActiveXObject)
         {
            var sign_a = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP',
                          'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0',
                          'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0',
                         ];
            for (var i=0, l = sign_a.length; i<l; ++i)
             {
               try {  req = new ActiveXObject(sign_a[i]);  i = l; }
               catch(e) {}
             }
         }
     }

    if(req)
     {
       req.open("POST", ajax_url, true);
       timeoutId = setTimeout(timesUp,10000);  // 10 сек на запрос
       req.onreadystatechange = CallbackAjax;
       req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       req.send(postdata);
     }
    else
     {
        alert("Ваш броузер не разрешает использовать возможности приложения! Воспользуйтесь Internet Explorer, Mozilla-подобным броузером!");
     }
 }
/* Ф-я обработчик ответов сервера на AJAX-запрос*/
function CallbackAjax() 
 {
    try
     {
       if (req.readyState == 4) 
        {
           clearTimeout(timeoutId);
           loaderPopUp("close");
           if (req.status == 200)  
            {
              req.onreadystatechange = Callback(req);
            }
           else
            {
             //request.status :
             // 503 - if the application isn't available;
             // 500 - if the application has a bug.
             alert("Ошибка POST-запроса AJAX:" + req.status + " " + req.statusText);
            }
        }
       else
        {
           
           if(req.readyState > 0) 
            {
              loaderPopUp("open");
            }
        }
     }
    catch(err)
     {
       //alert("It does not appear that the server is available for this application. Please try again very soon. \\nError: " + err.message);
     }
 }
/* */
function timesUp()
 {
    req.abort();
    loaderPopUp("close");
    alert("Проблемы при соединением с серверной программой. Пожалуйста убедитесь в соединении с Internet и попытайтесь снова позднее.");
 }
/* */
function loaderPopUp(mode)
 {
   var divObj=document.getElementById("loaderDiv");
   if(mode==null) mode="open";
   var height=(window.innerHeight)?window.innerHeight:((document.all)?document.body.offsetHeight:null);
   switch(mode)
    {
      case "open":
       divObj.style.display="block";
       divObj.style.top = height/2 + document.body.scrollTop;
       break;
      case "close":
       divObj.style.display="none";
       divObj.style.top = height/2;
       break;
    }
 }
/* Ф-я обработчик ответов сервера на AJAX-запрос*/
    function Callback(httpRequest)
     {
        try
         {
          //alert(httpRequest.responseText);
          var xmlDoc = httpRequest.responseXML;
          if(xmlDoc != null)
           {
              var xml_action=xmlDoc.documentElement.getElementsByTagName('action')[0];
              switch(xml_action.getAttribute("name"))
               {
                  case "getlist":
                   getAVMListConfirm(xmlDoc.documentElement);
                   break;
                  default: break;
               }
           }
          else
           {
              alert('Ошибка! Сервер вернул не XML!');
           }
         }
        catch (err)
         { 
           alert(err.message);
         }
     }
function createHtmlElement(tagname,attrObj,styleObj)
 {
   var element = null;
   var e_name='';
   if(attrObj!=null && typeof(attrObj)=="object" && attrObj.name!=null)
    {
      e_name=attrObj.name;//!=null;
    }
   // Попытка создать элемент в стиле IE. Она будет неудачной в большинстве браузеров
   try 
    {
      if(e_name)  element = document.createElement('<'+tagname + ' name="' + e_name + '">');
      else        element = document.createElement('<'+tagname + '>');
    }
   catch (e) {}
   if (!element || element.nodeName != tagname.toUpperCase())
    {
      // Для не IE; использование стандартного метода создания элемента
      element = document.createElement(tagname);
      if(e_name) element.setAttribute("name", e_name);
    }
   if(attrObj!=null && typeof(attrObj)=='object')
    {
      for (var i in attrObj)  {  if(i!='name') element.setAttribute(i, attrObj[i]);  }
    }
   if(styleObj!=null && typeof(styleObj)=='object')
    {
      for (var j in styleObj)  {   element.style[j]=styleObj[j];   }
    }
   return element;
 }
/* */
function getAVMList(selObj)
 {
   var formObj=selObj.form;
   searchForm=formObj;
   var val=parseInt(selObj.options[selObj.selectedIndex].value,10);
   var prefix=selObj.name.substr(0,1);
   if(prefix!='d' && prefix!='t') prefix='';
   if(val==0)
    {
      var formObj=(prefix.length>0)?document.forms['fsearch']:document.forms['fsearchadd'];
      var name = (prefix!='')?selObj.name.substr(1):selObj.name;
      var selObjArr = [ formObj.elements[(prefix+'avtovendor')], formObj.elements[(prefix+'avtomodel')], formObj.elements[(prefix+'avyear')], formObj.elements[(prefix+'avmodif')] ];
      switch(name)
       {
         case "avtovendor": var ind=1; break;
         case "avtomodel":  var ind=2; break;
         case "avyear":     var ind=3; break;
         case "avmodif":    var ind=4; break;
       }
      for(i=ind;i<4;i++) 
       {
          while(selObjArr[i].options.length) selObjArr[i].options[0] = null;
          selObjArr[i].options[0] = new Option ('Все',0);
          selObjArr[i].className=(selObjArr[i].options.length > 1)?"background":"";
       }
      if(prefix=='') document.getElementById("avmDiv").style.display='none';
    }
   else
    {
      var query="action=getlist&id=" + selObj.options[selObj.selectedIndex].value + '&prefix=' + prefix;
      sendAjaxRequest(query,ajax_url);
    }
 }
/* */
function getAVMListConfirm(xmlObj)
 {
   var xml_action=xmlObj.getElementsByTagName('action')[0];
   if(parseInt(xml_action.getAttribute("code"),10)==1)
    {
      var prefix=xml_action.getAttribute("prefix");
      var formObj=(prefix.length>0)?document.forms['fsearch']:document.forms['fsearchadd'];
      var selObjArr = [ formObj.elements[(prefix+'avtovendor')], formObj.elements[(prefix+'avtomodel')], formObj.elements[(prefix+'avyear')], formObj.elements[(prefix+'avmodif')] ];
      for(var i=1;i<5;i++) 
       {
          var vObj=xmlObj.getElementsByTagName(('list'+i))[0];
          rebildSelect(selObjArr[i-1],vObj);
       }
      rebildAVM(xmlObj);
    }
   else
    {
      if(xml_action.getAttribute("errmsg")!='') alert(xml_action.getAttribute("errmsg"))
      else        alert('Неизвестная страница');
      window.reload();
    }
 }
/* */
function rebildSelect(selObj,vObj,formObj)
 {
    if(vObj)
     {
        while(selObj.options.length) selObj.options[0] = null;
        selObj.options[0] = new Option ('Все',0);
        if(vObj.childNodes.length>0)
         {
            for(var i=0,l=vObj.childNodes.length;i<l;i++)
             {
                var childObj=vObj.childNodes[i];
                if(childObj.nodeName!='item') continue;
                var sel=(parseInt(childObj.getAttribute("selected"),10)>0)?true:false;
                selObj.options[selObj.options.length]= new Option(childObj.getAttribute("name"),parseInt(childObj.getAttribute("id"),10),sel,sel);
             }
         }
        selObj.options[0].selected=true;
        selObj.className=(selObj.options.length > 1)?"background":"";
     }
 }
/* */
function rebildAVM(xmlObj)
 {
   var maindivObj=document.getElementById("avmDiv");
   maindivObj.style.display='none';
   var objArr=['disk','tyre'];
   var cnt=0;
   for(var i=0;i<2;i++)
    {
      var divObj=document.getElementById("avm"+objArr[i]+"Div");
      divObj.innerHTML="";
      var vObj=xmlObj.getElementsByTagName((objArr[i]+'avm'))[0];
      if(vObj && vObj.childNodes.length>0)
       {
          for(var j=0,l=vObj.childNodes.length;j<l;j++)
           {
              var childObj=vObj.childNodes[j];
              if(childObj.nodeName!='item') continue;
              cnt++;
              var def=(parseInt(childObj.getAttribute("def"),10)>0)?true:false;
              divObj.innerHTML+='<div><a href="'+childObj.getAttribute("href")+'">'+childObj.getAttribute("name")+'</a></div>'
           }
       }
    }
   if(cnt) maindivObj.style.display='block';
 }

/* */
function goSearch(mode,from)
 {
    formObj=document.forms['fsearch'];
    formObj.map.value=0;
    formObj.from.value=(from==null)?0:from;
    formObj.mode.value=mode;
    switch(mode)
     {
       case "tyre":
        formObj.dbrend.disabled=true;
        formObj.davtovendor.disabled=true;
        formObj.davtomodel.disabled=true;
        formObj.davyear.disabled=true;
        formObj.davmodif.disabled=true;
        formObj.dwidth.disabled=true;
        formObj.dradius.disabled=true;
        formObj.dplanplace.disabled=true;
        formObj.dvet.disabled=true;
        formObj.dcentreboss.disabled=true;
        break;
       case "disk":
        formObj.tbrend.disabled=true;
        formObj.tseason.disabled=true;
        formObj.twidth.disabled=true;
        formObj.theight.disabled=true;
        formObj.tradius.disabled=true;
        formObj.tavtovendor.disabled=true;
        formObj.tavtomodel.disabled=true;
        formObj.tavyear.disabled=true;
        formObj.tavmodif.disabled=true;
        break;
     }
    formObj.submit();
 }
function goSearchTop(btnObj)
 {
   var go_s = false;
   var formObj=btnObj.form;
   var prefix = formObj.elements['prefix'].options[formObj.elements['prefix'].selectedIndex].value;
   for(var j=0,jl=formObj.elements.length;j<jl;j++)
    {
      var elObj=formObj.elements[j];
      if(elObj.tagName=='SELECT' && elObj.name!='prefix')
       {
         var val = parseInt(elObj.options[elObj.selectedIndex].value,10);
         if(val > 0)
          {
            go_s=true;
            formObj.appendChild(createHtmlElement('input',{name:(prefix+elObj.name), value:val, type:'hidden'}))
          }
       }
    }
   if(go_s) 
    {
      formObj.prefix.disabled=true;
      formObj.avtovendor.disabled=true;
      formObj.avtomodel.disabled=true;
      formObj.avyear.disabled=true;
      formObj.avmodif.disabled=true;
      formObj.appendChild(createHtmlElement('input',{name:'mode', value:((prefix=='t')?'tyre':'disk'), type:'hidden'}))
      formObj.submit();
    }
 }
