

/* ANCIENNE FONCTION 'toggle' */
function toggle_original(id){

   ul = "ul_" + id;
   img = "img_" + id;
   ulElement = document.getElementById(ul);
   imgElement = document.getElementById(img);

	if (ulElement){
		if (ulElement.className == 'closed'){
			/* SI ul fermé ALORS on l'ouvre */
			ulElement.className = "open";
			imgElement.src = "squelettes/opened.gif";
			
		} else {
			/* SI ul ouvert ALORS on le ferme */
			ulElement.className = "closed";
			imgElement.src = "squelettes/closed.gif";
		}
	}
	
}


/* hierarchie(listRubriques) : Ouvre sur la hiérarchie passée en paramètre */
function hierarchie(listRubriques) {

 var itemList = listRubriques;
 var restoredArray = itemList.split(",");
 var numberItem = restoredArray.length;

 for (i=0; i<numberItem; i++) {
     currentRub = restoredArray[i];
     ul = "ul_" + currentRub;
     img = "img_" + currentRub;
     ulElement = document.getElementById(ul);
     imgElement = document.getElementById(img);

     if (ulElement) {
         ulElement.className = "open";
         imgElement.src = "squelettes/opened.gif";
     }
	 
 }
}

/* initial(listRubriques) : Ferme l'ensemble des rubriques passées en paramètre */
function initial(listRubriques) {

 var itemList = listRubriques;
 var restoredArray = itemList.split(",");
 var numberItem = restoredArray.length;

 for (i=0; i<numberItem; i++) {
	currentRub = restoredArray[i];
	ul = "ul_" + currentRub;
	img = "img_" + currentRub;
	ulElement = document.getElementById(ul);
	imgElement = document.getElementById(img);

	if (ulElement) {
		ulElement.className = "closed";
		imgElement.src = "squelettes/closed.gif";
	}

 }
 
}

/* collectionToArray(collection) : Convertit une 'Collection' (une 'NodeList' étant une 'live collection') en un 'Array'
	(Cf. http://www.sitepoint.com/a-collection-is-not-an-array/ ) */
function collectionToArray(collection)  
{  
	var ary = [];  
	for(var i=0, len=collection.length; i < len; i++) {  
		ary.push(collection[i]);  
	} 
	return ary;  
}  


/* NOUVELLE FONCTION 'toggle' qui referme les rubriques de même niveau (développée par Carl VINCENT) */
function toggle(id){

	var ul = "ul_" + id;
	var img = "img_" + id;
	var ulElement = document.getElementById(ul);
	var imgElement = document.getElementById(img);
	
	/* Récupération du 'ul' parent contenant le "ul_id" :
	ulParent = ulElement (ul courant) -> (li parent) -> (ul parent) */
	var ulParent = ulElement.parentNode.parentNode; 
		
	/**** Récupération des 'li' se trouvant au même niveau que le 'li' sur lequel on a cliqué ****/
	var listeLiMemeNiveau = new Array(); // Tableau vide (~ une liste vide)
		
	//var listeLiMemeNiveau = collectionToArray( ulParent.children );
	/* !ATTENTION! : '.children' comprend aussi les "ul.ul_articles"! (mais leur id = "" donc ça ne gène pas!) */
	/* !ATTENTION! : L'attribut '.children' n'est pas compatible avec Firefox < 3.5 !!
		(Le code juste en dessous est équivalent, même si surement un peu plus lent...) */
	
	var childCourant = ulParent.firstChild; // Récupère le 1er child
	while (childCourant) {
	
		// SI le "childCourant" est un 'Node' de type 'li' ALORS on l'ajoute au tableau */
		if ( childCourant.nodeType == Node.ELEMENT_NODE /* == 1 */ 
		 &&  childCourant.nodeName.toLowerCase() == "li" ) 
		{
			listeLiMemeNiveau.push(childCourant); // Ajoute le child au tableau
		}
		
		childCourant = childCourant.nextSibling; // Passe au child suivant
	}
	
	var nbLiMemeNiveau = listeLiMemeNiveau.length;
	
	
	if( nbLiMemeNiveau > 1 ){
	
		var listRubriquesMmNiveau = "";
		var liCourant = "";
		
		for (i=1; i<=nbLiMemeNiveau; i++) {
		
			/* !ATTENTION! : Liste de 0 à (n-1) !! */
			liCourant = listeLiMemeNiveau[i-1]; 
			
			/* SI le 'liCourant' a un 'id' différent de "", ET différent de celui passé en paramètre (id) */
			if( liCourant.id != "" && liCourant.id != id ){
				listRubriquesMmNiveau += liCourant.id;
				
				/* Tant qu'on est pas au dernier, on rajoute une virgule */
				if( i != nbLiMemeNiveau ) { listRubriquesMmNiveau += ","; }
			}
		}
		
		/* Ouvre/Ferme la rubrique choisie ('id' passé en paramètre) ... */
		toggle_original(id);
		
		/* ... ET referme les autres rubriques de même niveau ! */
		initial(listRubriquesMmNiveau);
				
		
	} else { /* nbLiMemeNiveau == 1 (au moins lui-même donc != 0) */
		
		/* Ouvre/Ferme juste la rubrique choisie ('id' passé en paramètre) */
		toggle_original(id);
		
	}
	
		
}


