var agrupador = new Array();
var xmlstring = "";
function addAgrupador(valor){
	agrupador.push(valor.toUpperCase());
}

function limpaAgrupador(){
	for(i=0;i<agrupador.length;i++){
		agrupador.shift();
	}
	agrupador.shift();
	document.getElementById('filtro').innerHTML = '';
	document.getElementById('AGRUP').innerHTML  = '';
}

function addFiltro(campo,valor){
	if(document.getElementById('F_'+campo) == null){
		
		/*
		if(document.getElementById('campos').value == '')
			document.getElementById('campos').value += valor;
		else
			document.getElementById('campos').value += ','+valor;
		*/
		document.getElementById('F_'+campo)
		var targFiltro = document.getElementById('filtro');
		var elem = document.createElement('span');
		elem.id = 'F_'+campo.toUpperCase();
		elem.style.border = '1px solid #000000';
		elem.style.padding = '0px 5px';
		elem.className = 'cabecalho';
		elem.innerHTML = valor;
		addAgrupador(campo.toUpperCase());
		targFiltro.appendChild(elem);
		targFiltro.innerHTML += '&nbsp;';
	}
}

function retornaValor(node,aux){
	for(x=0;x<aux.length;x++){
		if(aux[x].nodeName.toUpperCase() == node.toUpperCase()){
			return aux[x].firstChild.nodeValue.toUpperCase();
		}
	}
}

function montaTree(id_tree){
	
	document.getElementById("AGRUP").innerHTML = "";
	
	if (window.DOMParser) {
		var parser = new DOMParser(); 
		var xmlDoc = parser.parseFromString(xmlstring,"text/xml");
	}
	else{
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
		xmlDoc.async = false; 
		xmlDoc.loadXML(xmlstring);
	}
	
	var doc = xmlDoc.getElementsByTagName("reg");
	var elem = null;
	
	for(i=0;i<doc.length;i++){
		var reg = doc[i].childNodes;
		var id = "";
		for(j=0;j<agrupador.length;j++){
			for(x=0;x<reg.length;x++){
				if(reg[x].nodeName.toUpperCase() == agrupador[j].toUpperCase()){
					var value = reg[x].firstChild.nodeValue.toUpperCase();
					if((j-1) == -1){
						var pai = "AGRUP";
					}
					else{
						var pai = "AGRUP";
						for(h=0;h<(j);h++)
							pai+= "_"+retornaValor(agrupador[h].toUpperCase(),reg);
					}
					id  = pai+"_"+ value;
					id  = Replace(Replace(id.toUpperCase()," ",""),"º","");
					pai = Replace(Replace(pai.toUpperCase(),"º","")," ","");
					break;	
				}
			}

			if(document.getElementById(id) == null){
				elem = document.createElement("div");
				elem.innerHTML = "<img id=\"node_"+ id +"\" src=\"" + url_base + "imagens/plus.png\" border=\"0\" align=\"absmiddle\" style=\"cursor:pointer;\">&nbsp;"+ value;
				elem.innerHTML += "&nbsp;(<span id=\""+ id +"_qtd\">0</span>)";
				elem.id = id;
				elem.className = "nivel";
				elem.style.padding = '0px '+ (10*j) +'px';
				elem.style.display = 'none';
				tarPai = document.getElementById(pai);
				tarPai.appendChild(elem);
				
				document.createElement("node_"+ id).className = "nv";
				
				if(pai != 'AGRUP'){
					document.getElementById("node_"+pai).onclick = new Function("expandirA(\""+ pai +"\",\"node_"+pai+"\")");
				}
				if(pai == 'AGRUP')
					elem.style.display = 'block';
			}
			document.getElementById(id+"_qtd").innerHTML = parseInt(document.getElementById(id+"_qtd").innerHTML)+1;
		}
						
		if(pai != 'AGRUP' && elem != null){
			elem.style.display = "none";
			document.getElementById("node_"+id).onclick = new Function("mostrar(\""+ id +"_reg\",\"node_"+id+"\")");
		}
		if(agrupador.length == 1){
			document.getElementById("node_"+id).onclick = new Function("mostrar(\""+ id +"_reg\",\"node_"+id+"\")");
		}
		
		if(document.getElementById(id+'_reg') == null && elem != null){
			var lista = document.createElement("div");
			lista.id = id+'_reg';
			lista.className = "registro";
			lista.style.display = "none";
			elem.appendChild(lista);
		}
		
		var table = document.createElement("table");
		var tbody = document.createElement("tbody");
		var tr    = document.createElement("tr");
		
		tr.onmouseover  = new Function("selRow(this,\'selecionalinha\',\'"+ reg[0].firstChild.nodeValue +"\',\'"+ reg[0].firstChild.nodeValue +"\');");
		tr.onmouseout   = new Function("unselRow(this);");
		tr.onclick      = new Function("acao(3);");
		tr.className    = "registro";
		tr.style.cursor = "pointer";
		
		table.style.margin = "0px 0px 0px 5px"
		table.setAttribute("cellPadding","1");
		table.setAttribute("cellSpacing","1");
		table.width = '100%';
		for(j=0;j<reg.length;j++){
			var td    = document.createElement("td");
			texto = document.createTextNode(reg[j].firstChild.nodeValue);
			td.className = "registro";
			td.setAttribute("width",parseInt(780/reg.length).toString()+"px");
			td.appendChild(texto);
			tr.appendChild(td);
		}
		
		tbody.appendChild(tr);
		table.appendChild(tbody);

		if(document.getElementById(id+"_reg") != null){
			document.getElementById(id+"_reg").appendChild(table);
		}
	}
	
	elem = document.createElement("div");
	elem.innerHTML = "&nbsp;";
	elem.className = "nivel";
	elem.style.display = 'block';
	tarPai = document.getElementById("AGRUP");
	tarPai.appendChild(elem);
}

