/* iubito's menu - http://iubito.free.fr/prog/menu.php - configuration du javascript - revue par david foucher*/

var affich;
/* true = le menu sera vertical, ? gauche.
   false = le menu sera horizontal, en haut. */
var vertical = false;

/* TRES IMPORTANT !
	Il faut mettre ici le nombre de menus, le script n'est pas capable de compter tout
	seul ! :-p Donc si votre code va jusqu'? <p id="menu5"...> il faut mettre 5. */
var nbmenu = 3;

/* Centrer le menu ? (true/false).
	Centre horizontalement ou verticalement suivant le mode choisi. */

var centrer_menu = true;

/* Largeur de la barre de menu.
	R?gler ce param?tre seulement si largeur_menu n'est pas d?finie.
	*/

var largeur_totale = 730;

/* On est oblig? de d?finir une largeur pour les menus.

	Pour mettre des menus de largeurs diff?rentes :

	var largeur_menu = new Array(largeur menu1, largeur menu2, largeur menu3...)

	Il faut faire attention ? mettre autant de valeurs que de nombre de menu !

	Attention, si vous ?tes en menu vertical, mettez une largeur fixe (pas de Array) !

	*/
var largeur_menu = false;


/* En mode vertical, on a besoin de conna?tre la hauteur de chaque menu.
	M?me si les "cases" ne sont pas dimensionn?es en hauteur.
	Ajustez cette variable si les menus sont trop rapproch?s ou espac?s en vertical.

	Pour mettre des menus de hauteurs diff?rentes :

	var hauteur_menu = new Array(hauteur menu1, hauteur menu2, hauteur menu3...)

	Il faut faire attention ? mettre autant de valeurs que de nombre de menu !

	Attention, si vous ?tes en menu horizontal, mettez une largeur fixe (pas de Array) !

	*/
var hauteur_menu = 15;


/* En mode horizontal.
	Largeur des sous-menus, pour IE uniquement, les autres navigateurs respectent la largeur
	auto. Mettez "auto" uniquement si vous ?tes s?r d'avoir mis des &nbsp; ? la place des
	espace dans les items !

	Pour mettre des sous-menus de largeurs diff?rentes :

	var largeur_sous_menu = new Array(largeur1, largeur2...).

	Il faut faire attention ? mettre autant de valeurs que de menus.

	Si un menu n'a pas de sous-menus, il faut mettre quand m?me quelque chose !

	Il est possible de mettre "auto" dans certaines colonnes, ? condition de respecter la

	consigne ci-dessus.

	*/
var largeur_sous_menu = 150;



/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette

	option (active par d?faut) permet d'avoir une largeur automatique. En cas contraire

	(false), les sous menus auront la largeur largeur_sous_menu. */

var largeur_auto_sousmenu = true;

/* ... pour mettre un peu d'espace entre les menus ! */
var espace_entre_menus = 1;


/* position du menu par rapport au haut de l'?cran ou de la page.
	0 = le menu est tout en haut. en px */

var top_menu = 10;

/* En version horizontale.
	position des sous-menus par rapport au haut de l'?cran ou de la page. Il faut pr?voir
	la hauteur des menus, donc ne pas mettre 0 et faire "? t?ton". en px */

var top_sousmenu = 46;

/* Position gauche du menu, en px. */

var left_menu = 0;

/* En version verticale.
	Position des sous-menus par rapport au bord gauche de l'?cran. */
var left_sousmenu = largeur_menu+2;


/* Quand la souris quitte un sous-menu, si le sous-menu disparait imm?diatement,
	cela g?ne l'utilisateur. Alors on peut mettre un d?lai avant disparition du sous-menu.
	500 ms c'est bien :-) */

var delai = 650; // en milliseconde

/* En version horizontale.
	Comme le menu peut se superposer avec le texte de la page, il est possible de faire
	descendre un peu la page (on augmente la marge du haut) pour a?rer un peu la page,
	une quarantaine de pixel c'est pas mal. en px*/
var marge_en_haut_de_page = top_menu + 18;
/* En version verticale.
	On d?cale le document ? droite pour pas que le menu le superpose. */
var marge_a_gauche_de_la_page = largeur_menu;


/* Mettez ? true si vous souhaitez que le menu soit toujours visible.
	Mettez false si vous ne le souhaitez pas, dans ce cas le menu "dispara?tra" quand vous
	descendrez dans la page. */
var suivre_le_scroll=false;


