
//---------------------------------------------------------------------//
//	var Referencia_ID = "fq1"	//id do input text de referencia a ser procurado
//	var Autocomplete_ID = "results"			//id do div que retorna as sugestões
//	var Campo_ID = "campo"				//id do campo a ser procurado
//   var largura = 198
//---------------------------------------------------------------------//

var autocomplete_POS = -1;
try {autocomplete_ajax = new ActiveXObject("Microsoft.XMLHTTP");} 
catch(e) {
	try {autocomplete_ajax = new ActiveXObject("Msxml2.XMLHTTP");}
	catch(ex) {
		try {autocomplete_ajax = new XMLHttpRequest();}
		catch(exc) {
			alert("Esse browser não tem recursos para uso do Ajax");
			autocomplete_ajax = null;
		}
	}
}

function autocomplete_mOver(div){ //função responsavel pelo Mouse Over
	document.getElementById(div).style.background = "#c0c0c0";
}

function autocomplete_mOut(div){ //função responsavel pelo Mouse Out
	document.getElementById(div).style.background = "#FFFFFF";
}

function autocomplete_mClick(div){ //função responsavel pelo click
   var TEMP = htmlspecialchars_decode(document.getElementById(div).innerHTML);
   document.getElementById(Referencia_ID).value = TEMP;
   document.getElementById('q').value = TEMP;
	document.getElementById('c').value = document.getElementById(Campo_ID).value;
	document.getElementById(Autocomplete_ID).innerHTML = '';
	document.getElementById(Autocomplete_ID).style.display = 'none';
	document.getElementById('f').submit();
}

function autocomplete_Processa(event){ //função responsavel pelo processamento da tecla pressionada no input text referencia
    //if(typeof(event)=='undefined') { var event=window.event; }
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
   	//Correção para o bug do Konqueror/Safari
	//if(event.nodeType == 3){ event=event.parentNode; }

	var nITEM = document.getElementById("autocomplete_nItem").value; 
	var ANT;
	switch(keyCode){
		case 37: // Seta Esquerda
		case 39: // Seta Direita
		break;
		case 13: // Tecla Enter
			document.getElementById(Autocomplete_ID).innerHTML = '';
			document.getElementById(Autocomplete_ID).style.display = 'none';
			document.getElementById('f').submit();
		break;
		case 40: // Seta Baixo
			if(POS >= (nITEM-1)) {
				POS = (nITEM-1);
			} else {
				POS++;
			}
			document.getElementById("autocomplete_div_"+POS).style.background = "#c0c0c0";
			ANT = eval(POS-1);
			if(ANT > -1) {
				document.getElementById("autocomplete_div_"+ANT).style.background = "#FFFFFF";
			}
			var TEMP = htmlspecialchars_decode(document.getElementById("autocomplete_div_"+POS).innerHTML);
			document.getElementById(Referencia_ID).value = TEMP;
			document.getElementById('q').value = TEMP;
		break;
		case 38: // Seta Cima
			if(POS <= 0) {
				POS = 0;
			} else {
				POS--;
			}
			document.getElementById("autocomplete_div_"+POS).style.background = "#c0c0c0";
			ANT = eval(POS+1);
			document.getElementById("autocomplete_div_"+ANT).style.background = "#FFFFFF";
			var TEMP = htmlspecialchars_decode(document.getElementById("autocomplete_div_"+POS).innerHTML);
			document.getElementById(Referencia_ID).value = TEMP;
			document.getElementById('q').value = TEMP;
		break;
		default:
			POS = -1;
			document.getElementById('q').value = htmlspecialchars_decode(document.getElementById(Referencia_ID).value);
			document.getElementById('c').value = document.getElementById(Campo_ID).value;
			autocomplete_Dados()
		break;
	}
}

function htmlspecialchars_decode(string, quote_style) {
    string = string.toString();

    string = string.replace(/\&amp;/g, '&');
    string = string.replace(/\&lt;/g, '<');
    string = string.replace(/\&gt;/g, '>');

    if (quote_style == 'ENT_QUOTES') {
        string = string.replace(/&quot;/g, '"');
        string = string.replace(/&#039;/g, '\'');
    } else if (quote_style != 'ENT_NOQUOTES') {
        string = string.replace('/&quot;/g', '"');
    }

    return string;
}

function autocomplete_Dados()  { //função responsavel pela caleta dos dados
		var valor = document.getElementById(Referencia_ID).value
		if(valor.length > 0){
			autocomplete_ajax.open('POST', '/processa.php', true);
			autocomplete_ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			autocomplete_ajax.onreadystatechange = function() {
				switch(autocomplete_ajax.readyState){
					case 1:
						document.getElementById(Autocomplete_ID).innerHTML = 'Processando';
					break;
					case 2:
						document.getElementById(Autocomplete_ID).innerHTML = 'Carregando';
					break;
					case 3:
						document.getElementById(Autocomplete_ID).innerHTML = 'Montando';
					break;
					case 4:
						document.getElementById(Autocomplete_ID).innerHTML = '';
						var dataArray = autocomplete_ajax.responseXML.getElementsByTagName("ITEM");
						if(dataArray.length > 0) {
							document.getElementById(Autocomplete_ID).style.display = 'block';
							for(var i = 0 ; i < dataArray.length ; i++) {
								var item = dataArray[i];
								var descricao = item.getElementsByTagName("ITEM_DESCRICAO")[0].firstChild.nodeValue;

								document.getElementById(Autocomplete_ID).innerHTML += '<div id="autocomplete_div_' + i + '" style="clear:both;	width:' + largura + 'px;	cursor:pointer; padding:2px;" class="selecao" onMouseOver="autocomplete_mOver(this.id)" onMouseOut="autocomplete_mOut(this.id)" onClick="autocomplete_mClick(this.id)" onKeyUp="javascript:autocomplete_Processa(event)" >' + descricao + '</div>';
							}
							document.getElementById('autocomplete_nItem').value = i;
						} else {
							document.getElementById('autocomplete_nItem').value = 0;
							document.getElementById(Autocomplete_ID).style.display = 'none';
						}
					break;
				}
			 }
			 var params = "campo=" + document.getElementById(Campo_ID).value + "&valor=" + valor;
			 autocomplete_ajax.send(params);
		}
		else 
		{
			document.getElementById(Autocomplete_ID).innerHTML = '';
			document.getElementById(Autocomplete_ID).style.display = 'none';
		}
}
document.write('<input type="hidden" id="autocomplete_nItem" name="autocomplete_nItem" value="0">');
