/**
 * Gestion du menu déroulant
 *
 * @author      Eric Giovannetti <eric@bleuroy.com>
 * @copyright   BleuRoy.com
 * @version     1.0.4
 */
 
/**
 * Gère l'affichage dynamique du menu
 * @param {string}    _typeDeMenu          Valeurs : horizontal, vertical
 * @var {object}      menu                 Récupère l'élément possèdant l'id "menu"
 * @var {array}       niveau               Récupère les listes <ul>
 * @var {string}      classElement         Récupère la classe des listes <ul> ayant une classe possèdant la chaine de caractère  'menuNiveau'
 * @var {array}       liNiveau             Récupère les éléments de liste <li> ayant comme parent
 * @var {object}      ancre                Contient un élément lien <a>
 * @var {number}      menuTimer            Contient le timer de gestion d'affichage du menu
 */
 
 
 
function MENU_Gestion(_typeDeMenu) {
    // Vérifie si le navigateur est compatible avec le DOM et s'il possède un élément ayant l'id 'menu'
    if(!document.getElementById || !document.createTextNode) {return;}
    if(!document.getElementById('menu')) {return;}
 
    var menu = document.getElementById('menu');
    var niveau = menu.getElementsByTagName('UL');
    var classElement;
    var liNiveau;
    var ancre;
    var menuTimer = null;
 
    if (document.getElementById('conteneur') && _typeDeMenu == 'horizontal') {
        document.getElementById('conteneur').id = 'conteneurJS'
    }
 
    // Boucle et exécute les listes <ul> possédant une classe du type  'menuNiveauX'  où X est le nombre correspondant au niveau de la profondeur du menu
    for (var i=0; i<niveau.length; i++) {
        if (niveau[i].className.indexOf('menuNiveau') >= 0) {
            // Transforme les   <ul class="menuNiveauX">   en   <ul class="menuNiveau menuNiveauXJS"> où X est un chiffre
            classElement = niveau[i].className;
            niveau[i].className = niveau[i].className + ' ' + niveau[i].className+'JS';
            if ((i+1) == niveau.length) {
                niveau[i].id = 'lastNiveau2JS';
            }
 
            liNiveau = niveau[i].getElementsByTagName('LI');
 
            // Boucle et exécute les éléments de liste <li> ne possédant pas de noeud enfant lien <a> mais ayant un noeud frère liste <ul>
            for (var j=0; j<liNiveau.length; j++){
                if (liNiveau[j].parentNode.className == niveau[i].className && liNiveau[j].firstChild.tagName != 'A' && liNiveau[j].firstChild.nextSibling) {
                    // Encapsule d'un lien <a href="#" id="ancreMenuX"> les données des éléments de liste ayant un sous-niveau
                    var url = window.location.href
                    ancre  = document.createElement('A');
                    ancre.href = url+'#';
                    ancre.id= 'ancreMenu'+j;
                    ancre.appendChild(document.createTextNode(liNiveau[j].firstChild.data));
                    liNiveau[j].replaceChild(ancre, liNiveau[j].firstChild);
 
                    // Gestion d'évènements
                    // Menu horizontal de type  'Survol'
                    if(_typeDeMenu == 'horizontal') {
                        ancre.onmouseover = ancre.onfocus = function(event) {
                            clearInterval(menuTimer);
                            menuTimer = null;
                            MENU_affichage('horizontal', this, event);
                        };
 
                        sousNiveau = ancre.nextSibling.getElementsByTagName('A');
 
                        ancre.nextSibling.onmouseover = sousNiveau[0].onfocus = function() {
                            clearInterval(menuTimer);
                            menuTimer = null;
                        };
                        if(ancre.nextSibling.lastChild.firstChild != null && ancre.nextSibling.lastChild.firstChild.tagName == 'A') {
                            lastItem = ancre.nextSibling.lastChild.firstChild;
                        } else {
                            lastItem = ancre.nextSibling.lastChild.previousSibling.firstChild;
                        }
                        ancre.onmouseout = ancre.onblur = ancre.nextSibling.onmouseout = lastItem.onblur = function() {
                            if(menuTimer == null) {
                                menuTimer = setInterval('MENU_affichage(\'horizontal\', null)',800);
                            }
                        };
                    }
                    // Menu vertical de type  'Clic'
                    else if(_typeDeMenu == 'vertical') {
                        ancre.onclick = function(event) {
                            MENU_affichage('vertical', this, event);
                        };
                    }
 
                }
            }
        }
    }
}
 
 
/**
 * Gère l'affichage et masquage du menu
 * @param {string}    _typeDeMenu         Valeurs : horizontal, vertical
 * @param {object}    [_ancre]            Ancre qui subit l'action
 * @var {object}      menu                Récupère l'élément possèdant l'id "menu"
 * @var {array}       sousNiveau          Récupère les sous-listes <ul>
 * @var {boolean}     actif               Vérifie si le menu est actif
 */
