Event.observe(window, 'load', function(){
	
	var items = $$('ul#menuNiveau4 li'); // sélectionne tous les items du menu à checker
	
	var subMenusWrapperConstructor = document.createElement('div');
	subMenusWrapperConstructor.setAttribute('id', 'subMenusWrapper');
	var subMenusWrapper = $( document.body.appendChild(subMenusWrapperConstructor) ); // construction et injection d'un conteneur pour les sous-menus dans le document
	
	items.each(function(item){ // pour chaque item du menu :
		
		var subMenu = item.down('ul.submenu'); // sélection du sous-menu
		
		if (subMenu) { // si le sous-menu existe :
			
			assignPosition(item, subMenu); // attribution de la position du sous-menu dans la page
			subMenusWrapper.appendChild(subMenu); // déplacement du sous-menu dans le conteneur des sous-menus --- pour des raisons de z-index sous IE6
			
			Event.observe(window, 'resize', function(){assignPosition(item, subMenu);}); // observation de l'évènement resize de la page afin de recalculer la position du sous-menu
			
			Event.observe(item, 'mouseover', function(){ // observation de l'évènement mouseover sur le menu
				
				subMenu.show(); // montre le sous-menu
				Event.observe(document, 'mouseover', hideSubMenu); // observation du mouseover sur la page
				
				function hideSubMenu(event) { // fonction cachant le sous-menu sous conditions
				
					var element = $( Event.element(event) ); // récupère l'élément concerné par l'évènement mouseover
					var isIn = (element.descendantOf(item) || element.descendantOf(subMenusWrapper) ); // test du positionnement de l'élément touché par l'évènement : s'il est dans l'item courant du menu ou dans le conteneur des sous-menus le test renvoie la valeur true 
					
					if (isIn) return; // si le test renvoie true, la fonction s'arrête là, sinon :
					subMenu.hide(); // cache le sous-menu
					Event.stopObserving(document, 'mouseover', hideSubMenu); // arrêt de l'observation de l'évènement mouseover sur la page
					
				}
				
			}); // Event.observe mouseover
			
		} // if (subMenu)
		
	}); // Each

}); // Event.observe load



function assignPosition(item, subMenu){

	var subMenuCoords = Position.cumulativeOffset(item);
	var itemHeight = item.getHeight();

	subMenu.setStyle({'position' : 'absolute', 'top' : subMenuCoords[1] + itemHeight - 1 + 'px', 'left' : subMenuCoords[0] + 'px'});

};
