﻿$(document).ready(function () {
  //Show menu on mouse over Level 1&2&3
  $("#global div.header_logo div.menubuttons>ul.buttons>li.niveau1").hover(function(){ showMenu(this)}, function(){ waitHideMenu(this)});
  $("#global div.header_logo div.menubuttons>ul.buttons>li.niveau1>ul>li.niveau2").hover(function(){ showMenu(this)}, function(){ waitHideMenu(this)});
//  $("#global div.header_logo div.menubuttons>ul.buttons>li.niveau1>ul>li.niveau2>ul>li.niveau3").hover(function(){ showMenu(this)}, function(){ waitHideMenu(this)});
  
  //Anti bug Menu buttons sur CoverFLow. Du au IEpngfix qui rend tout div absolu en relative dans l'objet transparent
  $('ul.niveau2').css('position','absolute');
  
});


//On gère 3 timeout : un par niveau. L'un n'annule pas l'autre.
var timeMenu = new Array(null,null,null);
//On gère 3 background également pour les mêmes raisons
var tabFonds = new Array();

function showMenu(caller){  
  //Je cleare le timeout de mon niveau en cours (ainsi je me réserve le timeout du niveau 1 pour le mouseout final)
  if($(caller).hasClass('niveau1')){  
    clearTimeout(timeMenu[0]); 
    timeMenu[0]=null;
  }
  else if($(caller).hasClass('niveau2')){
    clearTimeout(timeMenu[1]); 
    timeMenu[1]=null;
  }  
  else if($(caller).hasClass('niveau3')){
    clearTimeout(timeMenu[2]); 
    timeMenu[2]=null;
  }    
    
  //On cache les enfants s'il y en a 
  $(caller).siblings().each(function(){       
    hideAndDeleteFond((this));         
  });
  
    
  
  //On montre le sous-menu
  if($(caller).children('ul:hidden[class*="niveau"]').length>0){
    
    //debugger;
        
    //div à montrer : fils de l'appelant de type div caché
    var div=$(caller).children('ul:hidden[class*="niveau"]')[0];
    var fond=createFond(caller);
    
    //Récup des coordonnées de l'appelant
    var p=$(caller).position();  
    var h=$(caller).height();        
    
    //On positionne le div selon la classe : niveau2 en dessous, niveau 3&4 à droite     
    if($(div).hasClass('niveau2')){      
      $(div).css('left',p.left+0+'px');
      $(div).css('top',p.top+h-5+'px');
      if($(div).outerWidth() <234)
      {         
      	 if($(div).hasClass('sousmenubuttons_bt_form niveau2')){
      	   $(div).css('width', 197+'px'); 
      	 }
      	 else {
      	   $(div).css('width', 199+'px'); 
      	 } 
         
      }
      $(div).show();     
      var w=$(div).outerWidth(); 
      
      //Spécial DII : on positionne le cache pour éviter le coin du bouton
      $('.cachebouton').css('top',p.top+h-4+'px');  
      $('.cachebouton').css('left',p.left-0+'px');   
      $('.cachebouton').show();   
    }
    
    //On récupère sa position
    p=$(div).position(); 
    h=$(div).outerHeight();
    
    //On positionne le fond
    $(fond).height(h-1+'px');
    
    if(w<201){w=201};
    $(fond).width(w-1+'px');

    $(fond).css('top',p.top+0+'px');   
    $(fond).css('left',p.left-0+'px');     
    $(fond).show(); 
    
    
    
  }  
}

function waitHideMenu(caller){  
  
  //J'initialise le timeout qui correspond à mon niveau
  if($(caller).hasClass('niveau1')){  
    if(!timeMenu[0]){
      timeMenu[0]=setTimeout(function(){hideMenu(caller)},500);
    }
  }
  else if($(caller).hasClass('niveau2')){ 
    if(!timeMenu[1]){
      timeMenu[1]=setTimeout(function(){hideMenu(caller)},500);
    }
  }
  else if($(caller).hasClass('niveau3')){ 
    if(!timeMenu[2]){
      timeMenu[2]=setTimeout(function(){hideMenu(caller)},500);
    }
  }
}

function hideMenu(caller){ 
  
  //On cache les enfants s'il y en a  
  if($(caller).children('ul:visible').length>0){    
    hideAndDeleteFond(caller);     
  }   
}


function createFond(caller){
  
  var d;  
  
  if($(caller).children('.fond_menu').length>0){
    d=$(caller).children('.fond_menu'); 
    return d;   
  }
  
  //Création du fond
  d=document.createElement('div');
  $(d).addClass('fond_menu');
  
  /*Création du div de couleur
  var sd= document.createElement('div');
  $(sd).addClass('fond_menu_color');
  $(sd).text(' ');
  $(d).append($(sd));
  
  Img bottom
  var si= document.createElement('div');
  $(si).addClass('fond_menu_img');
  $(si).text(' ');
  $(d).append($(si));*/
  
  
  tabFonds.push(d);
  $(caller).append($(d));
  
  return d;
}

function hideAndDeleteFond(obj){
  
  //On trouve tous les descendants ul visibles pour les cacher
  $(obj).find('ul:visible').each(function(){
    $(this).hide();  
    
    //On pop le background correspondant
    $(tabFonds[tabFonds.length-1]).hide();    
    $(tabFonds[tabFonds.length-1]).remove(); 
    tabFonds.pop();
  });  
  
  try{
    if(tabFonds.length==0){$('.cachebouton').hide();   }
  }
  catch(e){}
}
