// JavaScript Document
// Menu de profondeur variable

var fichier = 0;
var dossier = 1;
var nb = 0;
var Menu = new Array();

// Construction du menu, attention à l'ordre.
// 4 arguments :
// - le type : dossier ou fichier
// - la profondeur
// - le texte
// - le lien
//Ajouter(dossier, 0, false, "Qui sommes nous ?", "#");
//	Ajouter(fichier, 1, false, "Le club", "http://www.sanpan.com");
//	Ajouter(fichier, 1, false, "L'équipe", "equipe.htm");
//Ajouter(dossier, 0, false, "Nos lieux de formation", "#");
//	Ajouter(fichier, 1, false, "La piscine", "#");
//	Ajouter(fichier, 1, false, "Les fosses", "#");
//	Ajouter(fichier, 1, false, "Les cours théoriques", "#");
//Ajouter(dossier, 0, false, "La carte abonnement", "#");
//	Ajouter(fichier, 1, false, "Présentation", "#");
//	Ajouter(fichier, 1, false, "Les entraînements", "#");
//	Ajouter(fichier, 1, false, "Abonnés", "#");
//Ajouter(dossier, 0, false, "Nos formations", "#");
//	Ajouter(fichier, 1, false, "Baptême premiers niveaux", "#");
//	Ajouter(fichier, 1, false, "Niveaux supérieurs PADI", "#");
//	Ajouter(fichier, 1, false, "Niveaux supérieurs FFESSM", "#");	
//Ajouter(dossier, 0, false, "Nos séjours", "#");
//	Ajouter(fichier, 1, false, "Généralités", "#");
//	Ajouter(fichier, 1, false, "Séjours proposés", "#");
//Ajouter(dossier, 0, false, "Nos partenaires", "#");
//	Ajouter(fichier, 1, false, "Voyage", "#");
//	Ajouter(fichier, 1, false, "Technique", "#");
//Ajouter(dossier, 0, false, "Liens utiles", "#");
//	Ajouter(fichier, 1, false, "Voyage", "#");
//	Ajouter(fichier, 1, false, "Technique", "#");
//	Ajouter(fichier, 1, false, "Institutionnels", "#");						


// L'objet Element
function Element(type, profondeur, pere, ouvert, texte, lien)
{
	this.type = type;
	this.profondeur = profondeur;
	this.pere = pere;
	this.ouvert = ouvert;
	this.texte = texte;
	this.lien = lien;
}

// Méthode de vérification de la présence d'un élément
// un élément est present si son pere est ouvert ou est 0
function Present(n)
{
	while (Menu[n].pere != 0)
	{
		n = Menu[n].pere;
		if (!(Menu[n].ouvert)) {return false;}
	}
	return true;
}
Element.prototype.Present = Present;

// Méthode de modification de l'état d'un élément
function Changer()
{
	if (this.ouvert)
		{this.ouvert = false;} // si ouvert, on ferme
	else
	{ // sinon, on ferme tous les éléments de la même branche et on l'ouvre
		var i = this.pere + 1;
		while (i <= nb && Menu[i].profondeur >= this.profondeur)
		{
		 Menu[i].ouvert = false;
		 i++;
		}
		this.ouvert = true;
	}
	AffMenu();
}
Element.prototype.Changer = Changer;

// Méthode d'écriture d'un élément
function Ecrire(n)
{
	var chaine = "";
	if (!(this.Present(n))) return chaine ; // l'élément ne doit pas être affiché
	chaine += "<tr><td><li style='position:relative; left:" + 5 * this.profondeur + "px'>"
	//for (var i = 0; i < this.profondeur; i++) {chaine += "  ";} // petit décalage
	if (this.type == fichier)
		{chaine += "<a href='" + this.lien + "'  style='color: #FFF; font-size: 11px; font-weight: normal;'>" + this.texte + "</a>";}
	else
		{chaine += "<a href='#' OnMouseDown='Menu[" + n + "].Changer();' target='_self'  >" + this.texte + "</a>"}
	return chaine + "</li></td></tr>";
}
Element.prototype.Ecrire = Ecrire;

// Fonction d'ajout d'un élément au menu
function Ajouter(type, profondeur, ouvert, texte, lien)
{
	nb++;
	var pere = nb - 1;
	while (pere != 0 && Menu[pere].profondeur >= profondeur) {pere--;}
	Menu[nb] = new Element(type, profondeur, pere, ouvert, texte, lien);
}

// Création de l'objet menu dans la page
document.writeln('<div id="menu"></div>');

// Affichage du menu dans l'état actuel
function AffMenu()
{
	var chaine = "<br /><p><table>";
	for (var i = 1; i < Menu.length; i++)
	{
		chaine += Menu[i].Ecrire(i);
	}
	chaine += "</table></p>";
	document.getElementById('menu').innerHTML = chaine;
}