var xmlhttp, querybox;

var _sIndex = -1;
var _mode;
var _realclick = true;

function PredictText(mode,qty,kpevent,qbox){
	querybox=qbox;
	_mode=mode;
	var qb = document.getElementById(querybox);
	var charCode = (kpevent.which)? kpevent.which : event.keyCode;
	
	if((charCode == 8 || charCode == 46) || charCode >=65 && charCode <=90 || charCode >= 97 && charCode <=122){
		_sIndex = -1
		
		if (qb.value.length==0){
			document.getElementById("ptResults").style.display = "none";
			return;
		}
		
    	xmlhttp=GetXmlHttpObject();
		
		if (xmlhttp==null){
			document.getElementById("ptResults").style.display = "block";
			document.getElementById("ptResults").innerHTML="Your browser does not support XMLHTTP!";
			return;
		}
		
		var url="/include/AJAX/PredictText.php";
		url=url+"?q="+qb.value;
		url=url+"&qbox="+querybox;
		url=url+"&m="+_mode;
		url=url+"&qty="+qty;
		url=url+"&sid="+Math.random();
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}else if(charCode == 40){
		_sIndex++;
		Highlight(_sIndex);
		
	}else if(charCode == 38){ // When the up arrow key is pressed
		_sIndex--;       
		Highlight(_sIndex);
	}
}

function PTKeyPress(kpevent){
	var charCode = (kpevent.which)? kpevent.which : event.keyCode;
	
	if(charCode == 9){ // Tab
		PTHideRes();
	}
}

function PTHideRes(){
	document.getElementById("ptResults").style.display = "none";
	document.getElementById("ptResults").innerHTML = null;
}

function stateChanged(){

	if (xmlhttp.readyState==4){
		
		ptr = document.getElementById("ptResults");
		qb = document.getElementById(querybox);
		ptr.style.display = "block";
		
		qbPOS = findPos(qb);
		
		ptr.style.left = qbPOS["Left"];
		ptr.style.top = qbPOS["Top"] + qb.offsetHeight;
		ptr.innerHTML=xmlhttp.responseText;
	}
}

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 MakeSelection(qbox, qvalue){
	document.getElementById(qbox).value=qvalue;
	if(_realclick){
		PTHideRes();
	}
	_realclick=true;
	return;
}

function findPos(obj) {
	var curleft = curtop = 0;
	var ret = new Array();
	
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		
		ret["Left"] = curleft;
		ret["Top"] = curtop;
		
		return ret;
	}
}

function Highlight(){
	var myobj = document.getElementById("ptResults");
	var MaxLen = myobj.childNodes.length -1;
	
    if(_sIndex < 0){
		_sIndex = 0;
	}
    
    if(_sIndex > MaxLen){
		_sIndex = MaxLen;
	}
	
  //  document.getElementById("deb").value = _sIndex+", "+MaxLen;
    
	if(myobj){
		if(myobj.childNodes[_sIndex].innerHTML == "No results."){
			return;
		}
		
		for (i=0; i<=MaxLen; i++){
			myobj.childNodes[i].style.background = "#E6E6FF";
		}
		
        myobj.childNodes[_sIndex].style.background = "#00FF00";
		
		_realclick = false;
		myobj.childNodes[_sIndex].onclick();
	}
 
}