onerror=handleErr;

var lookfor="";
var search="";
var x=0;
var update = 0;
var forceupdate = 0;
var lasttimer = 0;
var counter1 = 0;
var highlight = -1;
var highlightmove = 0;
var cancel = 0;

var f_lookfor="";
var f_search="";
var f_x=0;
var f_update = 0;
var f_forceupdate = 0;
var f_lasttimer = 0;
var f_counter1 = 0;
var f_highlight = -1;
var f_highlightmove = 0;
var f_cancel = 0;

function suggesttimer(event)
{
// 13=return, 38=up, 40=down
if(event.keyCode == 13 || event.keyCode == 38 || event.keyCode == 40)
 {
 if(event.keyCode == 13)
  {
  cancel = 1;
  }
 if(event.keyCode == 38)
  {
  clearbackground(highlight);
  highlight--;
  if(highlight < 0) { highlight = 0; }
  highlightmove = 1;
  var s = document.getElementById("suggesttext"+highlight);
  if(s)
   {
   document.forms['searchform'].elements['search'].value = s.innerHTML;
   document.getElementById("suggest"+highlight).style.backgroundColor = "#FFFFFF";
   document.getElementById("suggestpic"+highlight).className = "menuon";
   }
  }
 if(event.keyCode == 40)
  {
  clearbackground(highlight);
  highlight++;
  highlightmove = 1;
  var s = document.getElementById("suggesttext"+highlight);
  if(s)
   {
   document.forms['searchform'].elements['search'].value = s.innerHTML;
   document.getElementById("suggest"+highlight).style.backgroundColor = "#FFFFFF";
   document.getElementById("suggestpic"+highlight).className = "menuon";
   }
  else
   {
   clearbackground(highlight);
   highlight--;
   document.getElementById("suggest"+highlight).style.backgroundColor = "#FFFFFF";
   document.getElementById("suggestpic"+highlight).className = "menuon";
   }
  }
 return true;
 }
else
 {
 clearTimeout(lasttimer);
 highlightmove = 0;
 x=0;
 update = 1;
 lasttimer = setTimeout("suggest(counter1);",500);
 counter1++;
 return true;
 }
}

function suggest(countermatch)
{
if(counter1 != countermatch)
 {
 update = 1;
 forceupdate = 1;
 }
search = document.forms['searchform'].elements['search'].value;
x++;
if(highlightmove == 0)
 {
 if(countermatch == counter1 || update == 1 || forceupdate == 1)
  {
  if(lookfor != search || forceupdate == 1)
   {
   update = 0;
   if(search.length < 3)
    {
    document.getElementById("suggest").className="menuoff"
    document.getElementById("suggest").innerHTML="";   
    }
   else
    {
    lookfor = search;
    forceupdate = 0;
    if(counter1 != countermatch)
     {
     update = 1;
     forceupdate = 1;
     }
    if(cancel == 0)
     {
     var url = "http://" + document.location.host + "/cgi-bin/suggest.cgi?search=" + escape(search);
     var request =  new XMLHttpRequest();
     request.open("GET", url, false);
     request.send(null);
     highlight = -1;
     document.getElementById("suggest").innerHTML=request.responseText;
     }
    x = 0;
    if(counter1 != countermatch)
     {
     update = 1;
     forceupdate = 1;
     }
    //document.getElementById("suggest").innerHTML=update+"<br>"+counter1+"<br>"+countermatch+"<br>"+request.responseText;
    document.getElementById("suggest").className="menuon"
    }
   }
  }
 }
clearTimeout(lasttimer);
lasttimer = setTimeout("suggest(counter1);", 500 + 10*x*x*x);
if(counter1 != countermatch)
 {
 update = 1;
 forceupdate = 1;
 }
return false;
}

function clearbackground(highlight)
{
var s = document.getElementById("suggesttext"+highlight);
if(s)
 {
 document.forms['searchform'].elements['search'].value = s.innerHTML;
 document.getElementById("suggest"+highlight).style.backgroundColor = "";
 document.getElementById("suggestpic"+highlight).className = "menuoff";
 }
}

