
function afficheImage(id_image) {
	if (document.getElementById(id_image).style.display == 'none') 
	{
		document.getElementById(id_image).style.display = 'block';
	}
	else {
		document.getElementById(id_image).style.display = 'none';
	}
}	

var menuOuvertParDefaut= null ;
var carreOuvertParDefaut= null ;
var itemCaptionOuvertParDefaut= null ;
function placeMenu()
{
	var margeMenuDroite= 5 ;
	var maxCadreWidth= 219 ;
	var minMenuLeft= 626 ;
	var maxMenuLeft= minMenuLeft + maxCadreWidth ;
	
	var menuLeft= parseInt(document.body.clientWidth)
					- parseInt(document.getElementById("menu1").style.left)
					- parseInt(document.getElementById("menu1").style.width)
					- margeMenuDroite ;

	if ( menuLeft > minMenuLeft ) {
		/* On étire le calque 'cadre' à la bonne largeur pour qu'il complete
			le trou entre le contenu et le menu */
		document.getElementById("cadre").style.width=
						Math.min(
							parseInt(document.body.clientWidth)
								- parseInt(document.getElementById("menu1").style.left)
								- parseInt(document.getElementById("menu1").style.width)
								- parseInt(document.getElementById("contenu").style.left)
								- parseInt(document.getElementById("contenu").style.width)
								- 1 - margeMenuDroite
							, maxCadreWidth ) ;
		/* On affiche le calque 'cadre' */
		document.getElementById("cadre").style.display= "block" ;
	}
	else {
		/* On borne la propriété left du menu à minMenuLeft et on cache le
		   calque cadre */
		menuLeft= minMenuLeft ;
		document.getElementById("cadre").style.display= "none" ;
	}
	document.getElementById("menu").style.left= Math.min(menuLeft, maxMenuLeft) ;
	
	if ( menuOuvertParDefaut != null && carreOuvertParDefaut != null && itemCaptionOuvertParDefaut != null )
		permuteMenu2(menuOuvertParDefaut, carreOuvertParDefaut, itemCaptionOuvertParDefaut) ;
}





var dernierOuvert = null;
var dernierCarre = null;
var dernierItemCaption= null ;
function permuteMenu2(id_menu, id_carre, id_itemCaption)
{
	/* le sous menu cliqué est différent de celui déjà ouvert
	   => on ferme celui déjà ouvert et on ouvre le nouveau  */
	if (id_menu != dernierOuvert) {
		/* ferme le sous menu déjà ouvert (s'il en existe un) */
		if ( dernierOuvert != null && dernierCarre != null && dernierItemCaption != null ) {
			document.getElementById(dernierOuvert).style.display = 'none';
			document.getElementById(dernierCarre).style.display = 'none';
			document.getElementById(dernierItemCaption).className= 'menu1' ;
			resetLayers() ;
		}
		/* vire le surlignement de la rubrique sans sous rubriques */
		else if ( dernierCarre != null && dernierItemCaption != null ) {
			document.getElementById(dernierCarre).style.display = 'none';
			document.getElementById(dernierItemCaption).className= 'menu1' ;
		}
		/* ouvre le nouveau sous menu */
		document.getElementById(id_menu).style.display= 'block' ;
		document.getElementById(id_carre).style.display= 'block' ;
		document.getElementById(id_itemCaption).className= 'menu1_ouvert' ;
		/* sauvegarde les id des elements ouverts */
		dernierOuvert= id_menu ;
		dernierCarre= id_carre ;
		dernierItemCaption= id_itemCaption ;
		/* adpate les calques aux dimensions du menu */
		adaptLayers2Menu() ;
	}
	/* le sous menu cliqué est celui déjà ouvert => on le ferme */
	else {
		/* ferme le sous menu */
		document.getElementById(dernierOuvert).style.display = 'none';
		//document.getElementById(dernierCarre).style.display = 'none';
		document.getElementById(dernierItemCaption).className= 'menu1' ;
		dernierOuvert = null;
		dernierCarre = null;
		dernierItemCaption= null ;
		resetLayers() ;
	}
}


function adaptLayers2Menu()
{
	var bottomMenu= parseInt(document.getElementById("menu1").style.top)
					+ parseInt(document.getElementById("conteneurMenu").style.top)
					+ parseInt(document.getElementById("conteneurMenu").clientHeight) ;
	var footerMenuTop= parseInt(document.getElementById("footerMenu").style.top) ;
	var marge= 1 ;
	
	/* si le menu est trop grand pour le conteneur, on adapte le conteneur */
	if ( bottomMenu >= (footerMenuTop-marge) ) {
		
		/* adapte la hauteur du menu et le haut du pied de page du menu */
		document.getElementById("footerMenu").style.top= bottomMenu + marge ;
		document.getElementById("menu1").style.height=
							parseInt(document.getElementById("conteneurMenu").style.top)
							+ parseInt(document.getElementById("conteneurMenu").clientHeight) ;
		
		/* offset est le déplacement du pied de page du menu (i.e. la différence de hauteur du menu quand
			il est ouvert et fermé pour cet onglet, moins la place qui restait dispo entre le bas du dernier
			onglet du menu quand il était fermé et la zone de login) (comment ça, c'est pas clair ?) */
		var offset= parseInt(document.getElementById("menu1").style.height) - menu1HeightOrigine ;
		
		if ( basFooterMenuHeightOrigine-offset >= basFooterMenuHeightIdeal ) {
			/* basFooterMenuHeightOrigine-offset >= basFooterMenuHeightIdeal
				==> reduction du bas du menu à <<basFooterMenuHeightOrigine-offset>> */
			with ( document.getElementById("basFooterMenu").style )
				height= parseInt(height) - offset ;
		}
		else {
			/* basFooterMenuHeightOrigine-offset < basFooterMenuHeightIdeal
				==> reduction du bas du menu à <<basFooterMenuHeightIdeal>>
				==> étirement du reste juste de ce qu'il faut */
			if ( basFooterMenuHeightOrigine > basFooterMenuHeightIdeal ) {
				/* basFooterMenuHeightOrigine > basFooterMenuHeightIdeal
					==> on réduit la hauteur du footerMenu au minimum
					==> on adapte les modifications des autres éléments */
				with ( document.getElementById("basFooterMenu").style )
					height= basFooterMenuHeightIdeal ;
				offset-= basFooterMenuHeightOrigine - basFooterMenuHeightIdeal ;
			}
			with ( document.getElementById("contenu").style )
				height= parseInt(height) + offset ;
			/*with ( document.getElementById("pistePartieBasse").style )
				height= parseInt(height) + offset ;*/
			with ( document.getElementById("filetRougeVerticalGauche").style )
				height= parseInt(height) + offset ;
			with ( document.getElementById("footerContenu").style )
				top= parseInt(top) + offset ;
			
		}
	}
}