/* Pour IE uniquement, les balises <select> passent toujours au-dessus du menu, donc

	par d?faut on cache les listes d?roulantes quand le menu est ouvert, puis on les fait

	r?appara?tre ? la fermeture du menu. Pour emp?cher ?a, mettre ? false. */

var cacher_les_select=true;


var timeout; //ne pas toucher, c'est pour d?clarer la variable
var agt = navigator.userAgent.toLowerCase();
var isMac = (agt.indexOf('mac') != -1);
var isOpera = (agt.indexOf("opera") != -1);
var IEver = parseInt(agt.substring(agt.indexOf('msie') + 5));
var isIE = ((agt.indexOf('msie')!=-1 && !isOpera && (agt.indexOf('webtv')==-1)) && !isMac);
var isIE5win = (isIE && IEver == 5);
var isIE5mac = ((agt.indexOf("msie") != -1) && isMac);
var blnOk=true;
//pour enlever les "px" pour faire des calculs...

var reg = new RegExp("px", "g");
// pour traiter les sous-sous menus
var class_name = "sousmenu";
var prefixe_class_name = "sous";

var compteur = 0; 
var myicollect = new Object();
// onScroll pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs
// qui respectent les normes CSS...
function handleError() {
        return true;
}

function preChargement() {
	if (document.getElementById("conteneurmenu"))
	{
		document.getElementById("conteneurmenu").style.visibility="hidden";

	}
}


function Chargement() {

	if (!blnOk) {
		if(document.body.style.backgroundColor!="") { blnOk=false; }
		if(document.body.style.color!="") { blnOk=false; }
		if(document.body.style.marginTop!="") { blnOk=false; }
		if(document.getElementById) {
			with(document.getElementById("conteneurmenu").style) {
				if(position!="" || top!="" || left!=""
						|| width!="" || height!="" || zIndex!=""
						|| margin!="" || visibility!="") {
					blnOk=false;
				}
			}
		}
		else{
			blnOk=false;
		}

	}


	if(blnOk)
	{

		document.getElementById("conteneurmenu").style.visibility="hidden";
		

		trimespaces();
		


		
		//SeeNodes('ul');

		positionne();

		CacherMenus();
		//AfficheTest();
	}

	// comme on a ?vit? le clignotement, maintenant on fait appara?tre le menu ;-)
	document.getElementById("conteneurmenu").style.visibility='visible';
}

function ReChargement() {
	Chargement();
	positionneautre();
	}

window.onresize = ReChargement;


/*

 * Place les ?l?ments du menu correctement, au chargement, au scroll, au redimensionnement

 * de la fen?tre

 */
 
function positionneautre() {


if (document.getElementById("menuadmin"))
document.getElementById("menuadmin").style.left=left_menu+"px" ;

if (left_menu == 0)centrer();

document.getElementById("tableauprincipale").style.left = left_menu+"px" ;
document.getElementById("tableauprincipale").style.top = marge_en_haut_de_page+"px" ;
document.getElementById("conteneurmenu").style.top = marge_en_haut_de_page+"px" ;

}
 
 
 function centrer(){
 if (!isMac){
	var largeur_fenetre = (isIE?document.body.clientWidth:window.innerWidth);
	var hauteur_fenetre = (isIE?document.body.clientHeight:window.innerHeight);
	}else{
	var largeur_fenetre = (isIE5mac?document.body.clientWidth:window.innerWidth);
	var hauteur_fenetre = (isIE5mac?document.body.clientHeight:window.innerHeight);}
	if (centrer_menu) {
		if (!vertical) {
			if (!isFinite(largeur_totale)) {
//			var largeur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(largeur_menu))
				largeur_totale += largeur_menu * nbmenu;
			else {
				for (i = 1; i <= nbmenu; i++)
					largeur_totale += largeur_menu[i-1];
			}
			}
			left_menu = (largeur_fenetre - largeur_totale)/2;
		} else {
			var hauteur_totale = espace_entre_menus * (nbmenu-1);
			if (isFinite(hauteur_menu))
				hauteur_totale += hauteur_menu * nbmenu;
			else {
				for (i = 1; i <= nbmenu; i++)
					hauteur_totale += hauteur_menu[i-1];
			}
			top_menu = (hauteur_fenetre - hauteur_totale)/2;
		}
	}
	
	}
 
 

