

		//fonction permettant de charger la page en ajax
		function chargerPage(nompage, noajax)
		{
			//alert(nompage + " " + noajax);    
			//document.getElementById('centre').innerHTML='<span class=\"titre1inversechargement\">&nbsp;<img src=\"images/sablier.ico\" width=\"20\"/> Chargement de la page... </span>'  ;    
			document.getElementById('zontitre1').innerHTML='&nbsp;<img src="images/sablier.ico" width="20"/> Chargement de la page... '  ;
			executerajax(nompage,noajax,'centre');
		}	
				
		function clicknoeud(idnoeud,nompage,noajax)
		// fonction appelée sur click du noeud idnoeud. nompage est le nom de la page a ouvrir, avec son parametre ajax
		{
			var affichereduit=0; //affichage réduit (1) ou développé (0)
			if (document.frmreduit.rdoreduit[1].checked) 
			{
				affichereduit=1;
			}
			
			var divcourant = document.getElementById(idnoeud); //idnoeud est un div
			//alert("click sur noeud" + divcourant.innerHTML + " " + nompage + noajax);

			var licourant = divcourant.parentNode; //élément parent du div (un li)
			var lesulfils = licourant.getElementsByTagName('UL');// liste des fils UL correspondant au div courant
			var ulpere=licourant.parentNode; //acces a l'UL Pere
			
			//on met tous les div de chaque frere a normal			
			var lesdivfreres=ulpere.getElementsByTagName('DIV');//liste de tous les div descendants du pere
			for(var j=0;j<lesdivfreres.length;j++){
				//alert(lesdivfreres[j].innerHTML);
				lesdivfreres[j].style.fontWeight='normal';
			}
			//On est en mode réduit - on n'est pas sur une feuille ni à la racine : On efface les frères
			if(affichereduit==1 && lesulfils.length!=0 && licourant.className!="niv0"){ 
				for(var j=0;j<lesdivfreres.length;j++){					
					lesdivfreres[j].style.display='none';
				}
			}		
					
			//on met le div du noeud ou de la feuille en gras
			divcourant.style.fontWeight='bold';	
			divcourant.style.display='block'; // On affiche le courant


			
			//s'il y a une page, on l'affiche
			if(nompage!="")  
				chargerPage(nompage,noajax);
			// c'est un noeud et non une feuille, il faut l'ouvrir ou le fermer	
			if(lesulfils.length!=0)
			{		
			//Cas où on aurait utilisé affichereduit : On rend fisible les fils du div courant - pour chaque fils, on rend visible son div
			//for(var j=0;j<lesulfils.length;j++){
				lesdiv=lesulfils[0].getElementsByTagName('DIV');
				for(var k=0;k<lesdiv.length;k++){
				lesdiv[k].style.display='block';
				}			
			//	}		
					
				if(lesulfils[0].style.display=='' || lesulfils[0].style.display=='none'||affichereduit==1){ // le noeud était fermé : on l'ouvre //||affichereduit==1
					//on ferme les freres	
					var lesulfreres=ulpere.getElementsByTagName('UL');//on récupere tous les UL descendants du pere					
					for(var no=0;no<lesulfreres.length;no++){
						lesulfreres[no].style.display = 'none';
					}		
					//on ouvre le bloc du noeud idnoeud
					lesulfils[0].style.display = 'block'; //on affiche l'UL du noeud idnoeud
				}else{ // le noeud était ouvert : on ferme son UL, ainsi que tous les UL fils
					for(var no=0;no<lesulfils.length;no++){
						lesulfils[no].style.display = 'none';
					}
					//on remet le noeud en font normale	
					divcourant.style.fontWeight='normal';
					//On affiche ses frères : Cas où ils ne seraient pas visibles à cause du mode réduit
					for(var j=0;j<lesdivfreres.length;j++){
						//alert(lesdivfreres[j].innerHTML);
						lesdivfreres[j].style.fontWeight='normal';
						lesdivfreres[j].style.display='block';
					}				
					//divcourant.style.backgroundColor='white';	
				}
			}
			else { //click sur une feuille
				//on ferme les freres	
				var lesulfreres=ulpere.getElementsByTagName('UL');//on récupere tous les UL descendants du pere					
				for(var no=0;no<lesulfreres.length;no++){
					lesulfreres[no].style.display = 'none';
				}	
			}

		}
		function toutfermer(){
		//ferme tout l'arbre (sauf les feuilles de niveau 0)
			var arbo=document.getElementById("ul0");
			var lesul=arbo.getElementsByTagName("UL");
			for(var no=0;no<lesul.length;no++){
					lesul[no].style.display = 'none';
			}
		}
		
		function afficherref(uneref,lesparam)
		//ouvre l'arborescence jusqu'a la référence uneref
		//lesparam sont des paramètres éventuels pour ouvrir l'exercice avec déjà les questions données
		//!!!!!!!!!!!!!!!!!il faudrait retirer tous les caracteres qui ne sont pas des chiffres dans la ref
		{
			//alert(uneref+" "+lesparam);
			var lediv=document.getElementById("div"+uneref);
			if(!lediv || lesparam!=""){ //la référence n'a pas été trouvée dans l'arbo ou il y a un no de série : on va chercher dans la bd
				//on affiche quand meme la page - 
				// cas aussi où il y a une série en paramètre à afficher -> besoin d'aller chercher dans la BD
				//récupération en ajax du nom de la page suivi des parametres
				var xhr = getXhr();
				// Définition du comportement a tenir lorsque la solution asynchrone du serveur sera réceptionnée
				xhr.onreadystatechange = function()
				{	
					if(xhr.readyState == 4 && xhr.status == 200)
					{  // Récupération de la solution serveur et passage de cette solution en parametre a la correction Javascript
						//alert(xhr.responseText);
						eval(xhr.responseText); // recupération de la variable page et rubajaxpage
						//alert(page);
						if(page==""){
							alert("Cette référence n'existe pas.");
						}else{
							toutfermer();
							ouvrir(lediv,0); //on ouvre l'arborescene, mais on ne clique pas sur la feuille : 0
							page=page+lesparam;
							//fct de menu.js
							chargerPage(page, rubajaxpage);
						}
					}
				}
				// Appel effectif Ajax au serveur pour chercher la page demandée
				//xhr.open("GET",'gestionouvrirpage.php',true);
				xhr.open("GET",'gestionouvrirpage.php?ref='+uneref,true);
				xhr.send(null);	
				
			}
			else{ //la référence existe
				ouvrir(lediv,1);
			}
			
		}
		