function resetLayers()
{
	document.getElementById("footerMenu").style.top= footerMenuTopOrigine ;
	document.getElementById("menu1").style.height= menu1HeightOrigine ;
	
	document.getElementById("contenu").style.height= contenuHeightOrigine ;
	document.getElementById("footerContenu").style.top= footerContenuTopOrigine ;
	document.getElementById("basFooterMenu").style.height= basFooterMenuHeightOrigine ;
	
	/*document.getElementById("pistePartieBasse").style.height= pistePartieBasseHeightOrigine ;*/
	document.getElementById("filetRougeVerticalGauche").style.height= filetRougeVerticalGaucheHeightOrigine ;
}



/* Variables *constantes* (enfin, à considerer comme telles)
   initialisées dans la fonction initGlobals */
var conteneurMenuBottomOrigine ;
var footerMenuTopOrigine ;
var menu1HeightOrigine ;
var contenuHeightOrigine ;
var footerContenuTopOrigine ;
var basFooterMenuHeightOrigine ;
var basFooterMenuHeightIdeal ;
/*var pistePartieBasseHeightOrigine ;*/
var filetRougeVerticalGaucheHeightOrigine ;
function initGlobals()
{
	conteneurMenuBottomOrigine= parseInt(document.getElementById("menu1").style.top)
								+ parseInt(document.getElementById("conteneurMenu").style.top)
								+ parseInt(document.getElementById("conteneurMenu").clientHeight) ;
	
	footerMenuTopOrigine= parseInt(document.getElementById("footerMenu").style.top) ;
	menu1HeightOrigine= parseInt(document.getElementById("menu1").style.height) ;
	
	contenuHeightOrigine= parseInt(document.getElementById("contenu").style.height) ;
	footerContenuTopOrigine= parseInt(document.getElementById("footerContenu").style.top) ;
	basFooterMenuHeightOrigine= parseInt(document.getElementById("basFooterMenu").style.height) ;
	basFooterMenuHeightIdeal= basFooterMenuHeightOrigine ;

	/*pistePartieBasseHeightOrigine= parseInt(document.getElementById("pistePartieBasse").style.height) ;*/
	filetRougeVerticalGaucheHeightOrigine= parseInt(document.getElementById("filetRougeVerticalGauche").style.height) ;

	/* EDIT : bon ben finalement on a utilisé une autre technique, étant donné que le contenu du calque
				était en absolu et qu'il n'influençait donc pas la hauteur du conteneur.. => on prend la
				hauteur de l'element le plus bas auquel on ajoute sa propriété top... et ça nous donne
				la hauteur du calque #magic#
		Petit workaround pour Firefox 1.0.4 (au moins) :
		quand on a fixé explicitement la hauteur d'un div, clientHeight renvoit toujours cette hauteur
		et pas la hauteur utilisée en réalitée (même si le contenu dépasse)
		=> on savegarde la hauteur
		=> on l'efface
		=> on fait notre lecture de clientHeight qui n'est plus faussée
		=> on remet la hauteur à sa valeur initiale
		(
		A noter que sous IE, une simple lecture de clientHeight suffit :
	 	var actualContenuHeight= parseInt(document.getElementById("contenu").clientHeight) ;
		)*/
	/*var actualContenuHeight ;
	with ( document.getElementById("contenu") ) {
		var savHeight= style.height ;
		style.height= "" ;
		actualContenuHeight= parseInt(clientHeight) ;
		style.height= savHeight ;
	}*/
	var actualContenuHeight ;
	with ( document.getElementById(dernierElement) )
		actualContenuHeight= parseInt(style.top) + parseInt(clientHeight) ;

	
	
	if ( actualContenuHeight > contenuHeightOrigine ) {
		var offset= actualContenuHeight - contenuHeightOrigine ;
		with ( document.getElementById("contenu").style ) {
			height= parseInt(height) + offset ;
			contenuHeightOrigine= parseInt(height) ;
		}
		with ( document.getElementById("footerContenu").style ) {
			top= parseInt(top) + offset ;
			footerContenuTopOrigine= parseInt(top) ;
		}
		with ( document.getElementById("basFooterMenu").style ) {
			height= parseInt(height) + offset ;
			basFooterMenuHeightOrigine= parseInt(height) ;
		}
		/*with ( document.getElementById("pistePartieBasse").style ) {
			height= parseInt(height) + offset ;
			pistePartieBasseHeightOrigine= parseInt(height) ;
		}*/
		with ( document.getElementById("filetRougeVerticalGauche").style ) {
			height= parseInt(height) + offset ;
			filetRougeVerticalGaucheHeightOrigine= parseInt(height) ;
		}
	}
}
