// Fonction qui affiche/cache un menu
function expand(li) {
	var node = li.firstChild;
	var img = li.firstChild;
	var imgdoss;
	// parcours tous les fils pour trouver l'element UL
	while ( node.nodeName != "UL" )
		node = node.nextSibling;
	// parcours tous les fils pour trouver l'element IMG
	while ( img.nodeName != "IMG" )
		img = img.nextSibling;	
	imgdoss=img.nextSibling;
	// affiche le menu
	if (node.nodeName == "UL") {
		if ( node.style.display == 'none' ) {
			node.style.display = 'block';
			if(img.nodeName == "IMG") {
				img.src = 'img/minus.gif';
				img.alt = '[-]';
			}
			if(imgdoss.nodeName == "IMG") {
				imgdoss.src='/images/icone-dossier-ouvert.gif';
			}
		}
		// cache le menu
		else {
			node.style.display = 'none';
			if(img.nodeName == "IMG") {
				img.src = 'img/plus.gif';
				img.alt = '[+]';
			}
			if(imgdoss.nodeName == "IMG") {
				imgdoss.src='/images/icone-dossier-ferme.gif';
			}
		}
	}
}

// Fonction qui affiche un menu ainsi que tous les menus supérieurs
function expandMultiple(id) {
	// recupere la source du clic
	a = document.getElementById(id);
	// recupere le menu a afficher
	var ul = a;
	while ( ul.nodeName != "UL" ) {
		ul = ul.nextSibling;
	}
	// affiche le menu et les menus supérieurs
	while(ul.nodeName=="UL") {
		if(ul.id != 'racine') {
			expand(ul.parentNode);
			ul = ul.parentNode.parentNode;
		}
	}
}

// Fonction qui cache tous les menus
function collapseMultiple() {
	// Recupere le menu de niveau 1
	niv1 = document.getElementById("niv1");
	// recupere tous les menus dépliants
	var tab_ul = niv1.getElementsByTagName("UL");
	var nb = tab_ul.length;
	// cache tous les menus
	for(var i=0; i<nb; i++) {
		expand(tab_ul[i].parentNode);
	}
	
	// Recupere le menu de niveau 2
	niv2 = document.getElementById('niv2');
	// recupere tous les menus dépliants
	var tab2_ul = niv2.getElementsByTagName("UL");
	var nb2 = tab2_ul.length;
	// cache tous les menus
	for(var i=0; i<nb2; i++) {
		expand(tab2_ul[i].parentNode);
	}
	
	// Recupere le menu de niveau 3
	niv3 = document.getElementById('niv3');
	// recupere tous les menus dépliants
	var tab3_ul = niv3.getElementsByTagName("UL");
	var nb3 = tab3_ul.length;
	// cache tous les menus
	for(var i=0; i<nb3; i++) {
		expand(tab3_ul[i].parentNode);
	}
	
	/*
	// Recupere le menu de niveau 4
	niv4 = document.getElementById('niv4');
	// recupere tous les menus dépliants
	var tab4_ul = niv4.getElementsByTagName("UL");
	var nb4 = tab4_ul.length;
	// cache tous les menus
	for(var i=0; i<nb4; i++) {
		expand(tab4_ul[i].parentNode);
	}
	*/
	
}

// Fonction qui initialise l'arborescence
function initArbo(menu, smenu) {
	// ferme tous les menus
	collapseMultiple();
	// ouvre le smenu courant (passé en GET) si il existe
	if(document.getElementById(smenu)) {
		expandMultiple(smenu);
	}
	else {
		// sinon ouvre le menu courant (passé en GET) si il existe
		if(document.getElementById(menu)) {
			expandMultiple(menu);
		}
	}
}