var treeMenuSelecionado = 0;
////////////// OBJETO XMLHTTP REQUEST /////
function DTreeR(){
	dTreeR = false;
	if(window.XMLHttpRequest)
	{
		dTreeR = new XMLHttpRequest();
		if(dTreeR.overrideMimeType) dTreeR.overrideMimeType('text/html');
	}
	else if(window.ActiveXObject)
	{
		try
		{
			dTreeR = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				dTreeR = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}
	return dTreeR;
}
//////////////

function FechaItem(cod_cont)
{
	var li = document.getElementById("li_" + cod_cont);
	var plus = document.getElementById("plus_" + cod_cont);
	var img = document.getElementById("plus_img_" + cod_cont);
	
	img.src = img.src.replace(/minus/, "plus");
	plus.title = "+";
	
	if(img.src.match(/bottom/)) li.className = "tree_ultimo_fechado";
	else li.className = "tree_fechado";
}

function AbreItem(cod_cont,marcar)
{
	var arrCods = [];
	if(typeof(cod_cont) == 'object')
	{
		arrCods = cod_cont;
		cod_cont = arrCods.shift();
	}
	
	var li = document.getElementById("li_" + cod_cont);
	var plus = document.getElementById("plus_" + cod_cont);
	var img = document.getElementById("plus_img_" + cod_cont);
	
	var carregado = false;
	if(li) for(var i=0; i<li.childNodes.length; i++) if(li.childNodes[i].tagName == 'UL') carregado = true;
	
	if(!carregado)
	{
		var ulCarregando = document.createElement("ul");
		ulCarregando.setAttribute("id", "ul_" + cod_cont);

		ulCarregando.innerHTML = '<li class="carregando">Carregando...</li>';
		li.appendChild(ulCarregando);

		var url = urlTreeAjax + '&ajax=1&pai=' + cod_cont;
				dTreeR = DTreeR();
        if (!dTreeR)
        {
            alert('Não foi possível criar uma instância XMLHTTP');
            return false;
        }
        
        dTreeR.onreadystatechange = function()
        {
        	if(dTreeR.readyState == 4)
        	{
		        if(dTreeR.status == 200)
		        {
		        	document.getElementById("ul_" + cod_cont).innerHTML = dTreeR.responseText;
		        	if(arrCods.length) AbreItem(arrCods);
		        	else OpenTo(cod_cont);
		        }
		        else
		        {
		            alert('Não foi possível obter as informações necessárias');
		        }
		    }
        };
        //alert(url);
        dTreeR.open('GET', url, true);
        dTreeR.setRequestHeader("Content-Encoding", "utf-8");
        dTreeR.send(null);
	}
	
	if(plus && img)
	{
		img.src = img.src.replace(/plus/, "minus");
		plus.title = "-";
		
		if(img.src.match(/bottom/)) li.className = "tree_ultimo";
		else li.className = "";	
	}
}

function AlternaVisibilidade(cod_cont)
{
	if(document.getElementById("plus_img_" + cod_cont).src.match(/minus/)) FechaItem(cod_cont);
	else AbreItem(cod_cont);
}

function OpenTo(cod_cont,origem)
{
	if(NodeExist(cod_cont))
	{
		var li = document.getElementById("li_" + cod_cont).parentNode.parentNode;
		if(li.tagName.toLowerCase() == "li")
		{
			var cod_pai = li.id.substr(3);
			AbreItem(cod_pai);
			OpenTo(cod_pai, "r");
		}
		if(origem != "r")
		{
			if(treeMenuSelecionado)
			{
				var aAntigo = document.getElementById("a_" + treeMenuSelecionado);
				aAntigo.className = aAntigo.className.replace(/\sselecionado/,"");
			}
			
			var aNovo = document.getElementById("a_" + cod_cont);
			if(origem!="c")
			{
				//window.location = "#a_" + cod_cont;
				aNovo.focus();
			}
			
			aNovo.className = aNovo.className + " selecionado";
			treeMenuSelecionado = cod_cont;
		}
	}
	else
	{
		var url = urlTreeAjax + '&ajax=1&abrir=' + cod_cont;
				//alert(url);
        dTreeR = DTreeR();
        dTreeR.onreadystatechange = function()
        {
        	if(dTreeR.readyState == 4)
        	{
		        if(dTreeR.status == 200)
		        {
		        	eval("var arrAbrir = " + dTreeR.responseText);
		        	if(!arrAbrir.length)
		        	{
		        		alert('O código informado não existe');
		        		return false;
		        	}
		        	AbreItem(arrAbrir);
		        }
		        else
		        {
		            alert('Não foi possível obter as informações necessárias');
		        }
		    }
        };
        dTreeR.open('GET', url, true);
        dTreeR.setRequestHeader("Content-Encoding", "utf-8");
        dTreeR.send(null);
	}
}

function NodeExist(node)
{
	return document.getElementById("li_"+node)?true:false;
}
