var count = 0 ;
var current = -1;

function getXmlHttpRequestObject() {
	
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
			alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
var lastText =null;

function searchSuggest(evt) {
	
	if (!evt) evt = event;
		
	if (evt.keyCode == 40)//down 
		moveDown();
	else if (evt.keyCode == 38)//Up
		moveUp();
	else  if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('txtSearch').value);
		if (lastText == str) //for non-printable chars
            return;
		//re initialize keyboard location 
		current = -1 ;
	  	count = 0 ;  			
        lastText = str;
		searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
		

	}		
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		ss.style.display = 'none';

		var str = searchReq.responseText.split("\n");

		count = str.length;
		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 += 'id = "row'+i+'" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
            ss.style.display = 'block';
   			ss.innerHTML += suggest;
		}
	}
}

//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';
}

function moveDown()
{
	
	if (current < (count-1))
	{
		
		var obj = eval("document.getElementById('row"+current+"')");
		if (obj)
			suggestOut(obj);
		current++;
		obj = eval("document.getElementById('row"+current+"')");
		if (obj)
		{
			suggestOver(obj);		
			document.getElementById('txtSearch').value = obj.innerHTML;
		}
	}	
	
}

function moveUp()
{
	if (current > 0)
	{
		
		var obj = eval("document.getElementById('row"+current+"')");

		if (obj)
			suggestOut(obj);
		current--;
		obj = eval("document.getElementById('row"+current+"')");
		if (obj)
		{
			suggestOver(obj);
			
			document.getElementById('txtSearch').value = obj.innerHTML;
		}
			
	}		
}
function selectText()
{
	if (current >= 0)
	{
		var obj = eval("document.getElementById('row"+current+"')");
		//setSearch(obj.innerText);
		stopEvent(evt);
		return false;
	}
	return true;
}
//Click function
function setSearch(value) {
	
	document.getElementById('txtSearch').value = value;
	document.getElementById('search_suggest').innerHTML = '';
 	  document.getElementById('search_suggest').style.display = 'none';
	  
	  //for keyboard support
	  current = -1 ;
	  count = 0 ;  
}
function initSearchSuggest()
{
	
	document.getElementById('txtSearch').onkeyup = searchSuggest;
}
