var _subMenuTimeout;
var _visibleMenu;
var nTimeout = 250;

function AddOnLoad(func)
{
    var oldfunc = window.onload;
    window.onload = function() {
        func();
        if (typeof oldfunc == "function") {
            oldfunc();
        }
    };
}

function GetEventObject( evt )
{
	if( !evt && window.event )
	{
		evt = window.event;
	}

    if (evt)
	{
		if( evt.srcElement )
			return evt.srcElement;
		else
			return evt.target;
	}
	else
		return null;
}

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;
}




function LoadMenu()
{
	
    /*Les spans qui ont un id dans la page sont des zones pour les menus*/
	var spans = document.getElementById("ulMainMenu").getElementsByTagName("li");
	for( var nIdx=0; nIdx < spans.length; nIdx++ )
	{
		if( spans[nIdx].id != "" )
		{
			spans[nIdx].onmouseover = OnMainMenuItemMouseOver;
			spans[nIdx].onmouseout = OnMainMenuItemMouseOut;

            var submenu = document.getElementById(spans[nIdx].id + "Menu");
            if( submenu )
            {
                submenu.parentmenu = null;
                spans[nIdx].submenu = submenu;
            }
		}
	}

    /*Assignation des evnements des items des menu principaux*/
    var menu = document.getElementById("smenu-mprincipal").childNodes;
    for( nIdx=0; nIdx<menu.length; nIdx++ )
    {
        if( menu[nIdx].tagName == "DIV" )
        {
            for( var nIdx2=0; nIdx2<menu[nIdx].childNodes.length; nIdx2++ )
            {
                var menuItem = menu[nIdx].childNodes[nIdx2];
    
                menuItem.submenu = null;
    
                if (menuItem.id) {
                    var submenu = document.getElementById(menuItem.id + "Menu");
                    if( submenu != null )
                    {
                        submenu.parentmenu = null;
                        menuItem.submenu = submenu;
                    }
                }
    
                menuItem.onmouseover = OnSubMenuItemMouseOver;
                menuItem.onmouseout = OnSubMenuItemMouseOut;
                menuItem.onclick = OnSubMenuItemClick;
            }
        }
    }
}
function OnMainMenuItemMouseOver( evt )
{
	var div = GetEventObject( evt );
    while( div != null && div.tagName != "LI" )
        div = div.parentNode;

    if( div != null )
    {
        //div.className = "selected"
    
    	//Afficher le sous-menu correspondant s'il y a lieu
    	HideSubMenu();
        
        if( div.submenu )
    	{	
            div.submenu.style.left = Number(getRealLeft( div )) + 'px';
            
            var nTop = Number(getRealTop( div ) + div.offsetHeight)

            // Si le browser est safari sou mac, on enlève la hauteur de l'item parent et ses bordures
			if( navigator.userAgent.indexOf("Safari") != -1 || navigator.userAgent.indexOf("safari") != -1 )
			{
				nTop += 0;
			}
        	div.submenu.style.top = nTop + 'px';   
            
            
             		        	
        	div.submenu.style.display = "block";            
            _visibleMenu = div.submenu;
    	}
    }
}

function OnMainMenuItemMouseOut( evt )
{
	var div = GetEventObject( evt );
    while( div != null && div.tagName != "LI" )
        div = div.parentNode;
	
    /*if( div != null )
        div.className = ""*/
    
    _subMenuTimeout = setTimeout( "HideSubMenu()", nTimeout );
}

function HideSubMenu()
{
    clearTimeout(_subMenuTimeout );
    while( _visibleMenu != null )
    {
        _visibleMenu.style.display = "none";
        _visibleMenu = _visibleMenu.parentmenu;
    }
}

function OnSubMenuItemMouseOver( evt )
{
	var div = GetEventObject( evt );
	while( 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 = "block";
            _visibleMenu = div.parentNode;
        }
        
        clearTimeout(_subMenuTimeout );
        //div.className = "subMenuSelectedItem";

        //Si l'item a un sous menu, on l'affiche
        if( div.submenu != null )
        {
            
            div.submenu.style.left = Number(getRealLeft( div ) + div.offsetWidth) + 'px';
            
			
			var nTop = 0;
			nTop = Number(getRealTop( div ));
			
			
			// Si le browser est safari sou mac, on enlève la hauteur de l'item parent et ses bordures
			if( navigator.userAgent.indexOf("Safari") != -1 || navigator.userAgent.indexOf("safari") != -1 )
			{
				nTop -= 34;
			}
				
			div.submenu.style.top = nTop + 'px'  
			div.submenu.style.display = "block";
             
                
            _visibleMenu = div.submenu;
        }
	}
}

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()", nTimeout );
	}
}

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;
    }
}


// To swap the image in the nav according to the actual section where in.

function changeImages()
{	
	var el = getElementsByClass('selected');
	for (var i=0; i < el.length; i++)
	{
		var image = el[i].firstChild;
		var source = image.getAttribute("src").split(".gif");
		var newSource = source[0] + "-down.gif";
		image.setAttribute("src", newSource);
	}
}

function MM_swapImgRestore() 
{ //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) 
{ //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() 
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function ChangeMessage(message,champ)
{
    if(document.getElementById)
        document.getElementById(champ).innerHTML = message;
}

function MM_preloadImages() 
{ //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


//AddOnLoad(changeImages);
AddOnLoad(LoadMenu);