function expandirA(div,img,alt){
	var campo = document.getElementsByTagName("div");
	var img    = document.getElementById(img);
	
	for(x=0;x<campo.length;x++){
		if(campo[x].id.indexOf(div) != -1){
			t = campo[x].id.replace(div+"_","");
			if(t.indexOf("_") == -1){
				if(campo[x].style.display=='block'){
					campo[x].style.display='none';
					img.src = url_base + 'imagens/plus.png';
					img.alt=alt;
				}
				else{
					campo[x].style.display='block';
					img.src = url_base + 'imagens/minus.png';
					img.alt=alt;
				}									
			}
		}
	}
	
}

function listaRegistro(){
	
	document.getElementById("AGRUP").innerHTML = "";
	
	if (window.DOMParser) {
		var parser = new DOMParser(); 
		var xmlDoc = parser.parseFromString(xmlstring,"text/xml");
	}
	else{
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
		xmlDoc.async = false; 
		xmlDoc.loadXML(xmlstring);
	}
	
	var doc = xmlDoc.getElementsByTagName("reg");
	var elem = null;
	
	for(i=0;i<doc.length;i++){
		var reg = doc[i].childNodes;
					
		var table = document.createElement("table");
		var tbody = document.createElement("tbody");
		var tr    = document.createElement("tr");

		tr.onmouseover = new Function("selRow(this,\'selecionalinha\',\'"+ reg[0].firstChild.nodeValue +"\',\'"+ reg[0].firstChild.nodeValue +"\');");
		tr.onmouseout  = new Function("unselRow(this);");
		tr.onclick     = new Function("acao(3);");
		//tr.style.backgroundColor = "#ff0000";
		tr.style.cursor = "pointer";
		
		table.style.margin = "0px 0px 0px 0px"
		table.setAttribute("cellPadding","0");
		table.setAttribute("cellSpacing","0");
		table.width = '100%';
		for(j=0;j<reg.length;j++){
			var td    = document.createElement("td");
			
			var t = reg[j].firstChild.nodeValue
			while(t.indexOf("#X#") != -1)
				t = t.replace("#X#","&");
			texto = document.createTextNode(t);
			
			td.className = "registro";
			td.setAttribute("width",parseInt(780/reg.length).toString()+"px");
			td.appendChild(texto);
			tr.appendChild(td);
		}
		
		tbody.appendChild(tr);
		table.appendChild(tbody);
		
		document.getElementById("AGRUP").appendChild(table);
		
	}
}

