//Eventos Cross Browser
function addEvent(obj, evType, fn){
	if(obj.addEventListener)obj.addEventListener(evType,fn,true);
	if(obj.attachEvent)obj.attachEvent("on"+evType,fn);
}

function getSource(e){
	if(typeof e=='undefined')var e=window.event;
	var source=typeof e.target!='undefined'?e.target:typeof e.srcElement!='undefined'?e.srcElement:true;
	if(source.nodeType == 3)source=source.parentNode;
	return source;
}

//Inicia menu
function inittree(nivel1, nivel2, nivel3){
	var uls=document.getElementsByTagName("ul");
	for(i=0;i<uls.length;i++)
		if(uls[i].className=="menulist")
			uls[i].style.display="block";

	if (nivel1 && nivel1 != "" && document.getElementById(nivel1))
		document.getElementById(nivel1).className="aberto";
	if (nivel2 && nivel2 != "" && document.getElementById(nivel2)) {
		document.getElementById(nivel2).className="aberto";
		primeiroMenu=document.getElementById(nivel2);
	}
	if (nivel3 && nivel3 != "" && document.getElementById(nivel3))
		document.getElementById(nivel3).className="aberto";
}

//Abre/fecha quando clicado
var ultimoMenu, ultimoMenuSub, primeiroMenu;
function clicMenu(obj){
	var li=obj.parentNode;

	//Swap no objeto clicado
	li.className=li.className=="fechado"?"aberto":"fechado";

	//Se existe o objeto guardado, verificamos se é igual ao clicado e então fazemos um swap na exibição.
	//Isso significa que o objeto foi clicado novamente e deve ser fechado, logo paramos a execução da função.
	if (ultimoMenu) {
		//alert("tem ultimo");
		if(obj.parentNode.parentNode.id == "") {
			//alert(ultimoMenu.parentNode.id);
			ultimoMenu.parentNode.className=ultimoMenu.parentNode.className=="fechado"?"aberto":"fechado";
		}
	}
	if (ultimoMenuSub)
		ultimoMenuSub.parentNode.className=ultimoMenuSub.parentNode.className=="fechado"?"aberto":"fechado";

	//Aqui guardo valores dos objetos clicados para fechá-los depois
	if (primeiroMenu) {
		primeiroMenu.className="fechado";
		primeiroMenu=false;
		ultimoMenu=obj;
	}
	else {
		//Se o click foi em um sub, guardo o menu e o sub
		if(obj.parentNode.parentNode.id.substring(obj.parentNode.parentNode.id.length - 4, obj.parentNode.parentNode.id.length) == "_sub") {
			//alert("_sub");
			ultimoMenu=obj.parentNode.parentNode;
			ultimoMenuSub=obj;
		}
		//Senão guardo só o menu e limpo o sub
		else {
			//alert("menu");
			ultimoMenu=obj;
			ultimoMenuSub=null;
		}
	}

	return false;
}