var trans= [];
for (var i=0x410; i<= 0x44F; i++) 
  trans[i] = i - 0x350;
trans[0x401] = 0xA8;
trans[0x451] = 0xB8;

var escapeOrig = window.escape;

window.escape = function(str) {
  var ret = [];
  for (var i=0; i<str.length; i++) {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return escapeOrig(String.fromCharCode.apply(null,ret));
}

// добавление функции f в список загрузки по событию onload
function addOnLoad(f) {
   var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null
   if (root){
      if(root.addEventListener) root.addEventListener("load", f, false)
      else if(root.attachEvent) root.attachEvent("onload", f)
   } else {
      if(typeof window.onload == 'function') {
         var existing = window.onload
         window.onload = function() {
            existing()
            f()
         }
      } else {
         window.onload = f
      }
   }
}

function loadPage(url,elementId,linkId) {
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    request.onreadystatechange = function(){processRequestChange(elementId,linkId)};
    request.open("GET", url, true);
    request.send(null);
  } else {
    request = new ActiveXObject("Microsoft.XMLHTTP");
    if (request) {
      request.onreadystatechange = function(){processRequestChange(elementId,linkId)};
      request.open("GET", url, true);
      request.send();
    }
  }
}

function processRequestChange(elementId,linkId) {
  abortRequest = window.setTimeout("request.abort();",10000);
  if (request.readyState == 4) {
    clearTimeout(abortRequest);
    if (request.status == 200) {
      elementDiv = document.getElementById(elementId);
      if (elementDiv) {
        elementDiv.innerHTML = request.responseText;
      }
      if (request.responseText == '') {
        elementDiv.style.display = 'none';
      }
      linkDiv = document.getElementById(linkId);
      if (linkDiv) {
        linkDiv.innerHTML = '<a href="index.php?section=backet" title="Перейти в корзину"><img src="img/buyed.gif" align="right" /></a>'+
                            'Уже в корзине<br />'+
                            '<a class="to_basket" href="index.php?section=backet" title="Перейти в корзину">перейти в корзину</a>';
      }
    }
  }
}


  function getJson(url,func) {
    if (window.XMLHttpRequest) {
      request = new XMLHttpRequest();
      request.onreadystatechange = function(){processJson(func)};
      request.open("GET", url, true);
      request.send(null);
    } else {
      request = new ActiveXObject("Microsoft.XMLHTTP");
      if (request) {
        request.onreadystatechange = function(){processJson(func)};
        request.open("GET", url, true);
        request.send();
      }
    }
  }
  
  function processJson(func) {
    abortRequest = window.setTimeout("request.abort();",10000);
    if (request.readyState == 4) {
      clearTimeout(abortRequest);
      if (request.status == 200) {
        func(request.responseText);
      }
    }
  }


  
  function autocompleteInit(inputId,url) {
    var inputElement =document.getElementById(inputId);

    // создаем div для списка
    var suggestList = document.createElement("div");
    suggestList.setAttribute( 'id', 'suggest');
    suggestList.style.width = inputElement.offsetWidth;
    suggestList.currentPos = -1;
    suggestList.onmouseover = function() {this.mouseover = true;};
    suggestList.onmouseout = function() {this.mouseover = false;};
    inputElement.parentNode.appendChild(suggestList);
    
    // по нажатию на клавишу делаем запрос и показываем список
    inputElement.onkeyup = function (e) {
      if (window.event) {
        keynum = event.keyCode;
      } else if (e.which) {
        keynum = e.which;
      }
      if (keynum!=38 && keynum!=40 && keynum!=13 && keynum!=32) {
        getJson(url+'?q='+escape(this.value),
          function(json){
            showSuggest(json,inputElement,suggestList)
          }
        )
      } else {
        return false;
      }
    };
    
    // по клавишам вверх/вниз смещаем выделение в списке, по ПРОБЕЛ/Enter выбираем позицию и прячем список
    inputElement.onkeydown = function (e) {
      if (window.event) {
        keynum = event.keyCode;
      } else if (e.which) {
        keynum = e.which;
      }
      if (keynum==40) {
        select(suggestList,1);
      }
      if (keynum==38) {
        select(suggestList,-1);
      }
      if (keynum==13 || keynum==32) {
        inputElement.value = suggestList.childNodes[suggestList.currentPos].innerHTML;
        suggestList.style.display = 'none';
        return false;
      }
    }
  
    // потере фокуса инпутом прячем suggestList  
    inputElement.onblur = function() {
      if ( !suggestList.mouseover ) {
        suggestList.style.display='none';
      }
    }
    
  }

  // показываем список list для поля input с данными из json
  function showSuggest(json,input,list) {
    var data = eval(json);

    list.innerHTML = '';
    list.currentPos = -1;
    if (data && data.length>0 && data!='') {
      for (var i=0;i<data.length;i++) {
        
        var optionElement = document.createElement("div");
        optionElement.innerHTML = data[i];
        optionElement.onclick = function () {
          input.value = this.innerHTML;
          input.focus();
          list.style.display = 'none';
        }
        list.appendChild(optionElement);
      }
      list.style.display = 'block';
    } else {
      list.style.display = 'none';
    }
  }
  
  // перемещаем выделение в списке list на offset позиций
  function select(list,offset) {
    if (list.currentPos >= 0) list.childNodes[list.currentPos].className = '';
    list.currentPos += offset;
    if ( list.currentPos < 0 ) list.currentPos = 0;
    if ( list.currentPos >= list.childNodes.length ) list.currentPos = list.childNodes.length - 1;
    list.childNodes[list.currentPos].className = 'selected';
  }  

  
function onlyRecalc() {
  document.getElementById('zakaz').disabled = true;
}


function showDiv(elementId) {
  elementDiv = document.getElementById(elementId);
  if (elementDiv) {
    if (elementDiv.style.display == 'block') elementDiv.style.display = 'none';
    else elementDiv.style.display = 'block';
  }
}