var xmlhttp
//var searchReq = getXmlHttpRequestObject();
var PrevStr="";
var PrevType="";
var Row=-1;
//document.onkeydown = checkKeycode;
function checkKeycode(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode==40) selectRow(1)
if (keycode==38) selectRow(-1)
if (keycode==27) {
	document.getElementById('search_suggest').style.visibility = 'hidden'; 
	document.getElementById('searchfield').value = PrevStr;
	}
}
	
function searchSuggest(){
	//str = escape(document.getElementById('searchfield').value);

	str = document.getElementById('searchfield').value;

	if (str==PrevStr && PrevType==document.getElementById('type').value){
	return;
	}
	PrevStr=str;
	if (str.length==0) {
	  document.getElementById('search_suggest').innerHTML="";
	  return;
	  }
xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null)  {
	  return;
	  }
var url="searchSuggest.asp";
url=url+"?q="+str;
url=url+"&type="+document.getElementById('type').value;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
PrevType=document.getElementById('type').value;
}

function stateChanged(){	
	var ss = document.getElementById('search_suggest')
	ss.style.visibility = 'visible'; 
	if(xmlhttp.readyState != 4)		{
		if (ss.innerHTML.indexOf('images/loading.gif')==-1){
		ss.innerHTML = '<img src="images/loading.gif" align="absmiddle" ><font size="1"> loading suggestions...</font><br>' + ss.innerHTML;		
		}
	}
	
if (xmlhttp.readyState==4){		
		ss.innerHTML = '';
		Ctype='';
		if (PrevType=="real"){
		Ctype='Realtones';
		}else if(PrevType=="poly"){
			Ctype='Polyphonic';
		}else if(PrevType=="games"){
			Ctype='Games';
		}else if(PrevType=="color" || PrevType=="anim"){
			Ctype='Wallpapers';
		}
			ss.innerHTML = '<IMG src="images/toolbar_NEXT.gif" align="absmiddle" ><font size="1"> '+Ctype+' suggestions...</font>';
		
		var str = xmlhttp.responseText.split("\n");
		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 id="suggestRow' + 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;
		}
		if (str=='') document.getElementById('search_suggest').style.visibility = 'hidden'; 
		Row=-1;
  }
}

function GetXmlHttpObject(){
if (window.XMLHttpRequest)  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

function selectRow(mov) {
	
	if (Row>=0 && Row<=9) document.getElementById('suggestRow' + Row).onmouseout();
	Row=Row+mov;
	if (Row<0) Row=0;
	if (Row>9) Row=9;
	if (Row<=9) document.getElementById('suggestRow' + Row).onmouseover();
	PrevStr=removeTags(document.getElementById('suggestRow' + Row).innerHTML);
	document.getElementById('searchfield').value = PrevStr;
}
//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) {
	//value= value.replace('<B><FONT color=#6666ff>','')
	//value= value.replace('</FONT></B>','')
	value=removeTags(value);

	document.getElementById('searchfield').value = value;
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('search_suggest').style.visibility = 'hidden'; 
	document.search.submit();
}
//
function removeTags(value) {
	value= value.replace('<B><FONT color=#6666ff>','');
	value= value.replace('<b><font color="#6666ff">','');
	value= value.replace('</font></b>','');
	value= value.replace('</FONT></B>','');
	return value;
}
//
function clickedOutsideElement(elemId) {
    var theElem = getEventTarget(window.event);

    while(theElem != null) {
        if(theElem.id == elemId)
            return false;

        theElem = theElem.offsetParent;
    }

    return true;
}
//
function getEventTarget(evt) {
    var targ = (evt.target) ? evt.target : evt.srcElement;

    if(targ != null) {
        if(targ.nodeType == 3)
            targ = targ.parentNode;
    }

    return targ;
}
//
document.onclick = function() {
	if (clickedOutsideElement('search_suggest') && clickedOutsideElement('searchfield') && clickedOutsideElement('type')) {
		document.getElementById('search_suggest').style.visibility = 'hidden'; 
	}
}

