//  adapted/improved from Robert Nyman www.robertnyman.com/ajax-suggestions 
function navigateResults(evt, keyCode, setdiv, setinput){
	//alert (keyCode);
	var event = (typeof evt != 'undefined')? evt : event;
	var selectedItem = -1;
	var currentElm = (/input/i.test(this.nodeName))? this : evt.srcElement;
	// create array of all result elements as objects.
	var results = document.getElementById(setdiv).getElementsByTagName('li');
	var keyCode = keyCode || event.keyCode;
	var navigateUp = keyCode == 38;
	var navigateDown = keyCode == 40;
	var navigateSide = keyCode == 37 || keyCode == 39 || keyCode == 13;
	if (results.length > 0 && (navigateUp || navigateDown || navigateSide)) {
		// return any previously selected element to its default class but note its position first.
		for (var i=0; i<results.length; i++) {
			item = results[i];
			if (item.className.match(/suggest-link-sel/)) {
				selectedItem = i;
			}
			item.className = 'suggest-link';
		}
		// change the selected element position marker if arrow up or down.
		if (navigateUp) {
			if ((selectedItem - 1) >= 0) {
				selectedItem--;
			} else {
				selectedItem = -1;
			}
			if (results[selectedItem]){
				document.getElementById(setinput).value=results[selectedItem].innerHTML;
			}
		} else if (navigateDown) {
			if ((selectedItem + 1) < results.length){
				selectedItem++;
			} else {
				selectedItem = -1;				
			}
			if (results[selectedItem]){
				document.getElementById(setinput).value=results[selectedItem].innerHTML;
			}
		// or set the selected item into the input box if arrow left or right.
		} else if (navigateSide) {
			if (results[selectedItem]){
			//document.getElementById(setinput).value=results[selectedItem].innerHTML;
			document.getElementById(setdiv).style.display='none';}
			//setSearch(results[selectedItem].innerHTML);
		}
		// change the class of the selected element.
		var item;
		var elmToFocus = currentElm;
		if (selectedItem > -1 && !navigateSide) {
			var currentItem = results[selectedItem];
			currentItem.className = 'suggest-link-sel';
			elmToFocus = results[selectedItem];
		}
		try { elmToFocus.focus(); } catch(e) { }
		// prevent the default action of relevant keys.
		if (event) {
			if (event.preventDefault) {
				event.preventDefault();
			} else {
				event.returnValue = false;
			}
			if (event.stopPropagation) {
				event.stopPropagation();
			} else {
				event.cancelBubble = true;
			}
		}
		return false;
	}
}


function lookup(event,url,par,setdiv,setinput){
	var req;
	var oldData; 
	var doesNotSupport = true; 
	var setproperties;
	setproperties = 'numberfail=<?PHP print "$numberfail";?>&setdiv='+setdiv+'&setinput='+setinput+'&';
//alert (setproperties);
	if (event.keyCode == 40 || event.keyCode == 38 ||  event.keyCode == 13 || event.keyCode == 37 || event.keyCode == 39) {
	    	navigateResults(event,event.keyCode,setdiv,setinput);
        }
	else{
		document.getElementById(setinput).style.background='url(images/status.gif)';
		document.getElementById(setinput).style.backgroundRepeat='no-repeat';
		document.getElementById(setinput).style.backgroundColor='#ffffff';

		document.getElementById(setinput).style.backgroundPosition='right';
		if (par == "" || oldData == par || !doesNotSupport) 
      			return; 
			oldData = par; 
			if (window.XMLHttpRequest) { 
  				req = new XMLHttpRequest; 
			} else if (window.ActiveXObject) { 
				req = new ActiveXObject("Microsoft.XMLHTTP"); 
			} 
			if (req) { 
				req.onreadystatechange = processReqChange; 
      				//req.open("GET", url + '?category=' + document.qsearch.category.value + '&phonemodel=' + par, true); 
      				req.open("GET", url + '?' + setproperties + par, true); 
				req.send(null); 
			} else { 
       				alert("Your browser does not support XMLHttpRequest technology!"); 
       				doesNotSupport = false; 
    			}	 
		}

		function processReqChange() {
    			// only if req shows "loaded" 
    			if (req.readyState == 4) { 
       				// only if "OK" 
        			if (req.status == 200) { 
					document.getElementById(setinput).style.background='url()';
					//var response;
					response = req.responseText;
					var len = response.length;
					var list;
					list='';
					if (len==0){
						list = 'no suggestions';
    						document.getElementById(setdiv).style.display='none';
							
 					}
					else{
        					
						document.getElementById(setdiv).style.display='block';
						document.getElementById(setinput).style.backgroundColor='#ffffff';
						document.getElementById(setdiv).innerHTML=response;
    					}
        			} else { 
            				//alert("There was a problem retrieving the data:\n" + req.statusText + req.responseText);
            		      	}	 
    			} 
		}

	}