// 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, "Association Moulins du Quercy<br>Fédération Française<br>des Associations de Sauvegarde des Moulins", "#");
	Ajouter(fichier, 1, "Préambule", "http://www.moulinsduquercy.com/association.html");
	Ajouter(fichier, 1, "Activités", "http://www.moulinsduquercy.com/association.html#NOS ACTIVITES");
	Ajouter(fichier, 1, "Conseil d'administration", "http://www.moulinsduquercy.com/association.html#CONSEIL");
    Ajouter(fichier, 1, "Bulletin d'adhésion<br>Moulins du Quercy", "http://www.moulinsduquercy.com/adhesions.html");
    Ajouter(fichier, 0, "La Lettre des Moulins", "http://www.moulinsduquercy.com/lettre.html");       
	Ajouter(dossier, 0, "Moulins à découvrir<br>en Quercy", "#");
	Ajouter(fichier, 1, "Présentation - Carte", "http://www.moulinsduquercy.com/moulins.html");
	Ajouter(fichier, 1, "Circuits en voiture", "http://www.moulinsduquercy.com/en_voiture.html");
Ajouter(fichier, 0, "Les moulins : petit aperçu", "http://www.moulinsduquercy.com/apercu.html");
Ajouter(fichier, 0, "Calendrier des manifestations", "http://www.moulinsduquercy.com/calendrier.html");	
Ajouter(dossier, 0, "Se documenter", "#");
	Ajouter(fichier, 1, "Livres", "http://www.moulinsduquercy.com/livres.html");
	Ajouter(fichier, 1, "Documentations diverses", "http://www.moulinsduquercy.com/documentation.html");
Ajouter(fichier, 0, "Tourisme et visites :<br>nos services", "http://www.moulinsduquercy.com/tourisme.html");		
Ajouter(fichier, 0, "Projets pédagogiques<br>et projets d'études", "http://www.moulinsduquercy.com/projets.html");	
Ajouter(dossier, 0, "Aide et conseil<br>à nos adhérents propriétaires", "#");
	Ajouter(fichier, 1, "Conseils", "http://www.moulinsduquercy.com/aide.html");
	Ajouter(fichier, 1, "Fiches techniques", "http://www.moulinsduquercy.com/aide.html#fiches");
	Ajouter(fichier, 0, "Liens", "http://www.moulinsduquercy.com/liens.html");	


// L'objet Element
function Element(type, profondeur, pere, texte, lien)
{
	this.type = type;
	this.profondeur = profondeur;
	this.pere = pere;
	this.ouvert = false;
	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 style='position:relative; left:" + 10 * this.profondeur + "px'><font face='Verdana' style='font-size: 9pt'><b>"
	//for (var i = 0; i < this.profondeur; i++) {chaine += "&nbsp;&nbsp;";} // petit décalage
	if (this.type == fichier)
		{chaine += "<a href='" + this.lien + "' onMouseOver=\"window.status='Ouvrir " + this.texte + "'; return true;\" onMouseOut=\"window.status=''; return true;\">" + this.texte + "</a>";}
	else
		{chaine += "<a href='#' OnMouseDown='Menu[" + n + "].Changer();' target='_top' onMouseOver=\"window.status='" +((this.ouvert) ? "Fermer " : "Etendre ") + this.texte +"'; return true;\" onMouseOut=\"window.status=''; return true;\">" + this.texte + "</a>"}
	return chaine + "</font></td></tr>";
}
Element.prototype.Ecrire = Ecrire;

// Fonction d'ajout d'un élément au menu
function Ajouter(type, profondeur, texte, lien)
{
	nb++;
	var pere = nb - 1;
	while (pere != 0 && Menu[pere].profondeur >= profondeur) {pere--;}
	Menu[nb] = new Element(type, profondeur, pere, 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 = "<table>";
	for (var i = 1; i < Menu.length; i++)
	{
		chaine += Menu[i].Ecrire(i);
	}
	chaine += "</table>";
	document.getElementById('menu').innerHTML = chaine;
}
