﻿//Définition des variables
var Tableau=new Liste();
var Affichage,Time;

Tableau.Nombre=0;
Tableau.HzVt=7;
Tableau.Timer=1;
Tableau.TOut=3000;
Tableau.MOut="#e6e6e6";
Tableau.MOver="#999999";
Tableau.SMOut="#CCCCCC";
Tableau.SMOver="#CC99CC";

//Définition des titres et sous titres des menus : "numéro","nom","lien"
Tableau.AddT("Pr&eacute;sentation");
Tableau.Add(0,"Bienvenue","page11.php");
Tableau.Add(0,"Thématique","page12.php");
Tableau.Add(0,"Organisation","page13.php");
Tableau.Add(0,"Remerciements","page15.php");
Tableau.AddT("Programme");
Tableau.Add(1,"7 juillet","page21.php");
Tableau.Add(1,"8 juillet","page22.php");
Tableau.Add(1,"9 juillet","page23.php");
Tableau.Add(1,"10 juillet","page24.php");
Tableau.Add(1,"11 juillet","page25.php");
Tableau.Add(1,"12 juillet","page26.php");
Tableau.Add(1,"CR & GT","page27.php");
Tableau.AddT("Communications");
Tableau.Add(2,"Appels à comm.","page41.php");
Tableau.Add(2,"Résumés","page44.php");
Tableau.AddT("Accueil","../index.php");

//Définition des fonctions
	//Définition de l'objet liste de menus
function Liste(){
	this.Nombre;			//Nombre de menus
	this.HzVt;				//Horizontal : Valeur nulle ; Vertical : valeur non nulle
	this.Timer;				//Timer actif : Valeur non nulle ; Timer inactif : Valeur nulle
	this.TOut;				//Temps ? attendre pour fermer le menu si le timer est actif (en ms)
	this.MOut;				//Couleur du titre d'un menu non survol?
	this.MOver;				//Couleur du titre d'un menu survol?
	this.SMOut;				//Couleur d'un sous menu non survol?
	this.SMOver;			//Couleur d'un sous menu survol?
	this.Menus=new Array();
	this.Add=AddMenu;
	this.Aff=AffMenu;
	this.AddT=AddTitre;
}

	//Définition de l'objet Menu
function Menu(){
	this.Titre;				//Titre du menu
	this.State;				//Etat du menu (affiché/masqué)
	this.nb;				//Nombre de sous menus
	this.SMenu=new Array();
}

	//Fonction chargée d'ajouter un titre aux menus
		//Nom : Texte qui sera affiché sur la page HTML
		//Lien (optionel) : Lien hypertexte associé au titre du menu
		//Dest (optionel) : Frame cible du lien
function AddTitre(Nom,Lien,Dest){
	this.Menus[this.Nombre]=new Menu();
	if(Lien)
		if(Dest)this.Menus[this.Nombre].Titre='<a href="'+Lien+'" target="'+Dest+'">'+Nom+'</a>';
		else this.Menus[this.Nombre].Titre='<a href="'+Lien+'">'+Nom+'</a>';
	else this.Menus[this.Nombre].Titre=Nom;
	this.Menus[this.Nombre].nb=0;
	this.Nombre++;
}

	//Fonction chargée de créer les menus
		//NumMenu : -1 si c'est un titre, numéro de sous menu sinon
		//Nom : Texte qui sera affiché sur la page HTML
		//Lien (optionel) : Lien hypertexte associé à l'entrée du menu
		//Dest (optionel) : Frame cible du lien
function AddMenu(NumMenu,Nom,Lien,Dest){
	if(!this.Nombre)return;
	if(Lien)
		if(Dest)this.Menus[NumMenu].SMenu[this.Menus[NumMenu].nb]='<a href="'+Lien+'" target="'+Dest+'">'+Nom+'</a>';
		else this.Menus[NumMenu].SMenu[this.Menus[NumMenu].nb]='<a href="'+Lien+'">'+Nom+'</a>';
	else this.Menus[NumMenu].SMenu[this.Menus[NumMenu].nb]=Nom;
	this.Menus[NumMenu].nb++;
}

	//Fonction chargée d'afficher ou masquer les menus
		//m : Positif si le menu doit etre affiché, négatif si le menu doit etre masqué
		//n : Numéro du menu à afficher ou masquer
function AffMenu(m,n){
	if(m==1&&!this.HzVt)for(i=0;i<Tableau.Nombre;i++)this.Aff(-1,i);
	//Cr?ation du tableau contenant le titre
	Affichage="<table width='180' style='background-color:"+this.MOut+"' ";
	//Quand on clique sur ce tableau, le sous menu est affiché/masqué
	Affichage+="onClick='Tableau.Aff("+(-m)+","+n+")'><tr ";
	Affichage+="onMouseOver='this.setAttribute(\"bgColor\",\""+this.MOver+"\")";
	if(m==1&&!this.HzVt&&this.Timer)Affichage+=";clearTimeout(Time)";
	Affichage+="' onMouseOut='this.setAttribute(\"bgColor\",\""+this.MOut+"\")";
	if(m==1&&!this.HzVt&&this.Timer)Affichage+=";Time=setTimeout(\"Tableau.Aff(-1,"+n+")\","+this.TOut+")";
	Affichage+="'><td width='180' align='left'>";
	Affichage+=this.Menus[n].Titre;
	Affichage+="</td></tr></table>";
	Affichage+="<div ID='SMenu"+n+"'>";
	//Si on doit afficher le sous menu
	if(m>0){
		Affichage+="<table width='180' style='background-color:"+this.SMOut+"'>";
		for(i=0;i<this.Menus[n].nb;i++){
			//Ajout des textes des sous menus
			Affichage+="<tr ";
			Affichage+="onMouseOver='this.setAttribute(\"bgColor\",\""+this.SMOver+"\")";
			if(m==1&&!this.HzVt&&this.Timer)Affichage+=";clearTimeout(Time)";
			Affichage+="' onMouseOut='this.setAttribute(\"bgColor\",\""+this.SMOut+"\")";
			if(m==1&&!this.HzVt&&this.Timer)Affichage+=";Time=setTimeout(\"Tableau.Aff(-1,"+n+")\","+this.TOut+")";
			Affichage+="'><td width='180'>";
			Affichage+=this.Menus[n].SMenu[i];
			Affichage+="</td></tr>";
		}
		Affichage+="</table>";
	}
	Affichage+="&nbsp;</div>";
	document.getElementById("Menu"+n).innerHTML=Affichage;
}

	//Fonction chargée d'afficher les menus au chargement de la page
function InitMenu(){
	//On appelle la fonction AffMenu, les sous menus sont masqués par défaut
	document.write('<table width="180">');
	document.write(Tableau.HzVt?'<tr><td width="180">':'<tr>');
	for(i=0;i<Tableau.Nombre;i++){
		document.write(Tableau.HzVt?'':'<td width="180" valign="top">');
		document.write("<div ID=Menu"+i+"></div>");
		Tableau.Aff(-1,i);
		document.write(Tableau.HzVt?'':'</td>');
	}
	document.write(Tableau.HzVt?'</td></tr>':'</tr>');
	document.write('</table>');
}