function positionne() {	
	centrer();

	//Menus
	var cumul = 0;
	for(i=1;i<=nbmenu;i++) {
		with(document.getElementById("menu"+i).style) {

				left=(((i-1)*espace_entre_menus)+cumul+left_menu)+"px";
                 position="absolute";
			     top=marge_en_haut_de_page+"px";
			     margin="0";
			     zIndex="2";
				largeur_menu=Math.round((largeur_totale-((nbmenu-1)*espace_entre_menus))/nbmenu);
				width = largeur_menu+"px";
				cumul += largeur_menu;
	       }
}
	//Sous-menus
	var cumul = 0;
	for(i=1;i<=nbmenu;i++) {
	  if (document.getElementById("sousmenu"+i))//undefined
	  {
	  	with(document.getElementById("sousmenu"+i).style) {
	  		if (!suivre_le_scroll || isIE || isIE5mac)
	  			position="absolute";
	  		else position="fixed";
	  		
	  			top=top_sousmenu+"px";
	  			left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px";
    
	  		if (isIE || isOpera || isIE5mac || !largeur_auto_sousmenu) {
	  			if (isFinite(largeur_sous_menu))
	  				width = largeur_sous_menu+(largeur_sous_menu!="auto"?"px":"");
	  			else
	  				width = largeur_sous_menu[i-1]+(largeur_sous_menu[i-1]!="auto"?"px":"");
	  		}
	  		else width = "auto";
	  		//if (!vertical && !isIE5mac) {
	  		//	//repositionnement si d?borde ? droite
	  		//	if ((width != "auto") && ((left.replace(reg,'').valueOf()*1 + width.replace(reg,'').valueOf()*1) > largeur_fenetre))
	  		//		left = (largeur_fenetre-width.replace(reg,'').valueOf())+"px";	
	  		//}
	  		margin="0";
	  		zIndex="3";
	  	}
	  }
	  	cumul += largeur_menu;
	}

	var noeuds = document.getElementsByTagName("div")[0].firstChild;	
	var ligne2 = 0;
	
	while (noeuds != null){

	if (noeuds.nodeName == "P"){var ligne = 0;}	
		if (noeuds.nodeName == "UL"){
			AfficheSousMenus(noeuds, ligne); 			
		}
			noeuds=noeuds.nextSibling;
	}
}



function AfficheSousMenus(mynoeuds, ligne){
//affic++;

//window.alert(mynoeuds.childNodes.length+" "+compteur);

for (i=0;i<mynoeuds.childNodes.length;i++)


				{
				//window.alert("i :  "+i+" et mynoeud : "+(mynoeuds.childNodes.length-1)+" "+mynoeuds.childNodes[i].nodeName+" "+mynoeuds.childNodes[i].parentNode.nodeName);
				
				
				//myicollect[compteur]=i;
									
						//if (i == (mynoeuds.childNodes.length-1)){
						//i = myicollect[(compteur-1)] + 1;
						//compteur--;
						//window.alert("COMPTEUR i :"+i+"compteur: "+compteur+" "+mynoeuds.nodeName);
						//AfficheSousMenus(mynoeuds.parentNode, ligne2);
						//}	
				if (!mynoeuds.childNodes[i].hasChildNodes()){continue;}
			
				

				 noeud2 = mynoeuds.childNodes[i].firstChild;
					
					if (mynoeuds.childNodes[i].nodeName == "LI"){ligne+=1;}
					//for (j=0; j<mynoeuds.childNodes[i].childNodes[j]; j++){
					while (noeud2 != null){
							
						
						if (noeud2.parentNode.nodeName == "LI" || noeud2.parentNode.nodeName == "DIV"){var ligne2 = 0;}
						if (noeud2.nodeName == "UL"){
					
						//compteur++; 	
								
							if(noeud2.className != "sousmenu1"){

								with(noeud2.style)
								{
		
							position="absolute";
							left=largeur_sous_menu+"px";
							top = ((ligne*hauteur_menu)-hauteur_menu)+	"px";

							//border="1px";
							//borderStyle="solid";
							zIndex="3";
								}
							}
					
							//if(!noeud2.hasChildNodes()){continue;}
							//if(affic == 1){window.alert("n "+affic); return;}
	//le pb doit etre qu'il faut r?affecter les variables dans leur ?tat pr?cedent l'appelle de la fonction r?cursive une fois que cette derni?re ai ?t? jusqu'au bout...
	// genre AfficheSousMenu(noeud2.parentNode, ligne) -> voir utilisation de variables tableaux	
				
						
						
						 //AfficheSousMenus(noeud2, ligne2);continue;
	//					if (noeud2.childNodes[0].firstChild.length>2){
	//					AfficheSousMenus(noeud2, ligne2);}
						}
				
						
						noeud2=noeud2.nextSibling;
						
					}
					
				}
			
}			
function MontrerMenu(strMenu) {
	if(blnOk) {
		AnnulerCacher();
		CacherMenus();
		CacherAllCalque();
		if (document.getElementById(strMenu))//undefined
			with (document.getElementById(strMenu).style)
				visibility="visible";
	}
	SelectVisible("hidden",document.getElementsByTagName('select'));
}

