/*
** But			: faire slider les sous menus au passage du curseur sur les menus
** Comment		: appeler la fonction "navigation(id du menu);" au chargement de la page
** Paramètre	: "id_menu" -> l'identifiant ou la classe du conteneur du menu
** Instructions	: respecter le format ([] => facultatif)
**				<ul>
**					[<img />]
**					<li [class="actif"]>
**						[<a href="">]Menu 1[</a>]
**						<div class="subnav">
**							<ul>
**								<li>[<a href="">]Sous menu 1[</a>]</li>
**								<li>[<a href="">]Sous menu 2[</a>]</li>
**							</ul>
**						</div>
**					</li>
**					<li>
**						[<a href="">]Menu 1[</a>]
**						<div class="subnav">
**							<ul>
**								<li>[<a href="" [class="actif"]>]Sous menu 1[</a>]</li>
**								<li>[<a href="">]Sous menu 2[</a>]</li>
**							</ul>
**						</div>
**					</li>
**					[<img />]
**				</ul>
**
** Remarque		: ligne 57 et 58, ajout automatique des span "gauche" et "droite" pour les styles (désactiver si besoin)
*/

function navigation(id_menu) {
	
	// Pour commencer, détection d'IE 7 qui ne réagit pas comme tout le monde
	var is_ie7 = navigator.userAgent.toLowerCase().indexOf('msie 7.0') > -1;
	
	// Ajout des classes de niveaux
	$(id_menu + ' ul').addClass('nv0');
	$(id_menu + ' ul ul').removeClass('nv0').addClass('nv1');
	
	// Ajout des classes "first" et "last"
	$('.nv0').children('li').first().addClass('nav_first');
	$('.nv0').children('li').last().addClass('nav_last');
	
	// Ajout de la flèche apparaissant au hover
	$('.nv0').children('li').children('a').after('<img src="/images/picto_fleche.png" alt="" class="picto_fleche" />');
	
	// Ajout de span à gauche et à droite des sous menus (styles)
	$('.subnav').prepend('<span class="gauche"></span>');
	$('.subnav').append('<span class="droite"></span>');
	
	// Feinte pour éviter le saut du sous-menu au chargement de la page et récupérer les dimensions
	$('.subnav').css({
		'display': 'none',
		'margin-top': '-1000px'
	});
	$('.subnav').css('display', 'block');
	
	/*$('.subnav').each(function() {
		$(this).css('width', $(this).width());
	});*/
	cpt = 0;
	/* Positionnements */
	$('.nv0').children('li').each(function() {
		cpt++;
		// Init
		subnav = $(this).children('.subnav');
		
		// Variables
		var nv0_li_offsetLeft	= $(this).offset().left;
		var nv0_li_paddingLeft	= $(this).css('padding-left').split('px');
		var nv0_li_width		= $(this).width();
		var nv0_li_innerWidth	= $(this).innerWidth();
		var subnav_width		= subnav.width();
		var subnav_mgL			= 0;
		
		// Positionnement de la flèche
		var lien_width		= $(this).children('a').width();
		var fleche_width	= $(this).children('.picto_fleche').width();
		
		if (is_ie7) {
			$(this).children('.picto_fleche').css({
				'margin-left': (lien_width - fleche_width)/-2 - 13+'px',
				'margin-top':  '21px'
			});
		} else {
			$(this).children('.picto_fleche').css('margin-left', (lien_width - fleche_width)/2+'px');
		}
		
		/* Exceptions IE 7 */
		var ie7_decalage = 0;
		if (is_ie7) {
			ie7_decalage	= nv0_li_width;
		}
		
		// Positionnement des sous menus
		// --- Si le sous menu est plus large que son menu (inner)
		if (nv0_li_innerWidth < subnav_width) {
			subnav_mgL = (subnav_width - nv0_li_innerWidth) / -2 + (nv0_li_innerWidth - nv0_li_width) / -2;
		}
		// --- Si le sous menu est moins large que son menu (inner)
		else if (nv0_li_innerWidth > subnav_width) {
			if (nv0_li_width > subnav_width) {			// S'il est moins large que le texte du menu
				subnav_mgL = (nv0_li_width - subnav_width) / 2;
			} else if (nv0_li_width < subnav_width) {	// S'il est plus large que le texte du menu
				subnav_mgL = (subnav_width - nv0_li_width) / -2;
			}
		}
		// --- Si le sous menu et son menu sont d'égales largeurs
		else {
			subnav_mgL = (nv0_li_innerWidth - nv0_li_width) / -2;
		}
		
		if (is_ie7)
			subnav_mgL -= ie7_decalage;
		$(this).children('.subnav').css('margin-left', subnav_mgL+'px');
		
		// --- Calcul des positions des sous menus
		var nv0F_offsetL	= $('.nav_first').offset().left;
		var nv0L_offsetL	= $('.nav_last').offset().left;
		var nv0L_width	= $('.nav_last').innerWidth();
		var subnav_offsetL	= $(this).children('.subnav').offset().left;
		
		// ------- Si le sous menu dépasse du menu par la gauche
		if (subnav_offsetL < nv0F_offsetL) {
			subnav_mgL += (nv0F_offsetL - subnav_offsetL);
		}
		// ------- Si le sous menu dépasse du menu par la droite
		else if ((subnav_offsetL + subnav_width) > (nv0L_offsetL + nv0L_width)) {
			$(this).children('.subnav').css('left', '0px');	// On calle le sous menu à gauche pour récupérer la bonne largeur
			subnav_width	= $(this).children('.subnav').width();
			$(this).children('.subnav').css('left', '');	// On supprime le "left"
			
			subnav_mgL -= (subnav_offsetL + subnav_width) - (nv0L_offsetL + nv0L_width);
		}
		
		$(this).children('.subnav').css('margin-left', subnav_mgL+'px');
		
		// Affichage du menu actif
		if (is_ie7)
			marginTop = '16px';
		else
			marginTop = 0;
			
		if ($(this).hasClass('actif')) {
			$(this).children('.picto_fleche').css('display', 'block');
			$(this).children('.subnav').css({
				'display':    'block',
				'margin-top': marginTop
			});
		} else {
			$(this).children('.subnav').css({
				'display':    'none',
				'margin-top': marginTop
			});
		}
	});
	
	// Hover sur menus
	$('.nv0').children('li').hover(
		function () {
			
			if (typeof timerActif != 'undefined')
				clearTimeout(timerActif);
			
			li_cont = $(this);
			
			timer = setTimeout("affichageSubnav(li_cont)", 250);
		},
		function() {
			
			clearTimeout(timer);
			
			// On ne peut pas survoler le menu actif
			if (li_cont.hasClass('actif') == false) {
				
				// Masquage du sous menu
				li_cont.children('.picto_fleche').hide();
				li_cont.children('.subnav').slideUp();
				
				// Réaffichage du sous menu "actif" si présent
				if ($('.nv0').children('li').is('.actif')) {
					timerActif = setTimeout("affichageMenuActif()", 500);
				}
			}
		}
	);
}

function affichageSubnav(li_cont) {
	
	// On ne peut pas survoler le menu actif
	if (li_cont.hasClass('actif') == false) {
		
		// Si existence d'une classe "actif" => on la masque
		if ($('.nv0').children('li').is('.actif')) {
			$('li.actif .subnav').slideUp();
			$('li.actif .picto_fleche').hide();
		}
		
		// Affichage du sous menu
		li_cont.children('.picto_fleche').css('display', 'block');
		li_cont.children('.subnav').slideDown();
	}
	
	// Mais si on le fait quand même...
	else {
		
		// On l'affiche s'il est masqué
		if (li_cont.children('.subnav').css('display') == 'none') {
			li_cont.children('.picto_fleche').css('display', 'block');
			li_cont.children('.subnav').slideDown();
		}
	}
}

function affichageMenuActif() {
	$('li.actif .subnav').slideDown();
	$('li.actif .picto_fleche').css('display', 'block');
}
