//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;
}

//Atribuicao de eventos
var ultimoMenu;
function initList(u, nivel1, nivel2, nivel3){
	var lis=u.childNodes;
	for(ii=0;ii<lis.length;ii++)
		if(lis[ii].nodeType==1 && lis[ii].getElementsByTagName("ul").length>0){
			if (nivel1 != lis[ii].id && nivel2 != lis[ii].id && nivel3 != lis[ii].id)
				lis[ii].className="fechado";
			else {
				lis[ii].className="aberto";
				lisSub = lis[ii].getElementsByTagName("li");
				for (x = 0; x < lisSub.length; x++)
					lisSub[x].className="aberto";

				if (nivel1 == lis[ii].id) {
					ultimoMenu=lis[ii];
				}
			}
			addEvent(lis[ii].childNodes[0],"click",clicado);
		}

	var us=u.getElementsByTagName("ul");
	for(var i=0;i<us.length;i++)
		initList(us[i], nivel1, nivel2, nivel3);
}

function inittree(nivel1, nivel2, nivel3){
	var uls=document.getElementsByTagName("ul");
	for(i=0;i<uls.length;i++)
		if(uls[i].className=="menulist"){
			initList(uls[i], nivel1, nivel2, nivel3);
			uls[i].style.display="block";
		}
}

//Abre/fecha quando clicado
function clicado(e){
	var li=getSource(e).parentNode;

	//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)
		if (getSource(e) == ultimoMenu) {
			ultimoMenu.parentNode.className=ultimoMenu.parentNode.className=="fechado"?"aberto":"fechado";
			return;
		}

	//Se o click foi na imagem, guardamos o objeto
	if (getSource(e).tagName == "DIV")
		ultimoMenu=getSource(e);
		
//só se aplica ao click na imagem
	if (getSource(e).tagName != "A") {
		var uls=document.getElementsByTagName("ul");
		for(i=0;i<uls.length;i++)
			if(uls[i].className=="menulist")
				lis = uls[i].getElementsByTagName("li");
		for (x = 0; x < lis.length; x++)
			lis[x].className="fechado";
	}

	li.className=li.className=="fechado"?"aberto":"fechado";
	return false;
}

//addEvent(window,"load",inittree);
