var xmlHttp = criaXmlHttpRequestObject( );
var camada;
var caixaTexto;
var tabela;
var tabelaBody;
var timeoutId;
var enviado=false;
		
function criaXmlHttpRequestObject( ) 
{
  
  var xmlHttp;
  // trabalha com todos os browsers, menos IE
  try
  {
	// tenta criar o objeto XMLHttpRequest
	xmlHttp = new XMLHttpRequest( );
  }
  catch(e)
  {
	var XmlHttpVersoes = [ 
		"MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.5.0",
		"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
		"MSXML2.XMLHttp","Microsoft.XMLHttp"
		];

	// procura a melhor versão para o IE
	for (var i=0; i< XmlHttpVersoes.length; i++) 
	{
	  try 
	  { 
		//tenta criar o objeto XMLHttpRequest 
		xmlHttp = new ActiveXObject(XmlHttpVersoes[i]);
	  } 
	  catch (e) {}
	}
  }
  //retorna o objeto criado ou um erro
  if (!xmlHttp)
	alert("Erro ao tentar criar um objeto XMLHttpRequest.");
  else 
	return xmlHttp;
}
		
function getElmBI(campo){     
	var elemento = document.getElementById(campo);
	return elemento;
}
   
function init( ) {
	caixaTexto = getElmBI("busca_cantor");
	tabela = getElmBI("tabela");
	camada = getElmBI("popup");
	tabelaBody = getElmBI("tabela_body");
}

function procurar( ) {
	init( );
    try{
		if (caixaTexto.value.length > 2) {
            if(!enviado){
				var url = "cantores.php?enviados=true&titulo=" + 
						encodeURIComponent(caixaTexto.value);
					xmlHttp.open("GET", url, true);
					xmlHttp.onreadystatechange = chamarServidor;
               	timeoutId = setTimeout(timesUp,10000);
                	enviado=true;
					xmlHttp.send(null);
            }
            else{mensagem(true);}
		} else {
			limparResultados( );
		}
    }catch(erro){
            alert("Erro: "+erro.message);
   }
}

function chamarServidor( ) {
	if (xmlHttp.readyState == 4) {
		//limpa o timer
		clearTimeout(timeoutId);
		if (xmlHttp.status == 200) {
           enviado=false;
           mensagem(false);
			var resposta = xmlHttp.responseXML;
			//alert(resposta.getElementsByTagName("titulo")[0].firstChild.data);
			var nome = resposta.getElementsByTagName("titulo")[0].firstChild.data;
			adicionarDados(resposta.getElementsByTagName("titulo"));
		} else if (xmlHttp.status == 404){
			limparResultados( );
		}
	}
}

function adicionarDados(dados) {
	limparResultados( );
	var tamanho = dados.length;
	setOffsets( );
	var row, cell, textNode;
	for (var i = 0; i < tamanho; i++) {
		var proxNo = dados[i].firstChild.data;
		row = document.createElement("tr");
		cell = document.createElement("td");
		cell.onmouseout = function( ) {this.className='corFora';};
		cell.onmouseover = function( ) {this.className='corSobre';};
		cell.setAttribute("bgcolor", "#FFFAFA");
		cell.setAttribute("border", "0");
		cell.onclick = function( ) { adicionarNome(this); window.document.form1.enviados.checked=true; window.document.form1.submit(); } ;
		textNode = document.createTextNode(proxNo);
		cell.appendChild(textNode);
		row.appendChild(cell);
		tabelaBody.appendChild(row);
	}
}

function setOffsets( ) {
	var end = caixaTexto.offsetWidth;
	var left = calcularOffsetLeft(caixaTexto);
	var top = calcularOffsetTop(caixaTexto) + caixaTexto.offsetHeight;
	camada.style.border = "black 1px solid";
	camada.style.left = left + "px";
	camada.style.top = top + "px";
	tabela.style.width = end + "px";
}
function calcularOffsetLeft(campo) {
	return calcularOffset(campo, "offsetLeft");
}
function calcularOffsetTop(campo) {
	return calcularOffset(campo, "offsetTop");
}
function calcularOffset(campo, atributo) {
	var offset = 0;
	while(campo) {
		offset += campo[atributo];
		campo = campo.offsetParent;
	}
	return offset;
}
function adicionarNome(valor) {
	caixaTexto.value = valor.firstChild.nodeValue;
	limparResultados( );
}
function limparResultados( ) {
	var ind = tabelaBody.childNodes.length;
	for (var i = ind - 1; i >= 0 ; i--) {
		tabelaBody.removeChild(tabelaBody.childNodes[i]);
	}
	camada.style.border = "none";
}
function criarDropDown( ){
	 // cria a layer para receber os dados
	var layer = document.createElement("div");
	layer.className = "sugestoes";
	layer.setAttribute("id","popup");
	var tabela = document.createElement("table");
	var tBody = document.createElement("tbody");
	tBody.setAttribute("id","tabela_body");
	tabela.setAttribute("id","tabela");
	tabela.setAttribute("bgcolor","#FFFAFA");
	tabela.setAttribute("border","0");
	tabela.setAttribute("cellspacing","0");
	tabela.setAttribute("cellpadding","0");
	tabela.appendChild(tBody);
	layer.appendChild(tabela);
	document.body.appendChild(layer); 
}
// método que aborta o recebimento de dados
function timesUp( ){
    xmlHttp.abort( );
    alert("Está demorando demais. Verifique sua conexão.");
}
// método que gera a mensagem
function mensagem(mostrar)
{
    var msg = document.getElementById("status");
	var vis = null;
	if(mostrar)
		vis='visible';
	else
		vis='hidden';
	msg.style.visibility=vis;
}	