function montaTabela(){
	stopAjax();
	var values = getValues(document.formPesq);
	var conteudo = document.getElementById("resultPesquisa");
	try
	{
		conteudo.innerHTML='<b><font size="1" face="verdana">Carregando...</font></b>';
	}
	catch(e)
	{
		alert(e);
	}
	url = "resultadoPesquisa.asp?";
	xmlhttp.open("post", url, true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4){
			var texto=xmlhttp.responseText;
			xmlstring=texto.replace(/\+/g," ");
			xmlstring=unescape(xmlstring);
			
			if (window.DOMParser) {
				var parser = new DOMParser(); 
				xmlDoc = parser.parseFromString(xmlstring, "text/xml");
			}
			else{
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
				xmlDoc.async = false; 
				xmlDoc.loadXML(xmlstring);
			}
			
			var doc = xmlDoc.getElementsByTagName("cab")[0].childNodes;
						
			var table = document.createElement("table");
				table.setAttribute("border","0");
				table.setAttribute("width","780px");
				table.setAttribute("align","center");
				table.setAttribute("cellPadding","0");
				table.setAttribute("cellSpacing","0");
				table.setAttribute("class","texto");
				
			var tbody = document.createElement("tbody");
			var thead = document.createElement("thead");
			var tfoot = document.createElement("tfoot");

			//CRIA BOTÕES DO AGRUPADOR
			tr = document.createElement("tr");
			td = document.createElement("td");
			td.innerHTML = "<img src=\"" +  url_base + "imagens\/limpar.gif\" style=\"cursor:pointer;\" onClick=\"limpaAgrupador();showReg();\"/>&nbsp;";
			td.innerHTML += "<img src=\"" + url_base + "imagens\/agrupar.gif\" style=\"cursor:pointer;\" onClick=\"showReg();\"/>";
			tr.appendChild(td);
			thead.appendChild(tr);

			//FILTRO
			var tr = document.createElement("tr");
				
			var td = document.createElement("td");
				td.setAttribute("id","filtro");
				td.colSpan = doc.length;
				tr.appendChild(td);
				thead.appendChild(tr);
			//FIM FILTRO
			
			//AGRUPAMENTO
			var tr = document.createElement("tr");
				
			var td = document.createElement("td");
				td.setAttribute("id","AGRUP");
				td.colSpan = doc.length;
				tr.appendChild(td);
				tbody.appendChild(tr);
			//FIM AGRUPAMENTO
			
			//Monta Cabecalho
			tr = document.createElement("tr");
			tr.bgcolor = '#cccccc';
			for(x=0;x<doc.length;x++){
				td = document.createElement("td");
							
				td.appendChild(document.createTextNode(doc[x].firstChild.nodeValue));
				td.onclick = new Function("addFiltro(\""+ doc[x].nodeName +"\",\""+ doc[x].firstChild.nodeValue +"\")");
				td.style.cursor = "pointer";
				td.className = "cabecalho";
				td.setAttribute("width",parseInt(780/doc.length).toString()+"px");
				tr.appendChild(td);
			}
			thead.appendChild(tr);
			//Fim Cabecalho
		
			table.appendChild(tbody);
			table.appendChild(thead);
			table.appendChild(tfoot);
			document.getElementById("resultPesquisa").innerHTML = "";
			document.getElementById("resultPesquisa").appendChild(table);
			document.getElementById("filtro").setAttribute("colSpan",doc.length);	
			showReg();
			startAjax();
		}
	}
	xmlhttp.send(values);
}

function mostrar(div,img){
	var camada = document.getElementById(div);
	var img    = document.getElementById(img);
	if(camada.style.display==''){
		camada.style.display='none'
		img.src = url_base + 'imagens/plus.png';
	}
	else{
		camada.style.display=''
		img.src = url_base + 'imagens/minus.png';
	}
	
}

function showReg(){
	if(agrupador.length > 0)
		montaTree();
	else
		listaRegistro();
}
