var req; //variavel que contem XMLHttpRequest
var isIE; //se Internet explorer
var completeTable; //referencia da table origem
var autoRow; //referencia da linha origem
var largura;
var abreLista;
var idLoop;

function init() {
	//*** pega as referencias ***//
	
	largura = screen.width/2;
	//alert(largura);

	
    completeTable = document.getElementById("complete-table");

	
    autoRow = document.getElementById("auto-row");
	

	//alert(autroRow);
	
	//*** Posiciona a Tabela  complete-table***//
	//calcula a posição em relação a altura
   // completeTable.style.top = getElementY(autoRow) + "px";
//
//	// calcula a posição em relação a largura
//	completeTable.style.left = getElementX(autoRow) + "px";

	//alert(teste);
	//completeTableDest.style.top

	//alert(completeTableDest.style.left);
	//alert(completeTable.style.left);

}

/*** A função de carregaTable() é:

crie uma URL que contenha dados que possam ser reutilizados pelo lado do servidor, inicialize um objeto XMLHttpRequest, e solicite que o objeto XMLHttpRequest envie uma solicitação assíncrona para o servidor. 

O objeto XMLHttpRequest é o coração do Ajax e se tornou o padrão de fato para permitir que dados XML sejam passados assincronamente por meio de HTTP. Interação assíncrona implica em que o navegador pode continuar a processar eventos na página depois que a solicitação é enviada. Os dados são passados em segundo plano, e podem ser carregados automaticamente na página exigindo uma atualização da página.

Observe que o objeto XMLHttpRequest é realmente criado por initRequest(), que é chamada por doCompletion(). A função verifica se XMLHttpRequest pode ser entendido pelo navegador e, se for o caso, cria um objeto XMLHttpRequest. Caso contrário, ela verifica ActiveXObject (o XMLHttpRequest equivalente do Internet Explorer 6) e cria um ActiveXObject, se identificado.

Três parâmetros são especificados quando você cria um objeto XMLHttpRequest: uma URL, o método HTTP (GET ou POST), e se a interação é assíncrona ou não. No exemplo acima, os parâmetros são:

A URL autocomplete.php e o texto inserido no campo de conclusão pelo usuário: var url = "autocomplete.php?action=complete&id=" + escape(completeField.value);

GET, significando que as interações HTTP usam o método GET, e 

true, significando que a interação é assíncrona: req.open("GET", url, true);

Se a interação for definida como assíncrona, uma função callback deve ser especificada. A função callback dessa interação é definida com a instrução:

req.onreadystatechange = callback;

e uma função callback() deve ser definida mais tarde. 

A interação HTTP começa quando XMLHttpRequest.send() é chamada. Essa ação mapeia para a solicitação HTTP que é enviada para o servidor Web no fluxograma acima.
***/

function ExecutaAcao() {
		var input = document.getElementById("d1").value;
		//*** Cria uma URL que contenha dados que possam ser reutilizados pelo lado do servidor ***//
        var url = "negocio.php?dominio="+escape(input);
		//var abreLista = status;
		//alert(url);
		//var url = "../../NEGOCIO/fabricante.php?action=consultar&nRegistroPage=" + escape(nRegistroPage);
		url=url+"&dummy=" + Math.floor(Math.random()*111111111111111111);
		abreLista = status;
		if(input!=""){
			//url = url + "&where=" + escape(where);
	
		//alert(url);
		req =null;
		//*** Inicialize um objeto XMLHttpRequest ***//
        req = initRequest();
		//alert(req);
		//*** Solicita que o objeto XMLHttpRequest envie uma solicitação assíncrona para o servidor ***// 
        req.open("GET", url, true);
        req.onreadystatechange = callback; // function() { callback(status); }; 
		//alert(req.onreadystatechange);
        req.send(null);
	    }
		else{
			
			if(abreLista=='origem'){
				clearTable();
			} else if(abreLista == 'destino'){
				clearTableDest();
			}
			
		}

}

