

/*
   repositionne les tables du niveau 1 et 2 en fonction du niveau 0.
 */
function placeMenu() {
	if (menuShownNiv1) {
		placeMenuNiv1(menuShownNiv1, cellSelectedNiv0);
	}
	if (menuShownNiv2) {
		placeMenuNiv2(menuShownNiv2, cellSelectedNiv0, cellSelectedNiv1);
	}
}

/*
	Positionne une table du niveau 1 (en absolu).
*/
function placeMenuNiv1(elemMenu, numCellNiv0) {

	var cellNiv0 = getDomElement("menuCell_" + numCellNiv0);
	//alert("niv0 = " + niv0);
	//alert("pos niv0 : [" + getPosX(niv0) + "," + getPosY(niv0) + "] " + getWidth(niv0) + "x" + getHeight(niv0));

	// Positionne les barres du niveau 1  
	elemMenu.style.left = getPosX(cellNiv0);  // aligne à gauche le niveau 1 sur le niveau 0
	elemMenu.style.top = getPosY(cellNiv0) + getHeight(cellNiv0);  // positionne le niveau 1 juste sous le niveau 0

	// Ajustement pour certains navigateurs 
	if (isMacIE()) {
		elemMenu.style.top = parseInt(elemMenu.style.top) - 3;
	}
	if (isSafari()) {
		elemMenu.style.top = parseInt(getSize(elemMenu.style.top)) + 2;
	}
}
/*
 Repositionne l'élément du menu si en dehors de l'écran (bord droit si fenêtre ou résolution trop petite)
 */
function corrigePlaceNiv1(elemMenuNiv1) {
	if (getPosX(elemMenuNiv1) + getWidth(elemMenuNiv1) > getWindowWidth()) {
		elemMenuNiv1.style.left = getWindowWidth() - getWidth(elemMenuNiv1);
		
		if (isSafari() || isMacIE()) {
			elemMenuNiv1.style.left = parseInt(getSize(elemMenuNiv1.style.left)) + 10;
		}
	}; 
}

/*
	Positionne une table du niveau 2 (en absolu).
*/
function placeMenuNiv2(elemMenu, numCellNiv0, numCellNiv1) {
	var cellNiv1 = getDomElement("menuCell_" + numCellNiv0 + "_" + numCellNiv1);
	//alert("cellNiv1 :" + cellNiv1);
	//alert("pos cellNiv1 : [" + getPosX(cellNiv1) + "," + getPosY(cellNiv1) + "] " + getWidth(cellNiv1) + "x" + getHeight(cellNiv1));
	
	if (cellNiv1.offsetParent.className == "right") {  /* ouvre le sous-menu à gauche */
		elemMenu.style.top = getPosY(cellNiv1) - 4; // positionne le niveau 1 juste sous le niveau 0
		elemMenu.style.left = getPosX(cellNiv1) - getWidth(elemMenu) - 3;
	} else {	 /* ouvre le sous menu à droite */
		elemMenu.style.top = getPosY(cellNiv1) - 4; // positionne le niveau 1 juste sous le niveau 0
		elemMenu.style.left = getPosX(cellNiv1) + getWidth(cellNiv1) + 3; // aligne à gauche sous la cellule du niveau 1 (le delta correspond au border)	
	}
/*
	if (isMacIE()) {
		elemMenu.style.top = parseInt(elemMenu.style.top) + numCellNiv1 * getHeight(cellNiv1) - 10;
	}
*/
}

/*
 Repositionne l'élément du menu si en dehors de l'écran (bord droit si fenêtre ou résolution trop petite)
function corrigePlaceNiv2(elemMenuNiv1, elemMenuNiv2) {
	if (getPosX(elemMenuNiv2) + getWidth(elemMenuNiv2) > getWindowWidth()) {
		elemMenuNiv2.style.left = getPosX(elemMenuNiv1) - getWidth(elemMenuNiv2) + 1;
		selectedCellNiv1.className = selectedCellNiv1.className + "Left";
	}; 
}
 */



