
var ie = (document.all);
var ne = (document.layers);
var ne4 = false;
var ne6 = false;

// code inséré dans la cellule bouton du menu
	// si menu conitent des sous-menus non affichés
var SBtmPlus = '<img src="images/plus.gif">';
	// si menu conitent des sous-menus affichés
var SBtmMoins = '<img src="images/moins.gif">';
	// si menu sélectionné sans sous-menu
var SBtmSelect = '<font color=red><strong><big>·</big></strong></font>';
	// si menu non sélectionné sans sous-menu
var SBtmNorm = '<strong><big>·</big></strong>';
	
if (ne)
{
	(navigator.appVersion >= 6)? ne6 = true : ne4 = true;
}
		
var objMenu = new cConteneurMenus ("objMenu");

// Classe cMenu
	
var N_BORDER = 0;
//var objMenuRacine = new cMenu("","")
	
function cMenu ( objConteneur, sConteneurVarName, sTitre, sLien, nIndice )
{
	this.m_objConteneur = objConteneur;
	this.m_sContVName = sConteneurVarName;
	this.m_nIndice = nIndice;
	this.m_sTitre = sTitre;
	this.m_sLien = sLien;
	this.m_bVoirSSM = false;	// afficher les sous menu
	this.m_nIndParent = -1;		// Indice du menu parent
	this.m_nIndFrere = -1;		// Menu suivant du même niveau
	this.m_nIndFils = -1;		// Fils aîné <=> 1er Sous menu	
	this.m_nIndAine = -1;		// Indice de l'aîné de la famille
		
	this.afficher = cMenuAfficher;
	this.onClick = cMenuOnClick;
	this.onClickAilleur = cMenuOnClickAilleur;
	this.setAffiche = cMenuSetAffiche;
}
		
function cMenuAfficher()
{
	var sMenuHTML;
	sMenuHTML = "";
		
	sMenuHTML +='<table border=' + N_BORDER + ' name=' + this.m_nIndice + '>';
	sMenuHTML +='<tr>';
	sMenuHTML +='<td valign="middle" align=center width=7>';

	if ( ! this.m_bVoirSSM ) // Le menu n'est pas affiché => swap du bouton
	{
		if ( this.m_nIndFils > -1 ) // si le menu a un ou des sous-menus
		{
			sMenuHTML += SBtmPlus + '</td><td valign="middle" noWrap> ';
		}
		else				// si le menu n'a pas de sous-menus
		{
			sMenuHTML += SBtmNorm + '</td><td valign="middle"> ';
		};
		
		sMenuHTML += '<a href="javascript:' + this.m_sContVName + '.getMenu(' + this.m_nIndice + ').onClick();'
						+ this.m_sContVName + '.afficher()" >'
						+ this.m_sTitre + '</a>';	
	}
	else // Le menu est affiché => bouton down
	{ 
		if ( this.m_nIndFils > -1 ) // si le menu a un ou des sous-menus
		{
			sMenuHTML += SBtmMoins + '</td><td valign="middle" noWrap> ';
		}
		else				// si le menu n'a pas de sous-menus
		{
			sMenuHTML += SBtmSelect + '</td><td valign="middle"> ';
		};
		// titre
		sMenuHTML += '<a href="javascript:' + this.m_sContVName + '.getMenu(' + this.m_nIndice + ').onClick();'
						+ this.m_sContVName + '.afficher()">'
						+ this.m_sTitre + '</a>';	
	};

	sMenuHTML += ('</td>');
	sMenuHTML += ('</tr>');
	
	// Afficher le fils
	if ( this.m_nIndFils > -1 && this.m_bVoirSSM )
	{
		sMenuHTML += ('<tr>');
		sMenuHTML += ('<td>&nbsp;</td>');
		sMenuHTML += ('<td>');
		sMenuHTML += this.m_objConteneur.m_aMenus[this.m_nIndFils].afficher();
		sMenuHTML += ('</td>');
		sMenuHTML += ('</tr>');
	};
	sMenuHTML += ('</table>');
		
	// Afficher le frère
	if ( this.m_nIndFrere > -1 )
	{
		sMenuHTML += this.m_objConteneur.m_aMenus[this.m_nIndFrere].afficher();
	};
		
	return sMenuHTML;
}
	
function cMenuOnClick ()
{
	if ( this.m_sLien != "" && ( get ('mn') != this.m_nIndice ) )
	{
		location.href = this.m_sLien;
	}
	else
	{
		this.m_bVoirSSM = ! this.m_bVoirSSM;
		if (this.m_nIndAine > -1)
		{
			this.m_objConteneur.m_aMenus[this.m_nIndAine].onClickAilleur( this.m_nIndice );
		}
	};
}
	
function cMenuOnClickAilleur ( nIndMenuClique )
{
	if ( nIndMenuClique != this.m_nIndice )
	{
		this.m_bVoirSSM = false;
	};
	if ( this.m_nIndFrere > -1 )
	{
		this.m_objConteneur.m_aMenus[this.m_nIndFrere].onClickAilleur( nIndMenuClique );
	}
}
	
