
// fonction magique pour rajouter une fonction sur un évenement
// je l'ai pas inventée http://ejohn.org/projects/flexible-javascript-events/
function addEvent( obj, type, fn ) {
    if ( obj.attachEvent ) {
        obj['e'+type+fn] = fn;
        obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
        obj.attachEvent( 'on'+type, obj[type+fn] );
    } else {
        obj.addEventListener( type, fn, false );
    }
}
function removeEvent( obj, type, fn ) {
    if ( obj.detachEvent ) {
        obj.detachEvent( 'on'+type, obj[type+fn] );
        obj[type+fn] = null;
    } else {
        obj.removeEventListener( type, fn, false );
    }
}

// fonction qui récupère un élément par son id
function getId(id) {
    if(document.all) {
        return document.all[id];
    } else {
        return document.getElementById(id);
    }
}

// affiche ou cache la liste associée à un span
function afficheCache() {
    // on récupère la liste associée
    var ul = this.parentNode.getElementsByTagName("ul")[0];
    if(ul.style.display=='none') {
        ul.style.display='block';
    } else {
        ul.style.display='none';
    }
}

// fonction executée au chargement de la page
addEvent(window,"load",function() 
	{
    // la liste principale
    var ul = getId("menu_colonne").getElementsByTagName("ul")[0];
    // on parcourt les sous-listes et on les cache toutes
		if (ul) // ontest si ul existe sur la page
		{
		var uls = ul.getElementsByTagName("ul");

		for(i=0;anUl = uls[i]; ++i) {
			anUl.style.display='none';

		}
		// on parcourt les span et on leur attache la fonction afficheCache
		var spans = ul.getElementsByTagName("span");
		for(i=0;span=spans[i];++i) {
			addEvent(span,"click",afficheCache);
		}
		// on récupère l'élément avec l'id "current"
		var pere = getId("current");
		if(pere != null)
			{
				var currentUls = pere.getElementsByTagName("ul");
				if(currentUls.length != 0) 
				{
					currentUls[0].style.display = "block";
				}
				// on remonte dans ses parents jusqu'à la liste principale
				// en affichant la liste à chaque niveau
				while(pere != ul) 
				{
					if(pere.tagName=="UL") {
						pere.style.display = "block";
					}
					if(pere.tagName=="LI" && pere.firstChild.tagName=="SPAN") {
						removeEvent(pere.firstChild,"click",afficheCache);
					}
					pere = pere.parentNode;
				}
			}
		}
	}
);