/*** O código abaixo executa uma verificação simples de compatibilidade do 
navegador para o Firefox 3 e para o Internet Explorer versões 6 e 7). ***/
function initRequest() {
	
    if (window.XMLHttpRequest) {
        if (navigator.userAgent.indexOf('MSIE') != -1) {
            isIE = true;
        }
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        isIE = true;
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

/*** 
A função callback é chamada assincronamente em pontos específicos durante a interação HTTP quando a propriedade readyState do XMLHttpRequest é alterada. No aplicativo que você está construindo, a função callback é callback(). Você lembra que em doCompletion(), callback foi definida como a propriedade XMLHttpRequest.onreadystatechange para uma função. 

***/
function callback() {
	//Limpa a tabela
	//alert(status);
		
    if (req.readyState == 4) { //Interação HTTP Completa. 
	
		if (req.status == 200) {//exito 
		//alert(status);
		    parseMessages(req.responseXML);//A função parseMessages() manipula os dados XML de entrada.
        }
    }
}

/***
Um readyState "4" significa a conclusão da interação HTTP. A API de XMLHttpRequest.readState indica que há 5 valores possíveis que podem ser definidos. Dentre eles estão:

Valor readyState Definição do status do objeto 
0 não inicializado 
1 carregando 
2 carregado 
3 interativo 
4 completo 



Observe que a função parseMessages() somente é chamada quando o XMLHttpRequest.readyState é "4" e o status -- a definição do código de status HTTP da solicitação -- é "200", significando um êxito. Você definirá parseMessages() em seguida em Atualizando o HTML DOM.

Atualizando o HTML DOM
A função parseMessages() manipula os dados XML de entrada. Fazendo isso, ele conta com várias funções auxiliares, tais como 
appendComposer(), 
getElementY() e 
clearTable(). 

Você também deve introduzir novos elementos na página de índice, tal como uma segunda tabela HTML que serve como a caixa auto-completar, e os IDs dos elementos de forma que eles possam ser referenciados em javascript.js. Finalmente, crie novas variáveis que correspondam a ID's para os elementos em index.php, inicialize-as na função init() implementada anteriormente e adicione alguma funcionalidade que seja necessária sempre que index.php for carregado.

Observação: As funções e elementos que você cria nas etapas seguintes funcionam de forma independente. Recomendamos que você percorra esta seção, em seguida, examine o código quando tudo estiver no lugar.

***/


/***
A função parseMessages() recebe como um parâmetro uma representação de objeto do documento XML retornado pelo arquivo autocomplete.php. A função atravessa programaticamente o documento XML, extraindo firstName, lastName e id de cada entrada, em seguida, passa esses dados para appendComposer(). Isso resulta em uma atualização dinâmica do conteúdo do elemento complete-table.
***/
function parseMessages(responseXML) {
	
    // no matches returned
    if (responseXML == null) {
        return false;
    } else {

		//*** Se você quiser selecionar diretamente, por exemplo, o primeiro composers e unico no caso
        var StatusDominio = responseXML.getElementsByTagName("dominio")[0];
		//alert (StatusDominio);
		

        if (StatusDominio.childNodes.length > 0) {
			//alert(StatusDominio.childNodes.length);
            /*completeTable.setAttribute("bordercolor", "red");
			completeTable.setAttribute("border", "solid");
			completeTable.setAttribute("bgcolor", "white");
            completeTable.setAttribute("border", "5");
			completeTable.setAttribute("cellpadding", "0");
			completeTable.setAttribute("cellspacing", "0");*/
			//completeTable.className = "tabela";
			

		
            //for (loop = 0; loop < StatusDominio.childNodes.length; loop++) {
				//*** Recupera um registro por vez
				
				var nmDominio = StatusDominio.childNodes[0];
				
				//*** Recupera os campos
				var resultado = nmDominio.getElementsByTagName("resposta")[0];
				var codigo = nmDominio.getElementsByTagName("codigo")[0];
				
				
				//var Id = cidade.getElementsByTagName("codigo")[0];
				//abreLista = "origem";
				appendComposer(resultado.childNodes[0].nodeValue, codigo.childNodes[0].nodeValue);
				//appendComposer(resultado.childNodes[0].nodeValue);
				
				//alert(resultado.childNodes[0].nodeValue);
			//}
        }
    }
}





/***
Essa função cria uma nova linha da tabela, insere um link em um compositor usando os dados passados para a função através de seus três parâmetros, e insere a linha no elemento complete-table da página de índice.
***/
function appendComposer(resultado, codigo) {
	
	//alert(resultado);
	clearTable();
    var row;
	var row2;
	var cell;
	var tdLink;
	
	if (isIE) {
		//	alert(completeTable.rows.length);
		completeTable.style.display = 'block';
		row = completeTable.insertRow(completeTable.rows.length);
		row2 = completeTable.insertRow(completeTable.rows.length);	
		cell = row.insertCell(0);
		if(codigo == 1)
			tdLink = row2.insertCell(0);
		
	} else {
		//alert('ie');
		//completeTable.style.display = 'block';
		completeTable.style.display = 'table';
		row = document.createElement("tr");
		cell = document.createElement("td");
		row2 = document.createElement("tr");
		tdLink  = document.createElement("td");
		row.appendChild(cell);
		if(codigo == 1)
			row2.appendChild(tdLink);
		completeTable.appendChild(row);
		completeTable.appendChild(row2);
	}
	//completeTable.className = "tabelaTeste";
	//cell.className = "popupCell";
	//cell.onclick = function() { setCampo(resultado); };
	
	
	cell.appendChild(document.createTextNode(resultado));
	
	if(codigo == 1){
		//cria o conteudo da linha
		linkEdiar = document.createElement("a");
		linkEdiar.className = "popupItem";
		linkEdiar.setAttribute("href", "RegistrodeDominio.php");
		linkEdiar.setAttribute("class", "link");
		linkEdiar.setAttribute("style", "font-weight:bold");
		linkEdiar.appendChild(document.createTextNode("Cadastrar"));
		linkEdiar.onclick = function() { editar(idProduto); }
		tdLink.appendChild(linkEdiar);
	}
	//alert(document.createTextNode(resultado));
		
	/*} else if (abreLista=='destino'){
		if (isIE) {
			completeTableDest.style.display = 'block';
			rowDest = completeTableDest.insertRow(completeTableDest.rows.length);
			cellDest = rowDest.insertCell(0);
			
			
		} else {
			//completeTableDest.style.display = 'table';
			rowDest = document.createElement("tr");
			cellDest = document.createElement("td");
			rowDest.appendChild(cell);
			completeTableDest.appendChild(rowDest);
    	}

	//set o css
		completeTableDest.className = "tabelaTeste";
		cellDest.className = "popupCell";
		cellDest.onclick = function() { setCampoDest(resultado); }; 
		
		cellDest.appendChild(document.createTextNode(resultado));
		
		//alert(resultado);
		//resultLinhaDest = cidade.getElementsByTagName("resultado")[0];
	}*/
	
	//alert(abreLista);
}



/***
Essa função define a exibição do elemento complete-table como 'none', (ou seja, o torna invisível), e remove quaisquer entradas de nome de compositor existentes que tenham sido criadas. 
***/
function clearTable() {
    if (completeTable.getElementsByTagName("tr").length > 0) {
        completeTable.style.display = 'none';
        for (loop = completeTable.childNodes.length -1; loop >= 0 ; loop--) {
            completeTable.removeChild(completeTable.childNodes[loop]);
        }
    }
}


/*function getElementY(element){

    var targetTop = 0;

    if (element.offsetParent) {
        while (element.offsetParent) {
            targetTop += element.offsetTop;
            element = element.offsetParent;
        }
    } else if (element.y) {
        targetTop += element.y;
    }
	//alert(targetTop);
    return targetTop;
}

function getElementX(element){

    var targetLeft = 0;

    if (element.offsetParent) {
        while (element.offsetParent) {
            targetLeft += element.offsetLeft;
            element = element.offsetParent;
        }
    } else if (element.x) {
        targetLeft += element.x;
    }
	//alert(targetTop);
    return targetLeft;
}*/