var menuShownNiv1;      // l'element (table) affiché pour le niveau 1 (ou null si niveau masqué)
var menuShownNiv2;      // l'element (table) affiché pour le niveau 2 (ou null si niveau masqué)

var cellSelectedNiv0;   // le numero de la cellule du niveau 0 correspondant au niveau 1 actuellement affiché (1-indexed)
var selectedAnchorNiv0; // le lien (<a>) selectionné au niveau 0
var previousClassNiv0;  // la classe css utilisée avant que l'item du niveau 0 ne soit selectionné

var cellSelectedNiv1;   // le numero de la cellule du niveau 1 correspondant au niveau 2 actuellement affiché (1-indexed)
var selectedCellNiv1; // le lien (<a>) selectionné au niveau 1
var previousClassNiv1;  // la classe css utilisée avant que l'item du niveau 1 ne soit selectionné

var imgActivatedNiv1;   // Id de l'image "RolledOn" sur le niveau 1
 

function showMenuNiv1(elemA, numMenu, idImg) {
	if (cellSelectedNiv0 && numMenu == cellSelectedNiv0) {
		/* cas de 2 appels consécutifs à showMenuNiv1 pour le même numero de menu 
		   cela ne devrait pas arriver, mais ç'est bug qui arrive lorsqu'on survole une image */
		   return;
	}
	// hide existing menu
	hideMenuNiv1();	
	// store the menu to display
	selectedAnchorNiv0 = elemA;
	cellSelectedNiv0 = numMenu;
	menuShownNiv1 = getDomElement("menuNiv1_" + numMenu);
	if (menuShownNiv1) {
		//alert("showMenuNiv1 = " + menuShownNiv1);
		// change l'apparence  de la cellule du niveau 0
		previousClassNiv0 = selectedAnchorNiv0.className;
		getDomElement("menuCell_" + numMenu).className = "selected";
		selectedAnchorNiv0.className = "selected";
		// move the menu to the right place
		placeMenuNiv1(menuShownNiv1, numMenu);
		// display it
		menuShownNiv1.className = 'menuNiv1';
		corrigePlaceNiv1(menuShownNiv1);
		// hide the selects that can appeared beyond the menu
		if (isWinIE()) {
			setSelectVisibility(false,menuShownNiv1);
		}
		// rolls the image
		if (idImg) {
			activeImg(idImg);
			imgActivatedNiv1 = idImg;
		}
	}
}
function hideMenuNiv1() {
	// hide niv2 first 
	hideMenuNiv2();
	// hide niv1 if exists
	if (menuShownNiv1) {
		// shows the selects that can appeared beyond the menu
		if (isWinIE()) {
			setSelectVisibility(true,menuShownNiv1);
		}
		// hide menu
		menuShownNiv1.className = 'menuNiv1Hidden';
		// change l'apparence  de la cellule du niveau 0
		getDomElement("menuCell_" + cellSelectedNiv0).className = previousClassNiv0;
		selectedAnchorNiv0.className = previousClassNiv0;
		// this menu is no more shown
		menuShownNiv1 = null;
		// rolls the image
		if (imgActivatedNiv1) {
			deactiveImg(imgActivatedNiv1);
			imgActivatedNiv1 = null;
		}
	}
	
	cellSelectedNiv0 = null;
}

function isWinIE() {
	var infoNav = navigator.userAgent.toLowerCase();
	return infoNav.indexOf("msie") != -1 && infoNav.indexOf("mac") == -1;
}
function isMacIE() {
	var infoNav = navigator.userAgent.toLowerCase();
	return infoNav.indexOf("msie") != -1 && infoNav.indexOf("mac") != -1;
}
function isSafari() {
	return navigator.userAgent.toLowerCase().indexOf("safari") != -1;
}
function isMacFF() {
	var infoNav = navigator.userAgent.toLowerCase();
	return infoNav.indexOf("firefox") != -1 && infoNav.indexOf("mac") != -1;
}
function isMac() {
	var infoNav = navigator.userAgent.toLowerCase();
	return infoNav.indexOf("mac") != -1;	
}
function getSize(sizeWithPx) {
	return sizeWithPx.substring(0, sizeWithPx.length - 2);
}


