/**
 * @author diego
 */
$(document).bind("ready", function() {

    var $subMenuAtivo = null,
		search = location.search.slice(1);
		
	$("#meumenu a").each(function() {
		var $this = $(this);
		if (new RegExp(search + "$").test($this.attr("href"))) {
			$subMenuAtivo = $this.parents("ul:not(.ulMenuMain)").show();
			$subMenuAtivo = ($subMenuAtivo.size() > 0 ? $subMenuAtivo : null);
		}
	});
	
	function c() {
		//console.log.apply(console.log, arguments);
	}
    
    $(".menuLinkChild").click(function ()
    {
        $this = $(this); // Elemento A
        $submenu = $this.next().children(".sub_menu"); // Sub menu        
        c("====================");
		// Iniciou a página agora?
        if ($subMenuAtivo !== null) {
			
			// Checa se estamos clicando no elemento que já está aberto (subMenuAtivo)
			if ($subMenuAtivo.size() > 0 && $subMenuAtivo.get(0) !== $submenu.get(0)) {
				// Se entrou aqui, é porque estamos clicando num item diferente do ativo 
				c("Item diferente");
				
				//$subMenuAtivo.find($submenu.get(0))); DEU PAU, vo ter que fazer na mão
				var occur = 0;
				$subMenuAtivo.find("*").each(function() {
					if (this === $submenu.get(0)) {
						occur++;
						return false;
					}
				});
				
				// Verifica se o item clicado está contido no item ativo.
				if (occur != 0) {
					// Está contido
					c("Está contido");
					
					c("Novo ativo");
					// Seta novo sub menu
					$subMenuAtivo = $submenu;
					
					c("Ativo mostrado");
					// Mostra item clicado
					$subMenuAtivo.slideDown("medium");
				} else {
					// Não está contido
					c("Não está contido");
					
					// Verificamos se estes itens pertencem ao mesmo menu principal
					if (
						$subMenuAtivo.parents(".ulMenuFirstChild").get(0) !== undefined && 
						$submenu.parents(".ulMenuFirstChild").get(0) !== undefined && 
						$subMenuAtivo.parents(".ulMenuFirstChild").get(0) === $submenu.parents(".ulMenuFirstChild").get(0)) {
						// Estão no mesmo menu principal, então não escondemos ascendentes
						c("Mesmo menu principal");
						
						// Esconde o item ativo e seu descendentes
						$subMenuAtivo.slideUp("fast", function(){
							c("Ativo escondido");
							c("Descendentes escondidos");
							// Esconde os sub-itens deste item aberto
							$subMenuAtivo.find(".sub_menu").hide();
							
							c("Novo Ativo");
							// Seta novo sub menu
							$subMenuAtivo = $submenu;
							
							c("Ativo mostrado");
							// Mostra item clicado
							$subMenuAtivo.slideDown("medium");
						});
					} else {
						// Itens principais diferentes então escondemos tudo
						c("Diferente menu principal");
						
						// Esconde o item ativo e seu descendentes
						$subMenuAtivo.parents(".ulMenuFirstChild").andSelf().slideUp("fast", function(){
							c("Ativo escondido");
							c("Ascendentes e descendentes escondidos");
							// Esconde os sub-itens deste menu principal
							$subMenuAtivo.parents(".ulMenuFirstChild").find(".sub_menu").hide();
							
							c("Novo Ativo");
							// Seta novo sub menu
							$subMenuAtivo = $submenu;
							
							c("Ativo mostrado");
							// Mostra item clicado
							$subMenuAtivo.slideDown("medium");
						});
					}
					
				}
			} else {
				
				// Se estivermos clicando item atual, então escondemos ele
				c("Segundo clique no ativo");
				$subMenuAtivo.slideUp("fast", function() {
					c("Ativo escondido");
					c("Descendentes escondidos");
					$subMenuAtivo.find(".sub_menu").hide();
					
					// Testa se é um item principal, anula ativo
					if ($subMenuAtivo.parent().is(".divMenuFirstChild")) {
						c("Ativo anulado");
						$subMenuAtivo = null;
					}
				});
			}
			
		} else {
			c("Novo Ativo");
			// Iniciou página agora, mostramos qualquer item
			$subMenuAtivo = $submenu;
			
			c("Ativo mostrado");
			$subMenuAtivo.slideDown("medium");
		}
        
    });
    
});