function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("You are using an old browser.\nWe recommend that you upgrade.");
	}
}


var searchReq = getXmlHttpRequestObject();

function searchSuggest(url) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('search').value);
		if(str.length > 2){
			searchReq.open("GET", url+'/search_suggest.php?search=' + str + '&action=list', true);
			searchReq.onreadystatechange = handleSearchSuggest;
			searchReq.send(null);
		}
		else{
			document.getElementById('search_suggest').style.display='none';
		}
	}
}

function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var srch = document.getElementById('search');
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		ss.style.left = findPosX(srch);
		ss.style.top = findPosY(srch);
		ss.style.display='block';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this, '+i+');" ';
			if(i==0){
				suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
			}
			suggest += 'class="suggest_link'+(i%2)+'">' + str[i] + '</div>';
			ss.innerHTML += suggest;
		}
	}
}

function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}

function suggestOut(div_value, i) {
	div_value.className = 'suggest_link' + (i%2);
}

function setSearch(value) {	
	var ss = document.getElementById('search_suggest');
	document.getElementById('search').focus();
	document.getElementById('search').value = value;
	document.getElementById('search_suggest').innerHTML = '';
	ss.style.display='none';
}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = obj.offsetHeight;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
