//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else if(window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  } else {
    // No ajax support
    return null;
  }
}

function findPos(obj) {
  var curleft = curtop = 0;
  if(obj.offsetParent) {
    do {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while(obj = obj.offsetParent);
  }
  return [curleft,curtop];
}

function setSearchReqListener() {
  var searchbox = document.getElementById("txtSearch");
  var ss = document.getElementById('search_suggest');
  if(searchbox) {
  	var pos = findPos(searchbox);
  	ss.style.left = pos[0] + 'px';
  	ss.style.top = (pos[1] + 19) + 'px';
  	
    if (searchbox.addEventListener) {
      searchbox.addEventListener('keyup',function(e) {
        if(e.keyCode==27) {
          if(ss) {
            ss.style.display = 'none';
            ss.innerHTML = '';
          }
        } else {
          searchSuggest();
        }
      },false);
    } else if (searchbox.attachEvent) {
      searchbox.attachEvent('onkeyup',function(e) {
        if(e.keyCode==27) {
          if(ss) {
            ss.style.display = 'none';
            ss.innerHTML = '';
          }
        } else {
          searchSuggest();
        }
      });
    }
  }
}

var searchReq = getXmlHttpRequestObject();
var lockSearch = false;
if (window.addEventListener) {
  window.addEventListener('load',setSearchReqListener,false);
} else if (window.attachEvent) {
  window.attachEvent('onload',setSearchReqListener);
}

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
  if ((searchReq.readyState == 4 || searchReq.readyState == 0) && !lockSearch) {
    var str = escape(document.getElementById('txtSearch').value);
    searchReq.open("GET", '../scripts/search-suggest.asp?search=' + str, true);
    searchReq.onreadystatechange = handleSearchSuggest;
    searchReq.send(null);
  } else {
    if(!lockSearch) {
      lockSearch = true
      setTimeout('searchSuggest2()',1000);
    }
  }
}

function searchSuggest2() {
  lockSearch = false;
  searchSuggest();
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
  if (searchReq.readyState == 4) {
    var ss = document.getElementById('search_suggest');
    ss.innerHTML = '';
    var str = searchReq.responseText.split("\n");
    if(str[0].length==0) {
      ss.style.display = 'none';
    } else {
      for(i=0; i < str.length - 1; i++) {
        //Build our element string.  This is cleaner using the DOM, but
        //IE doesn't support dynamically added attributes.
        var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
        suggest += 'onmouseout="javascript:suggestOut(this);" ';
        suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
        suggest += 'class="suggest_link">' + str[i] + '</div>';
        ss.innerHTML += suggest;
      }
      ss.style.display = 'block';
    }
  }
}

//Mouse over function
function suggestOver(div_value) {
  div_value.className = 'suggest_link_over';
}

//Mouse out function
function suggestOut(div_value) {
  div_value.className = 'suggest_link';
}

//Click function
function setSearch(value) {
  document.getElementById('txtSearch').value = value;
  document.searchboxform1.submit();
  var ss = document.getElementById('search_suggest');
  ss.style.display = 'none';
  ss.innerHTML = '';
}