var _subMenuTimeout = null;
var _visibleMenu = null;


function LoadMenu()
{
    MM_preloadImages("images/fleche_ongauche.gif", "images/fleche_ondroit.gif");
    
	//Les spans qui ont un id dans la page sont des zones pour les menus
	var spans = document.getElementById("divMainMenu").getElementsByTagName("div");
	for( var nIdx=0; nIdx < spans.length; nIdx++ )
	{
		if( spans[nIdx].id != "" )
		{
			var bIsMenuItem = true;
			    		
            //Si l'item a un lien, on assigne l'evenement OnClick a l'item.
            var ahref = spans[nIdx].getElementsByTagName("A")
            if( ahref != null && ahref.length > 0 )
                spans[nIdx].onclick = OnMainMenuItemClick;
            else
                bIsMenuItem = false;
            
            //Si l'item a un sous-menu, on assigne ce menu en javascript a l'item.
            var submenu = document.getElementById(spans[nIdx].id + "Menu");
            if( submenu )
            {		            
                submenu.parentmenu = null;
                spans[nIdx].menu = submenu;
                bIsMenuItem = bIsMenuItem || true;
            }
            else
                bIsMenuItem = bIsMenuItem || false;
                
            //On assigne les événement mouseover, mouseout seulement si l'item
            //contient un lien ou a un sous-menu.
            if( bIsMenuItem == true || bIsMenuItem == 1 )
            {
			    spans[nIdx].onmouseover = OnMainMenuItemMouseOver;
			    spans[nIdx].onmouseout = OnMainMenuItemMouseOut;
            }
		}
	}

    //Assignation des vnements des items des menu principaux
    var menu = document.getElementById("divSubMenus").childNodes;
    for( nIdx=0; nIdx<menu.length; nIdx++ )
    {
        for( var nIdx2=0; nIdx2<menu[nIdx].childNodes.length; nIdx2++ )
        {
            var menuItem = menu[nIdx].childNodes[nIdx2];

            var submenu = document.getElementById(menuItem.id + "Menu");
            if( submenu != null )
            {
                submenu.parentmenu = menu[nIdx];
                menuItem.menu = submenu;
            }
            else
            {
                menuItem.menu = null;
            }

            menuItem.onmouseover = OnSubMenuItemMouseOver;
            menuItem.onmouseout = OnSubMenuItemMouseOut;
            menuItem.onclick = OnSubMenuItemClick;
        }
    }
}

function OnMainMenuItemClick(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 OnMainMenuItemMouseOver( evt )
{
	var img = GetEventObject( evt );
	while( img != null && img.tagName != "DIV" )
	    img = img.parentNode;
	
    img.className = "MainMenuItemSelected"

	//En plus d'afficher l'image active, il faut afficher les coin des images
	var prevSib = img.previousSibling;
	while( prevSib != null && prevSib.tagName != "DIV" )
	    prevSib = prevSib.previousSibling;

	if( prevSib != null && prevSib.firstChild != null )
		prevSib.firstChild.src = "images/fleche_ondroit.gif"

    var nextSib = img.nextSibling;
	while( nextSib != null && nextSib.tagName != "DIV" )
	    nextSib = nextSib.nextSibling;

	if( nextSib != null && nextSib.firstChild != null )
		nextSib.firstChild.src = "images/fleche_ongauche.gif"

	//Afficher le sous-menu correspondant s'il y a lieu
	HideSubMenu();
    if( img.menu )
	{
		img.menu.style.display = "block";
        img.menu.style.left = (getRealLeft( img ) - 8) + 'px';  
		img.menu.style.top = Number(getRealTop( img ) + img.offsetHeight ) + 'px';
        _visibleMenu = img.menu;
	}
}

function OnMainMenuItemMouseOut( evt )
{
	var img = GetEventObject( evt );
	while( img != null && img.tagName != "DIV" )
	    img = img.parentNode;
    img.className = "MainMenuItem"

	//En plus d'enlever l'image active, il faut afficher les coin des images
	var prevSib = img.previousSibling;
	while( prevSib != null && prevSib.tagName != "DIV" )
	    prevSib = prevSib.previousSibling;

	if( prevSib != null && prevSib.firstChild != null )
		prevSib.firstChild.src = "images/fleche_off.gif"

    var nextSib = img.nextSibling;
	while( nextSib != null && nextSib.tagName != "DIV" )
	    nextSib = nextSib.nextSibling;

	if( nextSib != null && nextSib.firstChild != null )
		nextSib.firstChild.src = "images/fleche_off.gif"

    _subMenuTimeout = setTimeout( "HideSubMenu()", 2000 );
}

function HideSubMenu()
{
    clearTimeout(_subMenuTimeout );
    while( _visibleMenu != null )
    {
        _visibleMenu.style.display = "none";
        _visibleMenu = _visibleMenu.parentmenu;
    }
}

function OnSubMenuItemMouseOver( evt )
{
	var div = GetEventObject( evt );
	if( div != null && div.tagName != "DIV" )
		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.menu != null )
        {
            div.menu.style.display = "block";
            
            var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
    	    if(ie7)
    	    {
    	        div.menu.style.left = Number(getRealLeft( div ) + div.offsetWidth - 15) + 'px'
            }
            else
            {
                div.menu.style.left = Number(getRealLeft( div ) + div.offsetWidth) + 'px'
            }

            div.menu.style.top = Number(getRealTop( div )) + 'px'  

            _visibleMenu = div.menu;
        }
	}
}

function OnSubMenuItemMouseOut( evt )
{
    clearTimeout(_subMenuTimeout );
	var div = GetEventObject( evt );
	if( div != null && div.tagName == "A" )
		div = div.parentNode;

	if( div != null )
	{
		div.className = "subMenuItem";
		_subMenuTimeout = setTimeout( "HideSubMenu()", 2000 );
	}
}

function 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;
    }
}
