document.observe('dom:loaded', function(e){
  var cur;
  var m;
  function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
      ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
      ro = new XMLHttpRequest();
    }
    return ro;
  }
  var http = createRequestObject();
  function sndReq(action) {
    http.open('get', action);
    http.onreadystatechange = handleResponse;
    http.send(null);
  }
  function handleResponse() {
    if(http.readyState == 4){
  		document.getElementById('searchResults').innerHTML = http.responseText;
  		cur = null;
  		m = false;
  		var r = $$('#searchResults ul li a');
  		if (r[0]) {
  		  $('searchResults').setStyle({display: 'block'});
  		  r.each(function(l){
          l.observe('mouseover', function(e){
            if (cur) {cur.setStyle({backgroundColor: '#fff', color: '#111',	fontWeight: 'normal'})};
            cur = this;
            m = true;
            cur.setStyle({backgroundColor: '#6792BE', color: 'white',	fontWeight: 'bold'});
          })
        })
  		} else {
  		  $('searchResults').setStyle({display: 'none'});
  		}
    }
  }
  function doSearch() {
    var val = '/doSearch/search?q=' + $('q2').value; 
  	sndReq(val);
  	return false;
  }
  function openWindow(url) {
    window.open(url,'popupWindow','resizable=no, scrollbars=yes, toolbar=no, status=no, height=650, width=720');
  }
  function initSearch() {
    $('SearchBox').onsubmit = function(e) {
      return submitQuery();
    }
    $('q2').onkeyup = function(e){
      var t = false;
      if ($('searchResults').childElements().first()) {t = true};
      var k = window.event ? window.event.keyCode : e.which;
      switch(k) {
        case 13:
          if (t) {submitQuery();};
          break;
        case 37:
        case 38:
          if (t) {navUp();};
          break;
        case 39:
        case 40:
          if (t) {navDn();};
          break;
        default:
          doSearch();
      }
    }
  }
  function submitQuery() {
    if (m) {return true};
    if (cur) {window.location = cur.href; return false;} else {return true};
  }

  var over = {backgroundColor: '#6792BE', color: 'white',	fontWeight: 'bold'}
  var out = {backgroundColor: '#fff', color: '#111',	fontWeight: 'normal'}

  function navUp() {
    if (cur) {
      m = false;
      adjustStyle(out)
      if (cur = getPrevious(cur)) {adjustStyle(over)} else {navUp()};
    } else {
      cur = $('searchResults').descendants().last();
      adjustStyle(over)
    }
  }
  function navDn() {
    if (cur) {
      m = false;
      adjustStyle(out);
      if (cur = getNext(cur)) {adjustStyle(over)} else {navDn()};
    } else {
      cur = $('searchResults').down('a');
      adjustStyle(over)
    }
  }
  function getPrevious(e) {
    if (e.up().previous('#searchResults li')) {return e.up().previous('#searchResults li').down()};
    if (e.up('ul').previous('#searchResults ul')) {return e.up('ul').previous('#searchResults ul').descendants().last()};
  }
  function getNext(e) {
    if (e.up().next('#searchResults li')) {return e.up().next('#searchResults li').down()};
    if (e.up('ul').next('#searchResults ul')) {return e.up('ul').next('#searchResults ul').down('a')};
  }
  function adjustStyle(o) {
    cur.setStyle(o);
    if (o == over) {$('q2').value = cur.innerHTML};
  }
  initSearch();
})