function cMenuSetAffiche ()
{
	this.m_bVoirSSM = true;
	this.m_objConteneur.m_aMenus[this.m_nIndAine].onClickAilleur( this.m_nIndice );
		
	if ( this.m_nIndParent > -1 )
	{
		this.m_objConteneur.m_aMenus[this.m_nIndParent].setAffiche ();
	}
}

function cMenuSetReduit ()
{
	this.m_bVoirSSM = false;
}

// Classe cConteneurMenus
	
function cConteneurMenus( sVarName )
{
	// Public
	this.addMenu = addMenu;
	this.afficher = afficher;
	this.setMenuAffiche = setMenuAffiche;	// Définit le menu affiché ( ceci affichara ces fils et ses aïeux )
	
	// Prive
	this.m_sVarName = sVarName;
	this.m_aMenus = new Array();
	this.nNbMenus = nNbMenus;
		
	this.addMenuRacine = addMenuRacine;
	this.addSousMenu = addSousMenu;
	this.getMenu = getMenu;
}
	
function nNbMenus()
{
	return this.m_aMenus.length;
}
	
function addMenu ( nIndMenuParent, sTitre, sLien )	// Créé un nouveau menu et retourne son indice
{
	if ( nIndMenuParent > -1 )
	{
		return this.addSousMenu ( nIndMenuParent, sTitre, sLien );
	}
	else
	{
		return this.addMenuRacine ( sTitre, sLien );
	};
}
	
function addMenuRacine ( sTitre, sLien )	// Créé un nouveau menu racine et retourne son indice
{
	var nIndMenu = this.nNbMenus();
		
	var m = new cMenu ( this, this.m_sVarName, sTitre, sLien, nIndMenu );
	this.m_aMenus[nIndMenu] = new cMenu ( this, this.m_sVarName, sTitre, sLien, nIndMenu );
	this.m_aMenus[nIndMenu].m_nIndAine = 0;
		
	// recherche du dernier frère
	var nIndDernFrere;
	nIndDernFrere = 0;
	if ( nIndMenu != 0 )
	{
		while ( this.m_aMenus[nIndDernFrere].m_nIndFrere != -1)
		{
			nIndDernFrere = this.m_aMenus[nIndDernFrere].m_nIndFrere;
		};
		this.m_aMenus[nIndDernFrere].m_nIndFrere = nIndMenu;
	}
		
	return nIndMenu;
}
	
function addSousMenu ( nIndMenuParent, sTitre, sLien )	// Créé un nouveau Sous menu et retourne son indice
{
	var nIndMenu = this.nNbMenus();
	if ( this.m_aMenus[nIndMenuParent].m_nIndFils == -1 ) // Alors c'est le fils aîné du menu parent
	{
		this.m_aMenus[nIndMenuParent].m_nIndFils = nIndMenu;
	}
	else	// Alors c'est le frère du dernier fils du père
	{
		var nIndDernFrere;
		nIndDernFrere = this.m_aMenus[nIndMenuParent].m_nIndFils;
		while ( this.m_aMenus[nIndDernFrere].m_nIndFrere != -1)
		{
			nIndDernFrere = this.m_aMenus[nIndDernFrere].m_nIndFrere;
		};
		this.m_aMenus[nIndDernFrere].m_nIndFrere = nIndMenu;
	};
		
	// création du menu
	this.m_aMenus[nIndMenu] = new cMenu ( this, this.m_sVarName, sTitre, sLien, nIndMenu );
	this.m_aMenus[nIndMenu].m_nIndAine = this.m_aMenus[nIndMenuParent].m_nIndFils;
	this.m_aMenus[nIndMenu].m_nIndParent = nIndMenuParent;
		
	return nIndMenu;
}
	
function getMenu ( nIndiceMenu )
{
	return this.m_aMenus[nIndiceMenu];
}
	
function setMenuAffiche ( nIndMenu )
{
	if ( nIndMenu >= 0 && nIndMenu < this.nNbMenus() )
	{
		this.m_aMenus[nIndMenu].setAffiche();
	};
}
	
function afficher()
{
	if ( this.nNbMenus() > 0 )
	{
		var sMenuHTML;
		sMenuHTML = "";
			
		sMenuHTML = '<table border=' + N_BORDER + ' name="Menu"><tr><td>';
			
		sMenuHTML += this.m_aMenus[0].afficher();
					
		sMenuHTML += '</td></tr></table>';

		replHTM ( "CibleMenu", sMenuHTML );
	}
}

// Autres fonctions

function dbAffProp ( objet )
{
	var prop;
	for ( prop in objet )
	{
		var sMsg;
		sMsg += '\n' + prop + ' = ' + objet[prop];
	}
	alert (sMsg);
}
	
function replHTM ( sNomSpan, sTxt )
{
	if ( ne4 )
	{
		eval ( "document." + sNomSpan + ".document.write('" + sTxt + "')" );
		eval ( 'document.' + sNomSpan + '.document.close ()' );
	}
	else // ne6 et ie
	{
		document.getElementById ( sNomSpan ).innerHTML = sTxt;
	};
}
