var url = 'suggestie.php';
var delay = 100;
var timer;
var acBase;

Event.observe(window, 'load', function() {
  var s = $('searchbox');
  var t = $('suggest');
  // turn off autocompletion
  s.setAttribute("autocomplete", "off");
  s.focus();
  s.observe('keydown', function(e){
    var key = e.keyCode;
    switch(key) {
      case Event.KEY_UP:
	processUp();
	break;
      case Event.KEY_DOWN:
	processDown();
	break;
    default:
      t.setStyle({'display': 'none'});
      clearTimeout(timer);
      // set up a timeout to load suggestions
      timer = setTimeout( getSuggestions, delay);
    }
  });
  t.setStyle({zIndex: 1000});
  t.observe('click', function(e){
    autoComplete(s,Event.element(e).innerHTML);
    $('searchform').submit();
  });
  t.observe('mouseover', function(e){
    var list = t.firstChild;
    if (list) {
      var sugs = list.childNodes;
      for (var teller = 0 ;teller < sugs.length; teller++)
	{
	  sugs[teller].className = '';
	}
      Event.element(e).className = 'active';
    }
  });
});

function getSuggestions() {
  var s = $('searchbox');
  var t = $('suggest');
if (s.value.length) {
	new Ajax.Request(url, {
         method: 'post',
	 parameters: 'q=' + escape(s.value),	  
	 onSuccess: function(transport) {
	   if (200 == transport.status) {
	     var words = transport.responseText.split('", "');
	     var hits = words.length;
	     if (hits > 0) {
	       //delete child ul
	       while (t.childNodes.length)
		 t.removeChild(t.firstChild);
	       // create new list
	       var ul = document.createElement('ul');
	       for (var teller = 0 ; teller < hits; teller++) {
		 var li = document.createElement('li');
		 var tn = document.createTextNode( words[teller].replace(/\"/g,'') );
		 li.appendChild(tn);
		 ul.appendChild(li);
	       }
	       t.appendChild(ul);
	       // place suggestions exactly above search bar
               Position.clone(s,t, {offsetTop : -t.getHeight(), setHeight : false});
	       t.setStyle({'display': 'block'});
	       // set autocomplete base
	       acBase = s.value;
	       }
	   }
	 }
        })
	  }
}


function autoComplete(elm, str)
{
    var len = acBase.length;
    add = str.substr(len);
    elm.value = acBase + add;
    if (elm.setSelectionRange) {
        elm.setSelectionRange(len, str.length);
    }
    else { // IE
        var oRange = elm.createTextRange();
        oRange.moveStart("character", len);
        oRange.moveEnd("character", add.length);
        oRange.select();
        elm.caretPos = len;
    }
}



// handle up event
function processUp()
{
  var list = $('suggest').firstChild;
  if (list) {
    var sugs = list.childNodes;
    var teller;
    for (teller = 0 ;teller < sugs.length; teller++)
      {
	if(sugs[teller].className == 'active' && teller != 0) {
	  sugs[teller].className = '';
	  teller--;
	  sugs[teller].className = 'active';
	  break;
	}
      }
    // no active element yet, make last one active
    if(teller == sugs.length) {
      teller--; 
      sugs[teller].className = 'active';
    }
    autoComplete( $('searchbox'), sugs[teller].innerHTML);
  }
}

// handle down event
function processDown()
{
  var list = $('suggest').firstChild;
  if (list) {
    var sugs = list.childNodes;
    var teller;
    for (teller = 0 ;teller < sugs.length; teller++)
      {
	if(sugs[teller].className == 'active' && teller != sugs.length -1) {
	  sugs[teller].className = '';
	  teller++;
	  sugs[teller].className = 'active';
	  autoComplete( $('searchbox'), sugs[teller].innerHTML);
	  break;
	}
      }
  }
}


function installSearchEngine() {
 if (window.external && ("AddSearchProvider" in window.external)) {
   // Firefox 2 and IE 7, OpenSearch
   window.external.AddSearchProvider("http://leenwoordenboek.com/zoekleenwoord.xml");
 } else {
   // No search engine support (IE 6, Opera, etc).
   alert("Leenwoorden zoekmachine kan helaas niet geinstalleerd worden. Is uw browser ouder dan FireFox 2 of Internet Explorer 7?");
 }}