function showMenuNiv2(elemA, numMenuNiv1, numMenuNiv2) {
	if (cellSelectedNiv1 && numMenuNiv2 == cellSelectedNiv1) {
		/* cas de 2 appels consécutifs à showMenuNiv1 pour le même numero de menu 
		   cela ne devrait pas arriver, mais ç'est bug qui arrive lorsqu'on survole une image */
		   return;
	}	
	// hide existing menu
	hideMenuNiv2();
	// store the menu to display
	selectedCellNiv1 = elemA;
	cellSelectedNiv1 = numMenuNiv2;
	menuShownNiv2 = getDomElement("menuNiv2_" + numMenuNiv1 + "_" +  numMenuNiv2);
	if (menuShownNiv2) {
		// change l'apparence  de la cellule du niveau 1
		previousClassNiv1 = selectedCellNiv1.className;
		selectedCellNiv1.className = selectedCellNiv1.className + "Selected";
		// display it
		menuShownNiv2.className = 'menuNiv2';
		// move the menu to the right place
		placeMenuNiv2(menuShownNiv2, cellSelectedNiv0, cellSelectedNiv1);
		//corrigePlaceNiv2(menuShownNiv1, menuShownNiv2);
		// hides the selects that can appeared beyond the menu
		if (isWinIE()) {
			setSelectVisibility(false,menuShownNiv2);
		}
	}
}
function hideMenuNiv2() {
	if (menuShownNiv2) {
		// shows the selects that can appeared beyond the menu
		if (isWinIE()) {
			setSelectVisibility(true,menuShownNiv2);
		}
		// hide menu
		menuShownNiv2.className = 'menuNiv2Hidden';
		// change l'apparence  de la cellule du niveau 1
		selectedCellNiv1.className = previousClassNiv1;
		// this menu is no more shown
		menuShownNiv2 = null;
	}
	
	cellSelectedNiv1 = null;
}


function getDomElement(name) {
	if (document.getElementById) {
		return document.getElementById(name);
	} else if (document.all) {
		return document.all[name];
	} else if (document.layers)	{
		return document.layers[name];
	}
}

function getPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}
function getPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}
function getMarginLeft(obj) {
	return obj.style.marginLeft;
}
function getWidth(obj) {
	return obj.offsetWidth;
}
function getHeight(obj) {
	return obj.offsetHeight;
}

function getWindowWidth() {
   if (navigator.appName=="Netscape") {
     return window.innerWidth-16;
   } else {
     return document.body.offsetWidth-20;
   }
}
function getWindowHeight() {
   if (navigator.appName=="Netscape") {
     return window.innerHeight-16;
   } else {
     return document.body.offsetHeight-20;
   }
}
function getDiv(divId) {
	if (document.getElementById) {
		return document.getElementById(divId);
	} else if (document.all) {
		return document.all[divId];
	} else if (document.layers)	{
		return document.layers[divId];
	}
}
/*----------  Masquage du menu  ----------*/

var dernierSorti = 0;

function leaveMenu() {
	eval("setTimeout('checkHideAll(" + dernierSorti + ")',1000);");
}
function enterMenu() {
	dernierSorti++;
}
function checkHideAll(bonDeSortie) {
	// si on n'est pas re-rentré depuis la sortie 'bonDeSortie', on cache le menu
	if (dernierSorti == bonDeSortie) {
		hideMenuNiv1();
	}
}
function HideAll() {
	/* cette fonction est conservée pour compatibilité avec l'ancien menu*/
}

/*------- Images -------------*/

