
var ls = false;
var ss = false;
var iv = false;
var sb = false;
var sf = false;
var hc = false;
var dt = false;
var dc = false;

var act = -1;

function keyDown (ev) {
  if (!ev)
    ev = window.event;
  if (ev.which) {
    kc = ev.which;
  } else if (ev.keyCode) {
    kc = ev.keyCode;
  }

  if(kc == 40)
  {
    if(document.getElementById('sg'+(act+1)))
    {
      if(act != -1 && document.getElementById('sg'+act))
       divOut(document.getElementById('sg'+act));

      act++;

      setValue(document.getElementById('sg'+act));
      divOver(document.getElementById('sg'+act));
    }
  }

  if(kc == 38)
  {
    if(document.getElementById('sg'+(act-1)))
    {
      if(act != -1 && document.getElementById('sg'+act))
       divOut(document.getElementById('sg'+act));

      act--;

      setValue(document.getElementById('sg'+act));
      divOver(document.getElementById('sg'+act));
    }
  }
}

document.onkeydown = keyDown;


function getHTTPObject() {
  if(typeof XMLHttpRequest != 'undefined') {
    return new XMLHttpRequest();
  }

  try {
    return new ActiveXObject("Msxml2.XMLHTTP");
  }

  catch(e) {
    try {
      return new ActiveXObject("Microsoft.XMLHTTP");
    }

    catch(e) {}
  }

  return false;
}

var http = getHTTPObject();


function suggest(lng, dir) {
  var str = sb.value;

  if(ss == '' || sb == '')
   return;

  if(str == '')
    ss.style.display = 'none';
  else if (str != ls && (http.readyState == 4 || http.readyState == 0)) {
    ls = str;

    http.open("GET", ((dir)? '../' : '') + 'search/suggest.php?q=' + escape(str) + '&l=' + lng, true);

    http.onreadystatechange = function() {
      if(http.readyState == 4) {
        act = -1;
        ret = http.responseText.split("\n");
        pix = ss.style.width.replace(/px/g, '') -4;

        ss.innerHTML = '';
        ss.style.display = 'inline';

        for(i = 0; i < ret.length - 1; i++)
         ss.innerHTML += '<div id="sg'+ i +'" onclick="javascript:divClick(this);" onmouseover="divOver(this);" onmouseout="divOut(this);" style="display:block; padding:2px; width:' + pix  + 'px; cursor:default;">' + ret[i] + '</div>';
      }
    }

    http.send(null);
  }
}

function suggestStart(searchBox, suggestBox, searchForm, pageLang, pageDepth, hoverColor, defaultText) {

  hc = (hoverColor)? hoverColor : '#F3F3F3';
  sb = searchBox;
  ls = sb.value;
  dt = defaultText;

  if(ls == dt)
  {
    dc = sb.style.color;

    sb.value = '';
    sb.style.color = '#000000';
  }

  ss = document.getElementById(suggestBox);
  sf = document.getElementById(searchForm);

  iv = window.setInterval('suggest("' + pageLang + '", ' + pageDepth + ');', 300);
}

function suggestEnd() {

  if(dt && sb.value == '')
  {
    sb.value = dt;
    sb.style.color = dc;
  }

  if(ss)
  {
    ss.style.display = 'none';
    ss.innerHTML = '';

    ss = false;
  }

  if(iv)
  {
    window.clearInterval(iv);

    iv = false;
  }
}

function setValue(div) {
  sb.value = ls = div.innerHTML.replace(/&amp;/g, '&');
}

function divOver(div) {
  div.style.backgroundColor = hc;
}

function divOut(div) {
  div.style.backgroundColor = 'transparent';
}

function divClick(div) {
  setValue(div)
  ss.style.display = 'none';
  sf.submit();
}
