var sajax;
var suggestboxposset = false;
var suggestionscount;
var hoveredsuggestion = -1;
var searchphrase;
var dontsubmit;

function HoverSuggestion(id) {
  hoveredsuggestion = id;
  for(i=0; i<suggestionscount; i++) {
    document.getElementById('sug_'+i).className='suggestion_inactive';
  }
  if (id!=-1) document.getElementById('sug_'+id).className='suggestion_active';
  if (id!=-1) {
    SetTransparency(document.getElementById('searchsuggest'),100);
  } else {
    SetTransparency(document.getElementById('searchsuggest'),80);
  }
}

function SuggestSearch(e, cat, expr) {
  var targetdiv = document.getElementById('searchsuggest');
  var textbox = document.getElementById('searchtxt');
  // Checking for up and down events
  if(window.event) {  // IE
    keynum = e.keyCode
  } else if(e.which) { // Netscape/Firefox/Opera
    keynum = e.which
  }
  if (keynum==38) {  // keyup - lets change the position in list
    if(targetdiv.style.display!='none') HoverPrevSuggestion();
    return false;
  }
  if (keynum==40) {  // keydown - lets change the position in list
    if(targetdiv.style.display!='none') HoverNextSuggestion();
    return false;
  }
  if (keynum==8) {
    if (targetdiv.style.display!='none') {
      HoverSuggestion(-1);
      targetdiv.style.display='none';
      return false;
    }
  }
  if (keynum==13) {
    if(targetdiv.style.display!='none') {
      if (hoveredsuggestion!=-1) {
        document.getElementById('searchtxt').value = document.getElementById('sug_'+hoveredsuggestion).innerHTML;
        if  (document.all) {  // IE
          var u=textbox.createTextRange();
          u.moveStart("character", textbox.value.length);
          u.select();
        } else if (document.getElementById  || document.layers) {  // W3C Standards Compliant browser (Netscape, Mozilla, Opera)
          textbox.setSelectionRange(textbox.value.length, textbox.value.length);
        }
        targetdiv.style.display = 'none';
      }
    }
    return false;
  }
  // Start search
  if(expr.trim) {
    searchphrase = expr;
    HoverSuggestion(-1);
    delete sajax;
    sajax = GetXmlHttpObject();
    sajax.onreadystatechange = sStateChanged;
    sajax.open("GET",'./bincms/getsuggestions.php?expr='+expr+'&cat='+cat,true);
    sajax.send(null);
  }
}

function sStateChanged() {
  if (sajax.readyState==4){
    if (sajax.status==200) { 
      var response = sajax.responseText;
      if(response) {
        suggestionscount = sajax.getResponseHeader('ShopCraft-SuggestionsCount');
        var targetdiv = document.getElementById('searchsuggest')
        if(!suggestboxposset) SetSuggestBoxPos();
        targetdiv.innerHTML = response;
        //alert(response);
        targetdiv.style.display = 'block';
        searchinprogress = false;
      }
    }
  }
}

function SetSuggestBoxPos() {
  var b = document.getElementById('searchsuggest')
  var targetx, targety;
  targetx = GetLeftOffset(document.getElementById('searchtxt'));
  targety = GetTopOffset(document.getElementById('searchtxt'));
  b.style.left = targetx + 'px';
  b.style.top = (targety + 20) + 'px';
  suggestboxposset = true;
}

function HoverNextSuggestion() {
  var textbox = document.getElementById('searchtxt');
  var desiredsuggestion=hoveredsuggestion+1;
  if (desiredsuggestion>=suggestionscount) desiredsuggestion=0;
  HoverSuggestion(desiredsuggestion);
  textbox.value = document.getElementById('sug_'+hoveredsuggestion).innerHTML;
  if  (document.all) {  // IE
    var u=textbox.createTextRange();
    u.moveStart("character", searchphrase.length);
    u.select();
  } else if (document.getElementById  || document.layers) {  // W3C Standards Compliant browser (Netscape, Mozilla, Opera)
    textbox.setSelectionRange(searchphrase.length, textbox.value.length);
  }
}

function HoverPrevSuggestion() {
  var textbox = document.getElementById('searchtxt');
  var desiredsuggestion=hoveredsuggestion-1;
  if (desiredsuggestion<=-1) desiredsuggestion=suggestionscount-1;
  HoverSuggestion(desiredsuggestion);
  textbox.value = document.getElementById('sug_'+hoveredsuggestion).innerHTML;
  if  (document.all) {  // IE
    var u=textbox.createTextRange();
    u.moveStart("character", searchphrase.length);
    u.select();
  } else if (document.getElementById  || document.layers) {  // W3C Standards Compliant browser (Netscape, Mozilla, Opera)
    textbox.setSelectionRange(searchphrase.length, textbox.value.length);
  }
}

function VerifySearch() {
  var targetdiv = document.getElementById('searchsuggest');
  var textbox = document.getElementById('searchtxt');
  if(targetdiv.style.display!='none') {
    if (hoveredsuggestion!=-1) {
      document.getElementById('searchtxt').value = document.getElementById('sug_'+hoveredsuggestion).innerHTML;
      if  (document.all) {  // IE
        var u=textbox.createTextRange();
        u.moveStart("character", textbox.value.length);
        u.select();
      } else if (document.getElementById  || document.layers) {  // W3C Standards Compliant browser (Netscape, Mozilla, Opera)
        textbox.setSelectionRange(textbox.value.length, textbox.value.length);
      }
      targetdiv.style.display = 'none';
      return false;
    }
  }
}
