﻿Menu = {
	hauteurs: new Array, // hauteur des différents sous menus
	fxs_afficher: new Array, // l'effet sur chacun des sous menus
	fxs_cacher: new Array, // l'effet sur chacun des sous menus
	fxs_transparent: new Array,
	fxs_opaque: new Array,

	afficherSousMenu: function(i) {
		Menu.fxs_cacher[i].cancel();
		Menu.fxs_afficher[i].start(Menu.hauteurs[i]);
	},
	cacherSousMenu: function(i) {
		Menu.fxs_afficher[i].cancel();
		Menu.fxs_cacher[i].start(0);
	},
	rendreSousMenuTransparent: function(i,j) {
		Menu.fxs_opaque[i][j].cancel(0);
		Menu.fxs_transparent[i][j].start({
			'opacity': 0.9,
			'background-color': '#D4DED6'
		});
	},
	rendreSousMenuOpaque: function(i,j) {
		Menu.fxs_transparent[i][j].cancel(0);
		Menu.fxs_opaque[i][j].start({
			'opacity': 1,
			'background-color': '#B6C3B9'
		});
	},
	initMenu: function() {
		$$("#menus>ul>li").each( function(element, i) {
			// si on a un menu déroulant
			if ( element.getElements("ul").length > 0 ) {
				var sous_menu = element.getElements("ul")[0];
				
				Menu.hauteurs[i] = sous_menu.getSize().y;
				Menu.fxs_afficher[i] = new Fx.Tween(sous_menu, {property: 'height', transition: Fx.Transitions.Quad.easeOut, duration: 250});
				Menu.fxs_cacher[i] = new Fx.Tween(sous_menu, {property: 'height', transition: Fx.Transitions.Quad.easeIn, duration: 150});
				Menu.fxs_afficher[i].set(0);
	
				element.addEvent( 'mouseenter', Menu.afficherSousMenu.pass(i));
				element.addEvent( 'mouseleave', Menu.cacherSousMenu.pass(i));
	
				Menu.fxs_transparent[i] = new Array;
				Menu.fxs_opaque[i] = new Array;
				sous_menu.getElements('li').each( function ( lien, j) {
					Menu.fxs_transparent[i][j] = new Fx.Morph( lien, { transition: Fx.Transitions.Quad.easeOut, duration: 300 } );
					Menu.fxs_opaque[i][j] = new Fx.Morph( lien, { transition: Fx.Transitions.Quad.easeOut, duration: 300 } );
					lien.addEvent( 'mouseenter', Menu.rendreSousMenuOpaque.pass([i,j]) );
					lien.addEvent( 'mouseleave', Menu.rendreSousMenuTransparent.pass([i,j]) );
					lien.setOpacity(0.9);
				});
			}
		});
	},
	initLog: function() {
		$$("#login").each( function(element, i) {
			// si on a un menu déroulant
			if ( element.getElements("ul").length > 0 ) {
				var sous_menu = element.getElements("ul")[0];
				var i = element.getElementById('log');
	
				Menu.hauteurs[i] = sous_menu.getSize().y;
				Menu.fxs_afficher[i] = new Fx.Tween(sous_menu, {property: 'height', transition: Fx.Transitions.Quad.easeOut, duration: 250});
				Menu.fxs_cacher[i] = new Fx.Tween(sous_menu, {property: 'height', transition: Fx.Transitions.Quad.easeIn, duration: 150});
				Menu.fxs_afficher[i].set(0);
	
				element.addEvent( 'mouseenter', Menu.afficherSousMenu.pass(i));
				element.addEvent( 'mouseleave', Menu.cacherSousMenu.pass(i));
	
				Menu.fxs_transparent[i] = new Array;
				Menu.fxs_opaque[i] = new Array;
				sous_menu.getElements('li').each( function ( lien, j) {
					Menu.fxs_transparent[i][j] = new Fx.Morph( lien, { transition: Fx.Transitions.Quad.easeOut, duration: 300 } );
					Menu.fxs_opaque[i][j] = new Fx.Morph( lien, { transition: Fx.Transitions.Quad.easeOut, duration: 300 } );
					lien.addEvent( 'mouseenter', Menu.rendreSousMenuOpaque.pass([i,j]) );
					lien.addEvent( 'mouseleave', Menu.rendreSousMenuTransparent.pass([i,j]) );
					lien.setOpacity(0.9);
				});
			}
		});		
	}
};

// corrige le bug IE qui ne prend pas en compte le domready et donc affiche tout le menu au début.
if(navigator.appName == "Microsoft Internet Explorer") { 
	window.addEvent( 'load', function() {
		Menu.initLog();
		Menu.initMenu();
	});
} else {
	window.addEvent( 'domready', function() {
		Menu.initLog();
		Menu.initMenu();
	});
}
