/**
 * AJAX code to fill search field with server items
 */

var sf_input, sf_input_lastvalue;
var sf_div;
var req; 

var noofresults = 0;
var current = -1;


/**
 * send request
 */
function searchfield_prefetch(lng, host, aEvent)
{
  //searchfield_init();

  // keyboard movements
  if( noofresults > 0 )    // already got results
  {
    var myevent = window.event ? window.event : aEvent;

    // handle down and up cursor keys
    if (myevent.keyCode == 40 || myevent.keyCode == 38) 
    {
      //suggitem = document.getElementById('sugg' + current);
      //if( !suggitem ) 
      //  suggitem = document.getElementById('sugg0');
      suggestOut('sugg' + current);

      if (myevent.keyCode == 40)   // down
      {
        current++;
        if( current >= noofresults ) 
          current = 0;
      } 
      else 
      {
        current--;
        if( current < 0 ) 
          current = noofresults - 1;
      }
      suggestOver('sugg' + current);

      suggitem_a = document.getElementById('sugg_a' + current);
      searchfield_adaptword(suggitem_a.innerHTML, 'keepdiv');

      return;
    }
    // Escape + Cursor right
    else if( (myevent.keyCode == 27) || (myevent.keyCode == 39) )
    {
      sf_div.style.visibility = 'hidden';
      return;
    }
  }


  // start AJAX request
  if( sf_input_lastvalue != sf_input.value )
  {
    //req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');    // needed in case of POST (not GET) only
    req.open('GET', host + 'searchwords_oftenused.php?lng=' + lng + '&startwith=' + sf_input.value, true);
    req.onreadystatechange = process_sfprefetch;   // call it AFTER open() to make it work in f**king IE
    req.send(null);

    // keep last value of input field in mind
    sf_input_lastvalue = sf_input.value;
  }
}


/**
 * handle response
 */
function process_sfprefetch()
{
  if( req.readyState == 4 )   // XHR-state 'complete'
  {
    if( req.status == 200 )   // want HTTP status code 'OK' only
    {
      sf_div.innerHTML = '';
      var sf_words_str = req.responseText;
      var sf_words_arr = sf_words_str.split("\n");

      if( sf_words_str != "" )
      {
        // adding server response to div
        for( i=0; i<sf_words_arr.length; i++)
        {
          if( sf_words_arr[i] != "" )
            sf_div.innerHTML += "<div id='sugg" + i + "' class='suggestitem'><a id='sugg_a" + i + "' onmouseover='suggestOver(\"sugg" + i + "\");' onmouseout='suggestOut(\"sugg" + i + "\");' href='javascript: searchfield_adaptword(\"" + sf_words_arr[i] + "\");'>" + sf_words_arr[i] + "</a></div>";
        }
        sf_div.style.visibility = 'visible';   // show div by setting style absolutely
        noofresults = i - 1;
      }
      else
      {
        // hide div
        sf_div.style.visibility = 'hidden';
      }
    }
    //else
    //  alert("There was a problem retrieving the XML data:\n" + req.statusText);
  }
}


/**
 * handle click on suggestion
 */
function searchfield_adaptword(chosenword, keepdiv)
{
  // "copy" value
  sf_input.value = chosenword;
        
  // hide div
  if( !keepdiv )
    sf_div.style.visibility = 'hidden';
}




/**
 * init funcs
 */
function searchfield_init()
{
  if( typeof sf_input == 'undefined' )      
    sf_input = document.getElementById('searchfield');
  if( typeof sf_div == 'undefined' )      
    sf_div = document.getElementById('searchfield_prefetch');
  if( typeof req == 'undefined' )      
    req = createXMLHttpRequest();

  // keep initial value of input field in mind
  sf_input_lastvalue = sf_input.value;
}

function createXMLHttpRequest()
{
  var myreq = null;

  if( window.XMLHttpRequest )      // Mozilla, Safari, ...
    myreq = new XMLHttpRequest();
  else if( window.ActiveXObject )  // IE
    myreq = new ActiveXObject("Microsoft.XMLHTTP");

/*  var req = null;
  try 
  {
    req = new ActiveXObject("MSXML2.XMLHTTP");
  }
  catch( err_MSXML2 )
  {
    try
    {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch( err_Microsoft )
    {
      if( typeof XMLHttpRequest != "undefined" ) 
        req = new XMLHttpRequest;
    }
  } */

  return myreq;
}


/**
 * onmouseover/out funcs
 */
function suggestOver(currentsuggestdiv) 
{
  var csd = document.getElementById(currentsuggestdiv); 
	//div_value.className = 'suggestitem';
  if( csd )
    csd.className = 'suggestitemover';
}

function suggestOut(currentsuggestdiv) 
{
  var csd = document.getElementById(currentsuggestdiv); 
	//div_value.className = 'suggestitem';
  if( csd )
    csd.className = 'suggestitem';
}