var menuAcces_off = new Image();
menuAcces_off.src = "/FR/common/common/img/pictos/menuAcces_off.gif";
var menuAcces_on = new Image();
menuAcces_on.src = "/FR/common/common/img/pictos/menuAcces_on.gif";

var menuAccesLoggue_off = new Image();
menuAccesLoggue_off.src = "/FR/common/common/img/pictos/menuAccesLoggue_off.gif";
var menuAccesLoggue_on = new Image();
menuAccesLoggue_on.src = "/FR/common/common/img/pictos/menuAccesLoggue_on.gif";

function activeImg(idImg) {
	var imageOn = eval(idImg + '_on');
	DstepRoll(idImg, imageOn.src, 'menuContainer');
}
function deactiveImg(idImg) {
	var imageOff = eval(idImg + '_off');
	DstepRoll(idImg, imageOff.src, 'menuContainer');
}
function DstepRoll(ImgNam,Chemimg,Mylayon){
	var ns4=(document.layers)?true:false;
	var ie4=(document.all)?true:false;
	var ns6=(document.getElementById && !document.all)?true:false;
	var imgToRoll;
	if(Mylayon==0){
		if(document.images){imgToRoll=document.images[ImgNam];}
	} else {
		if (ns4){imgToRoll=document.layers[Mylayon].document.images[ImgNam];}
		if (ie4||ns6) {imgToRoll=document.images[ImgNam];}
	}
	
	if (imgToRoll) {
		imgToRoll.src=Chemimg;
	}
}


/*-----------  Gestion des elements select -----------------*/
/**
 * visible: true ou false, pour afficher ou masquer les select
 * elemMenu: l'element du menu qui définit la zone à masquer/afficher
 */
function setSelectVisibility(visible,elemMenu){ 

	var x = getPosX(elemMenu);
	var y = getPosY(elemMenu);
	var w = getWidth(elemMenu);
	var h = getHeight(elemMenu)

	var selx,sely,selw,selh,i 
	var sel=document.getElementsByTagName("SELECT") 
	for(i=0;i<sel.length;i++){ 
		selx=0; sely=0; var selp; 
		if(sel[i].offsetParent){ 
			selp=sel[i]; 
			while(selp.offsetParent){ 
				selp=selp.offsetParent; 
				selx+=selp.offsetLeft; 
				sely+=selp.offsetTop; 
			} 
		} 
		selx+=sel[i].offsetLeft; 
		sely+=sel[i].offsetTop; 
		selw=sel[i].offsetWidth; 
		selh=sel[i].offsetHeight;
		/*ajout seb pour ne pas masquer tous les select par verif si menu = false*/ 
		if(selx+selw>x && selx<x+w && sely+selh>y && sely<y+h && !sel[i].menu ){
			if(visible){
				if (updateCountHidden(sel[i],-1)==0){
					sel[i].style.visibility="visible"; 				
				}
			}else{
				updateCountHidden(sel[i],+1);
				sel[i].style.visibility="hidden";				
			}
		}
	} 
} 
function updateCountHidden(sel, delta) {
	if (!sel.countHidden) {  /* initialize to 0 */
		sel.countHidden = 0;
	}
	sel.countHidden += delta; 
	return sel.countHidden;
}

/*----------------  Gestion des info bulle ----------------*/

function showInfoBulle(menuElem, idInfoBulle) {
	// Recupere l'info bulle
	var infoBulle = getDiv(idInfoBulle);
	// Positionne l'info bulle
	infoBulle.style.left = getPosX(menuElem);
	infoBulle.style.top = getPosY(menuElem) - 20;
	if (isMacIE()) {
		infoBulle.style.width = 150;
	}
	// Affiche l'info bulle
	infoBulle.style.display = "inline";
}
function hideInfoBulle(menuElem, idInfoBulle) {
	// Recupere l'info bulle
	var infoBulle = getDiv(idInfoBulle);
	// Masque l'info bulle
	infoBulle.style.display = "none";
}

/*----------------- Pour eviter des erreurs JS ----------*/

function reloadSiNetscape() {
	
}