/**
 *	menuAccordion()
 *	Cria o efeito de accordion no menu
 */
function menuAccordion() {
	var menu = document.getElementById('menu')
	if(!menu)
		return;
	
	var li
	for(var i = 0; (li = menu.getElementsByTagName('li')[i]); i++) {
		if(li.getElementsByTagName('span').length) {
			var span = li.getElementsByTagName('span')[0]
			span.onclick = function() {
				var ul = this.parentNode.getElementsByTagName('ul')[0]
				if(ul) {
					mostrarItens(ul)
					
					// se é um ítem do nível 1, coloca ela no final da lista
					if(ul.parentNode.parentNode.parentNode.id == "menu")
						ordenarItens(ul.parentNode)
				}
			}
			
			// mouseover para a seta
			span.onmouseover = function() {
				this.className = 'aberto'
			}
			span.onmouseout = function() {
				var ul = this.parentNode.getElementsByTagName('ul')[0]
				if(ul && ul.style.display != 'block')
					this.className = ''
			}
		}
	}
}
addListener(window, 'load', menuAccordion)

/**
 *	mostrarItens()
 *	Mostra as categorias e derivadas
 *
 *	@param		object		obj		Objeto da lista a ser mostrada
 */
function mostrarItens(obj) {
	// se a UL estiver fechada
	if(obj.style.display != 'block') {
		if(obj.className != 'links' && obj.className != 'links mostrar') {
			var ul, span
			// tira a classe das spans
			for(var i = 0; (span = document.getElementById('menu').getElementsByTagName('span')[i]); i++) {
				if(span.parentNode.getElementsByTagName('ul')[0] != obj)
					span.className = ''
			}
			
			// esconde as outras ULs abertas
			for(i = 0; (ul = document.getElementById('menu').getElementsByTagName('ul')[0].getElementsByTagName('ul')[i]); i++)
				ul.style.display = 'none'
		}
		
		// mostra a UL
		obj.style.display = 'block'
	
	// se a UL estiver aberta, fecha ela
	} else
		obj.style.display = 'none'
}

/**
 *	ordenarItens()
 *	Faz a transferência do selecionado para baixo
 *
 *	@param		object		li		Objeto da lista a ser movida
 *	@see		menuAccordion()
 */
function ordenarItens(li) {
	var menu = document.getElementById("menu")
	if(!menu)
		return
	
	// armazena a li para futura referência
	var liTransporte = li
	
	// remove a li da lista
	li.parentNode.removeChild(li)
	
	// adiciona a referência da li no final da lista
	var menu = document.getElementById("menu")
	var ul = menu.getElementsByTagName("ul")[0]
	ul.appendChild(liTransporte)
}

/**
 *	carregarItens()
 *	Faz o trabalho sujo de ordenar o menu quando a página carrega
 */
function carregarItens() {
	var menu = document.getElementById("menu")
	if(!menu)
		return
	
	var li, ul
	for(var i = 0; (li = menu.getElementsByTagName("li")[i]); i++) {
		var liRef = li
		ul = li.getElementsByTagName("ul")[0]
		if(ul) {
			if((ul.className.indexOf("mostrar") != -1) && (ul.parentNode.parentNode.parentNode.id == "menu"))
				ordenarItens(liRef)
		}
	}
}
addListener(window, 'load', carregarItens)