//Gets the browser specific XmlHttpRequest Object

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 tmr2 = null;
var _executor = null;
function genSuggest(){

    searchReq.abort();
	
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = document.getElementById('frmSearch_tbQueryStr').value;
		if(str.length>1){
			str = encodeURIComponent(str);
			searchReq.open("GET", '/wtools/suggest/genSuggest.php?&ls=48&tag=' + str, true);
			searchReq.onreadystatechange = handleSuggests; 
			searchReq.send(null);
		}
	}
	
	clearTimeout(tmr2);
}

function onTxtKeyUp() {
	tmr2 = setTimeout('genSuggest()',400);
}
function onTxtKeyDown() {
	if(tmr2) clearTimeout(tmr2);	
}

//Called when the AJAX response is returned.
function handleSuggests() {
	if (searchReq.readyState==4 && searchReq.status==200) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		ss.className = 'on';
		
		var searchbx = document.getElementById('frmSearch_tbQueryStr');
		var newleft = offset(searchbx, 'x');
		var newtop = offset(searchbx, 'y');
		
		ss.style.position = 'absolute';
		ss.style.left = newleft + 'px';
		ss.style.top = (newtop + searchbx.offsetHeight + 1) + 'px';		
		ss.style.display = 'block';
		
		var str = searchReq.responseText.split("\n");
		var cc = 0;
		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 title="'+str[i]+'" 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;
			cc++; if(cc>32) {
				ss.innerHTML += '<div align="center">..</div>'
				break;
			}
		}
	}
}
//Toggle function
var tmr = null;
function closeSuggest(){
	document.getElementById('search_suggest').className = 'off';
	document.getElementById('search_suggest').innerHTML = '';
	clearTimeout(tmr);
}
function hideMe(value) {	
	if(document.activeElement==document.getElementById('search_suggest')) return;
	tmr = setTimeout('closeSuggest()',180);	
}
//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('frmSearch_tbQueryStr').value = value;
	document.getElementById('search_suggest').className = 'off';
	document.getElementById('search_suggest').innerHTML = '';
}