/**
 * Classe para modelagem do menu do ganesh
 */
GaneshMenu = {
    arrayNav: new Array(), //Array que vai armazenar os titulos dos modulos para navegacao no menu
    arrayContentNav: new Array(), // Array que vai conter o html dos modulos filhos
    ContentPrincipal: '', // conteudo principal dos modulos
    setpNav: 0, //Contador para os arrays
    urlSearch: '', //Armazena a Url para o post da busca
    textSearch: '', //Texto default da pesquisa
    urlCookie: '', //Armazena a Url para o cookie do aviso do menu
    colorMenu: '#FDB850', //Cor de fundo do menu
    defaultColorMenu: '#FFF', // Cor  defult do fundo das tabs
    ColorCookie: '#8F1700', // Cor Quando o mouse tiver em cima do link do retirar lembrete
    defaultColorCookie: '#777777', // Cor Quando o mouse tiver em cima do link do retirar lembrete
    mountNavMenu: '', //Grava a barra de navegação do menu
    myModules: '', //Grava os módulos que o usuário está passando

    /*
     * Metodos que serão carregados automaticamentes
     */
    construct:function(url,textSearch,cookie){       
      this.openCloseMenu(); //Tem que ser o primeiro a carregar pelo contruct
      this.cssInit();
      this.clicTabs();
      this.searchClick();
      this.searchInput();
      this.cleanText();
      this.cookieMenu();
      this.ContentPrincipal = jQuery("#ul2").html(); //Armazenando o conteudo principal do Menu
      this.urlSearch = url;
      this.textSearch = textSearch;
      this.urlCookie = cookie;
      this.menuReminder();
      /*
       * PASS in Firefox 3, 3.5; IE 7, 8; Safari 3.x
       * FAIL in Opera and Chrome
       * @author Hélio Costa e Silva <helio.costa@vexcorp.com>
       */
      shortcut.add("Alt+g", function() { GaneshMenu.openCloseMenuKeydown(); });
      shortcut.add('esc', function() { GaneshMenu.closeMenuKeydown(); })
    },

    closeMenuKeydown:function() {
        jQuery('div#menuGanesh').fadeOut();
        jQuery('div#logoGaneshOrange').hide();
    },

    openCloseMenuKeydown:function() {
        if (jQuery('div#menuGanesh').css('display') == "none"){
            jQuery('div#menuGanesh').fadeIn();
            jQuery('div#logoGaneshOrange').show();
        }
    },

    /**
     * Método para abrir e fechar o menu.
     */
    openCloseMenu:function() {
        jQuery('div#logoGanesh').click(function(){
            if(jQuery('div#menuGanesh').css('display')=="none"){
                jQuery('div#menuGanesh').fadeIn();
                jQuery('div#logoGaneshOrange').show();
            }else if(jQuery('div#menuGanesh').css('display')=="block"){
                GaneshMenu.closeMenuKeydown();
            }
        });

        jQuery('div#logoGaneshOrange').click(function(){
            if(jQuery('div#menuGanesh').css('display')=="none"){
                jQuery('div#menuGanesh').fadeIn();
                jQuery('div#logoGaneshOrange').show();
            }else if(jQuery('div#menuGanesh').css('display')=="block"){                 
                 GaneshMenu.closeMenuKeydown();
            }
        });
        
        jQuery('div#content').click(function(){
            GaneshMenu.closeMenuKeydown();
        });
    },

    /**
     * Metodo para aplicar CSS inicial nos elementos
     */
    cssInit:function(){
        //Cursores
        jQuery('div#logoGanesh').css('cursor','pointer');
        jQuery('div#logoGaneshOrange').css('cursor','pointer');
        jQuery('div#tab1').css('cursor','pointer');
        jQuery('div#tab2').css('cursor','pointer');
        jQuery('div#tab3').css('cursor','pointer');
        jQuery('#imgSearch').css('cursor','pointer');
        jQuery('#ckMenuGanesh').css('cursor','pointer');
        //Propriedades de cores
        jQuery('div#tab2').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3_1').css('background-color',GaneshMenu.colorMenu);
        // Retirando o Alt das imagens da barra do menu
        jQuery('div#topGanesh img').attr('alt','');
        jQuery('div#controlerLogoMenu img').attr('alt','');
        jQuery('div#controlerMenu img').attr('alt','');
        jQuery("#ul2 ul"). css({display: "none"});
    },

    /**
     * Montando menus de módulos
     */
     executeModuleClick:function(idModule){
         if(typeof idModule == 'string'){
            GaneshMenu.myModules = idModule.split(",");
         }else{
             GaneshMenu.myModules = idModule;
         }
         if(GaneshMenu.myModules.length >= 1){
             for(i=0;i<=GaneshMenu.myModules.length;i++){
                if( jQuery("#ul2 #"+GaneshMenu.myModules[i]).find('ul:first').html() != null){
                        //Incrementando
                        GaneshMenu.setpNav++;
                        //Aramazenando conteudo
                        GaneshMenu.arrayContentNav[GaneshMenu.setpNav] = {'idModule' : ''+GaneshMenu.myModules[i]+'' , 'contentNav' : ''+jQuery("#ul2 #"+GaneshMenu.myModules[i]).find('ul:first').html()+''};                        
                        //Armazenando titulo dos módulos
                        GaneshMenu.arrayNav[GaneshMenu.setpNav] = {'idModule' : ''+GaneshMenu.myModules[i]+'' , 'nav' : ''+jQuery("#ul2 #"+GaneshMenu.myModules[i]).find('a').html()+''};
                         //Escrevendo no menu se houver filhos
                        //jQuery('#ul2').html(GaneshMenu.arrayContentNav[GaneshMenu.setpNav].contentNav);
                        document.getElementById('ul2').innerHTML = GaneshMenu.arrayContentNav[GaneshMenu.setpNav].contentNav;
                }
             }
             //Montando Barra de navegação no menu
            GaneshMenu.mountNav();
         }else{
             GaneshMenu.setpNav++;
             if( jQuery("#ul2 #"+GaneshMenu.myModules).find('ul:first').html() != null){
                        //Aramazenando conteudo
                        GaneshMenu.arrayContentNav[GaneshMenu.setpNav] = {'idModule' : ''+GaneshMenu.myModules[i]+'' ,'contentNav' : ''+jQuery("#ul2 #"+GaneshMenu.myModules).find('ul:first').html()+''};
                         //Armazenando titulo dos módulos
                        GaneshMenu.arrayNav[GaneshMenu.setpNav] = {'idModule' : ''+GaneshMenu.myModules[i]+'' , 'nav' : ''+jQuery("#ul2 #"+GaneshMenu.myModules).find('a').html()+''};
                        //Escrevendo no menu se houver filhos
                        //jQuery('#ul2').html(GaneshMenu.arrayContentNav[GaneshMenu.setpNav].contentNav);
                        document.getElementById('ul2').innerHTML = GaneshMenu.arrayContentNav[GaneshMenu.setpNav].contentNav;
                        //Montando Barra de navegação no menu
                        GaneshMenu.mountNav();
             }
         }
     },

     /**
      * Alterna entre as tabs do menu
      */
     clicTabs:function(){
        jQuery('div#tab1').mouseover(function(){
            GaneshMenu.openTab1();
        });
         jQuery('div#tab2').mouseover(function(){            
            GaneshMenu.openTab2();
        });
        jQuery('div#tab3').mouseover(function(){
            GaneshMenu.openTab3();
        });
        jQuery('div#tab3_1').mouseover(function(){
            GaneshMenu.openTab3();
        });
     },

     /**
      * Abre tab número 1 do menu fechando as demais
      */
     openTab1:function(){
        jQuery('div#tab1').css('background-color',GaneshMenu.defaultColorMenu);
        jQuery('div#tab2').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3_1').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#content1').css('display','block');
        jQuery('div#content2').css('display','none');
        jQuery('div#content3').css('display','none');
     },
     /**
      * Abre tab número 2 do menu fechando as demais
      */
     openTab2:function(){
        jQuery('div#tab1').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab2').css('background-color',GaneshMenu.defaultColorMenu);
        jQuery('div#tab3').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3_1').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#content1').css('display','none');
        jQuery('div#content2').css('display','block');
        jQuery('div#content3').css('display','none');
     },
     /**
      * Abre tab número 3 do menu fechando as demais
      */
     openTab3:function(){
        jQuery('div#tab1').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab2').css('background-color',GaneshMenu.colorMenu);
        jQuery('div#tab3').css('background-color',GaneshMenu.defaultColorMenu);
        jQuery('div#tab3_1').css('background-color',GaneshMenu.defaultColorMenu);
        jQuery('div#content1').css('display','none');
        jQuery('div#content2').css('display','none');
        jQuery('div#content3').css('display','block');
     },

     /**
      * Busca modulos se clicar no icone da lupa
      */
     searchClick: function(){
         jQuery('#imgTabSearch').click(function(){
             GaneshMenu.search();
         });         
     },
     /**
      * Busca se apertar a tecla enter do teclado
      */
     searchInput:function(){
    	var field = jQuery('input#fieldSearchMenu');
       
    	field.keyup(function(event){           
           if (event.keyCode == 13) {
               GaneshMenu.search();
            }
        });
       
       
    	field.keyup(function(event){
    	   if (field.val().length > 3){
    		   GaneshMenu.search();
    	   }       
       });
    	
     },

     /**
      * Realiza a busca de modulos
      */
     search:function(){
        GaneshMenu.openTab3();
        jQuery().ajaxStart(function() { jQuery('#indicator').show();  });
        var Url = GaneshMenu.urlSearch;
        var data = jQuery('input#fieldSearchMenu').serialize();
        jQuery.ajax({
            url: Url+'?'+data,
            cache: false,
            success: function(data){
                jQuery('div#content3 ul#ul3').html(data);
            }
        });
        jQuery().ajaxStop(function() {  jQuery('#indicator').hide();  });        
     },

     /**
      * Navegação pelos módulos
      */
     Nav:function(go){
         var i;
         var count;
         var verific; // Verificar a posição que o usuário ta clicando.
        
         if(go=='home'){
             //jQuery('#ul2').html(GaneshMenu.ContentPrincipal);
             document.getElementById('ul2').innerHTML = GaneshMenu.ContentPrincipal;
             for(i=0;i<=GaneshMenu.arrayNav.length;i++){
                 GaneshMenu.arrayNav.pop();
             }
             GaneshMenu.setpNav = 0;
             GaneshMenu.mountNav();
         }else{
             count = GaneshMenu.arrayNav.length - go;
             verific = GaneshMenu.arrayNav.length -1;
             if(count > 0 && verific != go){ //Só estará tendo alterações se for maior que 0 e não for
                 for(i=1;i<count;i++){
                     GaneshMenu.arrayNav.pop();
                     GaneshMenu.arrayContentNav.pop();
                 }
                  GaneshMenu.setpNav= go;
                 //Escrevendo no menu se houver filhos
                 // jQuery('#ul2').html(GaneshMenu.arrayContentNav[go].contentNav);
                  document.getElementById('ul2').innerHTML = GaneshMenu.arrayContentNav[go].contentNav;
                  //GaneshMenu.executeModuleClick(GaneshMenu.arrayContentNav[go].idModule);
                  GaneshMenu.mountNav();
             }
         }
     },

     /**
      * Monta a barra de navegação
      */
     mountNav:function(){
         GaneshMenu.mountNavMenu = '';         
         if(GaneshMenu.setpNav > 0){            
            for(i=1;i<GaneshMenu.arrayNav.length;i++){
             GaneshMenu.mountNavMenu = GaneshMenu.mountNavMenu + '&nbsp;-<a href="#" onclick="GaneshMenu.Nav('+i+')" class="NavStyle" >'+GaneshMenu.arrayNav[i].nav+'</a>';
            }
            //jQuery('div#NavModulesMore').html(GaneshMenu.mountNavMenu);
            document.getElementById('NavModulesMore').innerHTML = GaneshMenu.mountNavMenu;
         }
         if(GaneshMenu.setpNav == 0){
            //jQuery('#ul2').html(GaneshMenu.ContentPrincipal);
            document.getElementById('ul2').innerHTML = GaneshMenu.ContentPrincipal;
            //jQuery('div#NavModulesMore').html('');
            document.getElementById('NavModulesMore').innerHTML = '';
         }
     },

     /**
      * Limpa o campo de pesquisa ou escreve denovo
      */
     cleanText:function(){
        jQuery('#fieldSearchMenu').click(function(){
             if(jQuery(this).val() == GaneshMenu.textSearch){
                 jQuery('#fieldSearchMenu').val('');
                 return false;
             }
             return false;
         });
         jQuery('div#tab3_1').bind('mouseleave',function(){
             jQuery(document).click(function(){
                 if(jQuery('#fieldSearchMenu').val() == ''){
                      jQuery('#fieldSearchMenu').val(GaneshMenu.textSearch);
                      return false;
                  }
              });
              return false;
         });         
     },

     /**
      * Controla a ação ajax para retirar do menu a div que mostra aonde é o menu
      */
     cookieMenu: function(){
         jQuery('#ckMenuGanesh').mouseover(function(){
             jQuery(this).css('color',GaneshMenu.ColorCookie);
         });
         jQuery('#ckMenuGanesh').mouseout(function(){
             jQuery(this).css('color',GaneshMenu.defaultColorCookie);
         });

         jQuery('#ckMenuGanesh').click(function(){
            jQuery.ajax({
                url: GaneshMenu.urlCookie,
                cache: false,
                success: function(){
                    jQuery('div#cookieMenu').fadeOut();
                }
            });
         });
     },

     /**
      * Show label for remember user where menu is
      */
     menuReminder:function() {
         jQuery("#ganeshAnimate").animate({ 'width': '100%', "float": "left", 'opacity': '1'}, 1500);
     }

}
