var _subMenuTimeout;
var _visibleMenu;
var nTimeout = 250;

var menu_oldOnload = window.onload;
window.onload = function ()
{
    if(menu_oldOnload)
        menu_oldOnload();

    menu_Load();
    
    window.onload = null;
}

function menu_Load()
{
    var topMenu = $("header");
    var subMenusRoot = document.createElement("div");
    subMenusRoot.id = "sousmenu";
    var menus = new Array();
    
    $$("#menu ul ul").each(function(subMenu){
        
        menus.push(subMenu.parentNode);
        subMenu.parentNode.rmenu = subMenu;
        subMenu.parentmenu = null;
        
        $A(subMenu.childNodes).each(function(menuItem){
        
            if(menuItem.tagName == "LI") {
            
                menuItem.rmenu = null;
                menuItem.parentmenu = subMenu;
            
                Event.observe(menuItem, 'mouseover', menu_OnSubMenuItemMouseOver, false);
                Event.observe(menuItem, 'mouseout', menu_OnSubMenuItemMouseOut, false);
                //Event.observe(menuItem, 'click', menu_OnSubMenuItemClick, false);
            
            }
        
        });
        
        subMenu.parentNode.removeChild(subMenu);
        subMenusRoot.appendChild(subMenu);
        
    });
    
    topMenu.parentNode.insertBefore(subMenusRoot, topMenu);
       
    
    menus.each(function(menu){
    
        Event.observe(menu, 'mouseover', menu_OnMainMenuItemMouseOver, false);
        Event.observe(menu, 'mouseout', menu_OnMainMenuItemMouseOut, false);
    
    });
}

function menu_OnMainMenuItemMouseOver( evt )
{
	var div = Event.element(evt);
    while( div != null && div.tagName != "LI" )
        div = div.parentNode;

    //alert(div.rmenu);
    if( div != null )
    {
        //div.className = "selected"
    
    	//Afficher le sous-menu correspondant s'il y a lieu
    	menu_HideSubMenu();
        if( div.rmenu )
    	{
            div.rmenu.style.left = Number(getRealLeft( div )) + 'px';
            div.rmenu.style.top = Number(getRealTop( div ) + div.offsetHeight) + 'px';    		
        	div.rmenu.style.display = "block";
            _visibleMenu = div.rmenu;
    	}
    }
}

function menu_OnMainMenuItemMouseOut( evt )
{
	var div = Event.element( evt );
    while( div != null && div.tagName != "LI" )
        div = div.parentNode;
	
    /*if( div != null )
        div.className = ""*/
    
    _subMenuTimeout = setTimeout( "menu_HideSubMenu()", nTimeout );
}

function menu_HideSubMenu()
{
    clearTimeout(_subMenuTimeout );
    while( _visibleMenu != null )
    {
        _visibleMenu.style.display = "none";
        _visibleMenu = _visibleMenu.parentmenu;
    }
}

function menu_OnSubMenuItemMouseOver( evt )
{
	var div = Event.element( evt );
	while( div != null && div.tagName != "LI" )
		div = div.parentNode;

	if( div != null )
	{
        //si le menu de l'item est différent du menu affiché
        //on cache le menu affiché.
        if( _visibleMenu != null && div.parentNode != _visibleMenu )
        {
            _visibleMenu.style.display = "none";
            _visibleMenu = div.parentNode;
        }
        
        clearTimeout(_subMenuTimeout );
        //div.className = "subMenuSelectedItem";

        //Si l'item a un sous menu, on l'affiche
        if( div.rmenu != null )
        {   
            div.rmenu.style.left = Number(getRealLeft( div ) + div.offsetWidth) + 'px'
            
            if(navigator.platform == "MacPPC")
                div.rmenu.style.top = Number(getRealTop( div ) - 2) + 'px'  
            else
                div.rmenu.style.top = Number(getRealTop( div )) + 'px' 
            
            div.rmenu.style.display = "block";
            _visibleMenu = div.rmenu;
        }
	}
}

function menu_OnSubMenuItemMouseOut( evt )
{
    clearTimeout(_subMenuTimeout );
	var div = Event.element( evt );
	if( div != null && div.tagName == "A" )
		div = div.parentNode;

	if( div != null )
	{
		//div.className = "subMenuItem";
		_subMenuTimeout = setTimeout( "menu_HideSubMenu()", nTimeout );
	}
}

/*function menu_OnSubMenuItemClick ( evt )
{
    var objClicked = GetEventObject( evt );
	while( objClicked != null && objClicked.tagName != "DIV" && objClicked.tagName != "A" )
		objClicked = objClicked.parentNode;
            
    if( objClicked != null && objClicked.tagName != "A" )
    {
        var lnk = objClicked.getElementsByTagName("A");
        if( lnk != null && lnk.length > 0 );
            window.location.href = lnk[0].href;
    }
}*/


function getRealLeft(imgElem)
{
	xPos = eval(imgElem).offsetLeft;
	tempEl = eval(imgElem).offsetParent;
  	while (tempEl != null)
	{
  		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
  	}
  	
    if(navigator.platform == "MacPPC" && navigator.userAgent.indexOf("MSIE") != -1)
    {           
        //Dans IE pour Mac, il faut additionner la marge du body.
        xPos += parseInt(document.body.currentStyle.marginLeft);       
    }
      	
	return xPos;
}

function getRealTop(imgElem)
 {
	yPos = eval(imgElem).offsetTop;
	tempEl = eval(imgElem).offsetParent;
	while ( tempEl != null )
	{
        //Note: On a pas besoin de passer par ici pour calculer la position avec
        //      opera car offsetTop contient déjà la bonne position.  On a pas besoin
        //      de l'additionnner aux positions de ses éléments parent.
  		yPos += tempEl.offsetTop;
  		
  		if(navigator.userAgent.indexOf("Opera") != -1 && yPos != 0)
  		    tempEl = null;
  		else
  		    tempEl = tempEl.offsetParent;	
  	}
  	
    if( (navigator.platform == "MacPPC" && navigator.userAgent.indexOf("MSIE") != -1) )
    {           
        //Dans IE pour Mac, il faut additionner la marge du body.
        yPos += parseInt(document.body.currentStyle.marginTop);       
    }
              	
	return yPos;
}