var include_once_snsmenu_simple;
if ( include_once_snsmenu_simple == undefined ) {
   include_once_snsmenu_simple = true;
   
   $(document).ready(function() {
      var menuDelay = 500;
      
      function menuEnterEvt()
      {
          // Surbrillance menus
          $(this)
             .addClass('hovered')
             .children('a').addClass('hovered');
             
          // On ne gère que les menus en cascade
          if ($(this).hasClass('inline')) {
             return;
          }
          
          // Menu DOM
          var $domMenu = $(this).get(0);
          
          if ($domMenu.timeoutID == undefined) {
             // Ouverture initiale du menu
             $domMenu.timeoutID = null;
          }
          else if ($domMenu.timeoutID != null) {
             // Une demande de fermeture du menu est en cours
             // On annule les demandes
             window.clearTimeout($domMenu.timeoutID);
             $domMenu.timeoutID = null;
             return;
          }
          
          // Chargement dynamique du menu au besoin
          if ( $(this).hasClass('has_children') && $(this).children('ul').length == 0 ) {
          	$(this).append("<ul class=\"loader\"></ul>");
          	var $this=$(this);
          	var request=$this.attr('id').substr(9).split('/');
          	$.ajax({
          		url: sns_module + '/xmlquery/query/getmenu/(nodeid)/' + request[0] + '/(depth)/' + request[1] + '/(compid)/' + $this.closest('.component').attr('id'), //sns_module + '/ajax_menu/' + $this.attr('id').substr(9) + '/' + $this.closest('.component').attr('id'),
          		success: function(data, textStatus, XMLHttpRequest) {
          			var loader = $this.find('.loader');
          			var isVisible = loader.is(':visible');
          			loader.remove();
          			$this.append($('ezresult', data).text());
          			if (isVisible) {
          				$this.find('> ul').show();
          			}
          			$this.find('> a').addClass('parent');
          			$this.find('li')
          				.mouseenter(menuEnterEvt)
          				.mouseleave(menuExitEvt);
          		},
          		cache:false,
          		dataType: 'xml'
          	});
          }
          
          // On diffère l'ouverture
          var $this=$(this);
          $domMenu.timeoutID = window.setTimeout(function() {
             $domMenu.timeoutID = null;
             $this.children('ul').fadeIn('fast');
          }, menuDelay);
	  }
	  
      function menuExitEvt() {
          // Surbrillance menus
          $(this)
             .removeClass('hovered')
             .children('a').removeClass('hovered');
          
          // On ne gère que les menus en cascade
          if ($(this).hasClass('inline')) {
             return;
          }
          
          // Menu DOM
          var $domMenu = $(this).get(0);
          
          // Une demande d'ouverture du menu est en cours
          // On n'en tient plus compte
          if ($domMenu.timeoutID != null) {
             window.clearTimeout($domMenu.timeoutID);
             $domMenu.timeoutID = null;
             return;
          }

          // On diffère la fermeture
          var $this=$(this);
          $domMenu.timeoutID = window.setTimeout(function() {
             $domMenu.timeoutID = null;
             $this.children('ul').fadeOut('fast');
          }, menuDelay);
	  }
      
      $('ul.mnu_level_1 > li').hover(
      function() {
         // Surbrillance menus
         $(this)
            .addClass('hovered')
            .children('a').addClass('hovered');
         
         // Menu DOM
         var $domMenu = $(this).get(0);
         
         if ($domMenu.timeoutID == undefined) {
            // Ouverture initiale du menu
            $domMenu.timeoutID = null;
         }
         else if ($domMenu.timeoutID != null) {
            // Une demande de fermeture du menu est en cours
            // On annule les demandes
            window.clearTimeout($domMenu.timeoutID);
            $domMenu.timeoutID = null;
            return;
         }
         
         // Chargement dynamique du menu au besoin
         if ( $(this).hasClass('has_children') && $(this).children('ul').length == 0 ) {
         	$(this).append("<ul class=\"loader\"></ul>");
         	var $this=$(this);
          	var request=$this.attr('id').substr(9).split('/');
         	$.ajax({
         		url: sns_module + '/xmlquery/query/getmenu/(nodeid)/' + request[0] + '/(depth)/' + request[1] + '/(compid)/' + $this.closest('.component').attr('id'),
         		success: function(data, textStatus, XMLHttpRequest) {
         			var loader = $this.find('.loader');
         			var isVisible = loader.is(':visible');
         			loader.remove();
         			$this.append($('ezresult', data).text());
         			if (isVisible) {
         				$this.find('> ul').show();
         			}
         			$this.find('> a').addClass('parent');
         			$this.find('li')
         				.mouseenter(menuEnterEvt)
         				.mouseleave(menuExitEvt);
         		},
         		cache:false,
         		dataType: 'xml'
         	});
         }

         if ($(this).parent().find('li ul:visible').length == 0) {
            // On affiche immédiatement le menu
           	$(this).children('ul').fadeIn('fast');
         }
         else {
            // On diffère l'ouverture
            var $this=$(this);
            $domMenu.timeoutID = window.setTimeout(function() {
               $domMenu.timeoutID = null;
          	   $this.children('ul').fadeIn('fast');
            }, menuDelay);
         }
      },
      function() {
         // Surbrillance menus
        $(this)
            .removeClass('hovered')
            .children('a').removeClass('hovered');
            
         // Menu DOM
         var $domMenu = $(this).get(0);
         
         // Une demande d'ouverture du menu est en cours
         // On n'en tient plus compte
         if ($domMenu.timeoutID != null) {
            window.clearTimeout($domMenu.timeoutID);
            $domMenu.timeoutID = null;
            return;
         }
         
         // On diffère la fermeture
         var $this=$(this);
         $domMenu.timeoutID = window.setTimeout(function() {
            $domMenu.timeoutID = null;
            $this.children('ul').fadeOut('fast');
         }, menuDelay);
      });
      
      $('ul.mnu_level_1 ul li')
      	 .mouseenter(menuEnterEvt)
		 .mouseleave(menuExitEvt)
		 .each(function() {
			 if ($(this).find('> ul').length > 0) {
				 $(this).find('> a').addClass('parent');
			 }
		 });
      
      $('ul.mnu_level_1 a').live('click', function() {
		    $(this).parents('ul.mnu_level_1 li')
		       .each(function() {
                  // Menu DOM
                  var $domMenu = $(this).get(0);
                  if ($domMenu.timeoutID != null) {
                     window.clearTimeout($domMenu.timeoutID);
                     $domMenu.timeoutID = null;
                  }
                  $(this).children('ul').fadeOut('fast');
             });
       });
   });
}