function MENU_affichage(_typeDeMenu, _ancre) {
 
    var actif = false;
    var menu = document.getElementById('menu');
    var sousNiveau;
 
    if(_typeDeMenu == 'horizontal')
        var sousNiveau = menu.getElementsByTagName('UL');
    else if(_typeDeMenu == 'vertical')
        var sousNiveau = _ancre.parentNode.parentNode.getElementsByTagName('UL');
 
    if(_typeDeMenu == 'vertical' && _ancre.nextSibling.className.indexOf('JSactif') >= 0)
        actif = true;
 
    // Désactive tous les sous-menus et éléments parents actifs
    for (var i=0; i<sousNiveau.length; i++) {
        if (sousNiveau[i].className.indexOf('JSactif') >= 0) {
            sousNiveau[i].className = sousNiveau[i].className.replace('JSactif',"JS");
            sousNiveau[i].parentNode.className = '';
        }
    }
 
    if(_typeDeMenu == 'horizontal' && _ancre) {
        _ancre.nextSibling.className = _ancre.nextSibling.className.replace('JS',"JSactif");
        _ancre.parentNode.className = 'parentActif';
    }
 
    if(_typeDeMenu == 'vertical' && actif == false) {
        _ancre.nextSibling.className = _ancre.nextSibling.className.replace('JS',"JSactif");
        _ancre.parentNode.className = 'parentActif';
    }
 }

/**
 * Gère l'affichage et masquage du menu
 * 
 * Appel au menu jquery
 * 
 */
function MENU_jquery() {
	
	jQuery.noConflict();
	jQuery(document).ready(function ($) {
		
		
	    if( $('#menu1').attr("class") == 'sousNavLeft menu1-open' )
	    	$('#menu1').show();
	    
	    if( $('#menu2').attr("class") == 'sousNavLeft menu2-open' )
	    	$('#menu2').show();
		
	    // Gestion de la navigation des villes
	    
	    $('#navVilles > li > a').click( function() {
	        var classLien = $(this).parent().attr('class');
	        
	        if($('#navVilles li > .actif > .elements').css("display") == "block")
	        {
	        	  $('#navVilles li > .actif').removeClass('actif').addClass('off').animate({'marginTop': '255px', 'height': '0px'}, 'fast', function() {
	              $('#navVilles li > .off > .elements').hide();
	        });   
	        	 
	        }
	        else
	        {
	        	       
	        $('#navVilles li > .actif').removeClass('actif').addClass('off').animate({'marginTop': '255px', 'height': '0px'}, 'fast', function() {
	             $('#navVilles li > .off > .elements').hide();
	        });   
	        
	        $(this).next().removeClass('off').addClass('actif').animate({'marginTop': '0px', 'height': '246px'}, '', function() {
	            $('#navVilles .' + classLien + ' .elements').show();
	            $('#navVilles .elements').removeAttr('filter');            
	        });
	        }
	        
	    return false;
	    });

	    
	    // Gestion de la navigatin de gauche
	   	
		$("#navLeft > ul > li:has(div.sousNavLeft) > a").bind("click", function(){
			$('#navLeft li.actif').removeClass('actif');
			$(this).parent().addClass('actif');
			$('#navLeft .sousNavLeft:visible').slideUp('fast');
			$('#navLeft .actif .sousNavLeft:hidden').slideDown('fast');
			return false;
		});
	    
	     // Gestion du carouselPart
		$('.newCarousel').each(function(){
	        var animationActive = false;
	        var idCarousel = '#'+$(this).attr('id')+' ';
	        
	        var elementWidth = $(idCarousel + '.carousel li').width();
	        var numberElements = $(idCarousel + '.carousel li').length;
	        $(idCarousel + '.carousel').css('width', (numberElements*2)*elementWidth).wrap(document.createElement('div')).parent().addClass('jcarousel-clip');
	        
	        // Gestion de defilement avant
	        $(idCarousel).bind('click', function(){
	            if(animationActive != true) {
	                animationActive = true;
	                
	                $(idCarousel + '.carousel li:first').clone().insertAfter(idCarousel + '.carousel li:first');
	                $(idCarousel + '.carousel li:first').insertAfter(idCarousel + '.carousel li:last');
	                
	                var marginEnd = ($(idCarousel + '.carousel').css('marginLeft'));
	                var marginBegin = marginEnd.replace(/px/, '');
	                marginBegin = marginBegin-elementWidth;
	                marginBegin = marginBegin+'px';
	                
	                $(idCarousel + '.carousel').stop().animate({'marginLeft': marginBegin}, 'slow', function() {
	                    $(idCarousel + '.carousel').css('marginLeft', marginEnd);
	                    $(idCarousel + '.carousel li:first').remove();
	                    animationActive = false
	                });
	            }
	            return false;
	        });
	        
	        // Autoslide
	        if ($(this).is('.autoSlide')){
	            var interval = setInterval(function() { 
	                $(idCarousel).click(); 
	            }, 3500);
	            $(idCarousel + '.remove').bind('mouseover', function(){ clearInterval(interval); });
	        }

	    });

	});
	
}

function survol() {
	
	jQuery.noConflict();
	jQuery(document).ready(function ($) {	
		
		var couleur_salon = $("h2").css("color");
		
		$('.survol').each(function(){
			$(this).find("img").hide();
		});
		
		$(".survol").mouseover( function() {
			$(this).find("img").show();
		});
		
		$(".survol").mouseout( function() {
			$(this).find("img").hide();
		});
		
		$(".lettre").click( function() {
			var couleur_salon = $("h2").css("color");
			$(this).css("color", couleur_salon);
		});	
		
		
		$(".lettre").css("text-decoration", "none");
		$(".lettre").css("color", couleur_salon);
				
		$(".liste_exposants").find("a").css("text-decoration", "none");
		$(".liste_exposants").find("a").css("color", couleur_salon);
		
	});
	
}