function MontrerSousMenu(strMenu) {
	if(blnOk) {
		AnnulerCacher();
		CacherSousMenus(strMenu);
		if (document.getElementById(strMenu))//undefined
			document.getElementById(strMenu).style.visibility="visible";
	}
	SelectVisible("hidden",document.getElementsByTagName('select'));
}



function CacherDelai() {
	if (blnOk) {
		timeout = setTimeout('CacherMenus()',delai);
	}
}

function Test(Monmessage) {
	if (blnOk) {
	
		window.alert(Monmessage);
	}
	}

function Test2(Monmessage) {
	if (blnOk) {
	
		document.write(Monmessage);
	}
	}
//function CacherDelaiSousMenus(ul_class) {
//if (blnOk) {
	//window.alert(ul_class);
	//CacherSousMenus(ul_class);
//	timeout = setTimeout('CacherSousMenus("'+ ul_class +'");',delai);
//	}	
	
//}
		
function AnnulerCacher() {
	if (blnOk && timeout) {
		clearTimeout(timeout);
	}
}
function CacherMenus() {
	if(blnOk) {
		for(i=1;i<=nbmenu;i++) {
			if (document.getElementById("sousmenu"+i))//undefined
				with(document.getElementById("sousmenu"+i).style)
					visibility="hidden";

		}
		for(i=0;i<document.getElementsByTagName("ul").length;i++) {
		if(document.getElementsByTagName("ul")[i].className != "sousmenu" && document.getElementsByTagName("ul")[i].className != "menuadminItem")
			document.getElementsByTagName("ul")[i].style.visibility="hidden";
			}
			//document.write(document.getElementsByTagName("ul")[4].data);
	}
	SelectVisible("visible",document.getElementsByTagName('select'));
}


function CacherAllCalque () {
	if (document.getElementById("imgfond")){
	for(i=0;i<document.getElementsByTagName("div").length;i++) {
		if(document.getElementsByTagName("div")[i].id != "imgfond")
			document.getElementsByTagName("div")[i].style.visibility="hidden";
			}
}
	

}

function CacherCalque() {
		
		timeout = setTimeout('CacherAllCalque()',delai);

}

function CacherSousMenus(ul_class) {
	if(blnOk) {

	if (ul_class == "sousmenu1"){
	CacherDelai();
	
	}
	else {
	
			for(i=0;i<document.getElementsByTagName("ul").length;i++) {
		if(document.getElementsByTagName("ul")[i].className == ul_class)
			document.getElementsByTagName("ul")[i].style.visibility="hidden";
			}
			}
	}
}
				


function trimespaces() {
	//Contourne un bug d'IE5/win... il ne capte pas bien les css pour les <li>, donc on les vire !
	if(blnOk&&isIE5win) {
		for(i=1;i<=nbmenu;i++) {
			if (document.getElementById("sousmenu"+i))//undefined
				with(document.getElementById("sousmenu"+i))
					innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
		}
	}
}

function SelectVisible(v,elem) {
	if (blnOk && cacher_les_select && (isIE||isIE5win))
		for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}

function AfficheTest() {
	window.alert("affiche : "+affich);
	}

function confirmation(url, message) {

if (window.confirm(message)){

	window.location.href = url;}

}

function confirmation_mailToUser (message){

if (window.confirm(message)){
	
	document.userForm.sendMailNow.value=true;
	
	}
	
}

function SeeNodes (tag) {
text="liste des noeuds<br>";


		for (tn=0;tn<document.getElementsByTagName(tag).length;tn++){
		text += "<br>"+tag+"->Noeud enfant :";
		text += document.getElementsByTagName(tag)[tn].childNodes.length+"<br>\n";
		text += document.getElementsByTagName(tag)[tn].parentNode.nodeName+" \n";
		text += document.getElementsByTagName(tag)[tn].className+" \n";
		for (i=0;i<document.getElementsByTagName(tag)[tn].childNodes.length;i++)
		{
		if (document.getElementsByTagName(tag)[tn].childNodes[i].nodeName == "#text"){
		text += document.getElementsByTagName(tag)[tn].childNodes[i].nodeName+" \n";}else{
		text += document.getElementsByTagName(tag)[tn].childNodes[i].nodeName+" \n";
		
		}
		
		}}
		document.write(text);}