// F FUNCTIONS

function f_suggesttimer(event)
{
// 13=return, 38=up, 40=down
if(event.keyCode == 13 || event.keyCode == 38 || event.keyCode == 40)
 {
 if(event.keyCode == 13)
  {
  f_cancel = 1;
  }
 if(event.keyCode == 38)
  {
  f_clearbackground(f_highlight);
  f_highlight--;
  if(f_highlight < 0) { f_highlight = 0; }
  f_highlightmove = 1;
  var s = document.getElementById("f_suggesttext"+f_highlight);
  if(s)
   {
   document.forms['f_searchform'].elements['f_search'].value = s.innerHTML;
   document.getElementById("f_suggest"+f_highlight).style.backgroundColor = "#FFFFFF";
   }
  }
 if(event.keyCode == 40)
  {
  f_clearbackground(f_highlight);
  f_highlight++;
  f_highlightmove = 1;
  var s = document.getElementById("f_suggesttext"+f_highlight);
  if(s)
   {
   document.forms['f_searchform'].elements['f_search'].value = s.innerHTML;
   document.getElementById("f_suggest"+f_highlight).style.backgroundColor = "#FFFFFF";
   }
  else
   {
   f_clearbackground(f_highlight);
   f_highlight--;
   document.getElementById("f_suggest"+f_highlight).style.backgroundColor = "#FFFFFF";
   }
  }
 return true;
 }
else
 {
 clearTimeout(f_lasttimer);
 f_highlightmove = 0;
 f_x=0;
 f_update = 1;
 f_lasttimer = setTimeout("f_suggest(f_counter1);",500);
 f_counter1++;
 return true;
 }
}

function f_suggest(countermatch)
{
if(f_counter1 != countermatch)
 {
 f_update = 1;
 f_forceupdate = 1;
 }
f_search = document.forms['f_searchform'].elements['f_search'].value;
f_x++;
if(f_highlightmove == 0)
 {
 if(countermatch == f_counter1 || f_update == 1 || f_forceupdate == 1)
  {
  if(f_lookfor != f_search || f_forceupdate == 1)
   {
   f_update = 0;
   if(f_search.length < 3)
    {
    document.getElementById("f_suggest").className="menuoff"
    document.getElementById("f_suggest").innerHTML="";   
    }
   else
    {
    f_lookfor = f_search;
    f_forceupdate = 0;
    if(f_counter1 != countermatch)
     {
     f_update = 1;
     f_forceupdate = 1;
     }
    if(f_cancel == 0)
     {
     var url = "http://" + document.location.host + "/cgi-bin/suggest.cgi?full=" + escape(f_search);
     var request =  new XMLHttpRequest();
     request.open("GET", url, false);
     request.send(null);
     f_highlight = -1;
     document.getElementById("f_suggest").innerHTML=request.responseText;
     }
    f_x = 0;
    if(f_counter1 != countermatch)
     {
     f_update = 1;
     f_forceupdate = 1;
     }
    //document.getElementById("suggest").innerHTML=update+"<br>"+counter1+"<br>"+countermatch+"<br>"+request.responseText;
    document.getElementById("f_suggest").className="menuon"
    }
   }
  }
 }
clearTimeout(f_lasttimer);
f_lasttimer = setTimeout("f_suggest(f_counter1);", 500 + 10*f_x*f_x*f_x);
if(f_counter1 != countermatch)
 {
 f_update = 1;
 f_forceupdate = 1;
 }
return false;
}

function f_clearbackground(f_highlight)
{
var s = document.getElementById("f_suggesttext"+f_highlight);
if(s)
 {
 document.forms['f_searchform'].elements['f_search'].value = s.innerHTML;
 document.getElementById("f_suggest"+f_highlight).style.backgroundColor = "";
 }
}

// GENERAL FUNCTIONS

function handleErr(msg,url,l)
{
txt="Error: "+msg+"\n";
txt+="URL: "+url+ "\n";
txt+="Line: "+ l+"\n\n";
txt+="Click OK to continue.\n\n";
//alert(txt);
return true;
}



