/**
 * Autocomplete
 * 
 * dependencia: jquery-1.2.1.pack.js
 * 
 * Utilizar estrutura abaixo como recipiente
 * 
 * 	<div class="suggestionsBox" id="suggestions" style="display:none;">
 *		<div class="suggestionList" id="autoSuggestionsList"></div>
 * 	</div>
 * 
 * funciona em conjunto com metodo getDropdown em PHP
 */
var durl;
var idFill;
var dmodule;
var dCallback;

var keyCode;
var lastPos=-1;


document.onkeyup = getKey;
		
/**
 * identifica keyCode
 */
function getKey(e) {
    e = (e) ? e : ((window.event) ? event : null);
    var srcEl = e.srcElement? e.srcElement : e.target;
    keyCode = e.keyCode;

    
    if(srcEl == document.getElementById("inputString")) {
    
		if( document.getElementById('ulList') ) {
			list = document.getElementById('ulList');
	
			switch (keyCode) {
				case 13:
					curr = list.childNodes[lastPos];
					//Generate an artificial click event on "test". Fires alert("hi")
					if( document.all ) {
						curr.fireEvent("onclick")
					}
					else {
						var clickevent=document.createEvent("MouseEvents");
						clickevent.initEvent("click", true, true)
						curr.dispatchEvent(clickevent)
					}
					lastPos=-1;
					break;
				
				case 40:
					next = list.childNodes[lastPos+1];
					if( lastPos < 0 )
						curr = next;
					else
						curr = list.childNodes[lastPos];
					
					curr.className = next.className;
					next.className = next.className + 'over';
					lastPos++;
					break;
				
				case 38:
					curr = list.childNodes[lastPos];
					prev = list.childNodes[lastPos-1];
					curr.className = prev.className;
					prev.className = prev.className + 'over';
					lastPos--;
					break;
					
				default:
					lastPos=-1;
					lookup(srcEl.value)
			}
		}
		else {
			lastPos=-1;
			lookup(srcEl.value)
		}
    }
}

/**
 * obtem lista
 */
function lookup(inputString) {

	$('#indicador').show();
	
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions').hide();
		$('#indicador').hide();
	} else {
		$.post( dUrl+"/index.php?m="+dModule+"&e=getDropdown", {queryString: ""+inputString+""}, function(data) {
			if(data.length >0) {
				$('#suggestions').show();
				$('#autoSuggestionsList').html(data);
			}
			$('#indicador').hide();
		});
	}
} // lookup

function fill(id,thisValue) {
	$('#inputString').val(thisValue);
	document.getElementById(dFill).value=id;
	setTimeout("$('#suggestions').hide();", 200);
}	

function setAutoComplete(url,id,module,moduleCallback) {
	dUrl = url;
	dFill = id;
	dModule = module;
	dCallback = moduleCallback;
}

function notFoundCallback() {
	var url = document.location.pathname+'?m='+dCallback;
	location.href=url;
}
		