function ouvrir(lediv,feuilleouvrir){
//permet d'ouvrir l'arbo jusqu'à lediv.
//si feuilleouvrir vaut 1, on click sur uneref
//s'il vaut 0, on ne l'ouvre pas
				var tabarbo = new Array(); //tableau de tous les divs parents (pour les ouvrir)
				
				divcour=lediv;
				tabarbo[0]=divcour;
				var licour=divcour.parentNode;
				var ulcour=licour.parentNode;
				var lepere=ulcour.parentNode;
				var no=0;
				while(lepere.tagName!="DIV"){ //tant qu'on est pas sur un élément racine
					no++;
					divcour=lepere.getElementsByTagName('DIV')[0];
					tabarbo[no]=divcour;
					//on remonte de trois niveaux : li puis ul puis li ou div si racine
					licour=divcour.parentNode;
					ulcour=licour.parentNode;
					lepere=ulcour.parentNode;
	
				}
				toutfermer(); // on ferme tout ce qui était ouvert
				//on parcours l'arbo jusqu'a la feuille a atteindre pour l'ouvrir
				if(feuilleouvrir==0) //s'il ne faut pas ouvri la feuille, on ne click pas dessus
					{
					min=1; //on s'arrête dans les clicks eu noeud parent de la feuille à afficher
					}
				else
					min=0;
				for(i=tabarbo.length-1;i>=min;i--)
				{
					//alert(tabarbo[i].id);
					tabarbo[i].onclick();
					tabarbo[0].style.fontWeight='bold';	//pour le cas où on ne clique pas sur la feuille : appel de la page fait autrement avec paramères(voir afficherref)
				}
}
function ouvrirarbosansclic(uneref)
//pour ouvrir l'arborescence sans cliquer sur la feuille
{
			var lediv=document.getElementById("div"+uneref);
			if(lediv) //la ref existe dans l'arbo
			{
				ouvrir(lediv,0) //on ouvre sans cliquer
			}
	
}
