// généation de barre de menus

// pour afficher le menus appeler la fonction:
//       generationMenu('largeur de la barre','hauteur de la barre','nom_du_menu_menu','largeur des sous menu'); 
// pour la décoration modifiez le fichier css 


ct_menu = -1;
ct_ssmenu = 0;
valMenu = new Array();
valMenuURL = new Array();
valSsMenu = new Array();
valSsMenuLien = new Array();
valSsMenuCible = new Array();
valSsMenuExtra = new Array();
	
menu_last_open = '';

// un nouveau menu on remet à zero le compteur de sous menu..
// on fait les array...
function New_Menu(type) {
        ct_menu++;
	valMenu[ct_menu] = ( arguments[0] ) ? arguments[0] : 'Menu'+ct_menu;
	valMenuURL[ct_menu] = ( arguments[1] ) ?  arguments[1] : '';
	valSsMenu[ct_menu] = new Array();
	valSsMenuLien[ct_menu] = new Array();
	valSsMenuCible[ct_menu] = new Array();
	valSsMenuExtra[ct_menu] = new Array();
	ct_ssmenu = 0;
}
// le nom du lien, url, target
// vive les tablos ...
function Add_Menu(type) {
	nom = ( arguments[0] ) ? arguments[0] : '';
	url = ( arguments[1] ) ? arguments[1]  : '';
	targ = ( arguments[2] ) ?  arguments[2] : '';
	extra = ( arguments[3] ) ?  arguments[3] : '';

	valSsMenu[ct_menu][ct_ssmenu] =  new Array();
	valSsMenuLien[ct_menu][ct_ssmenu] =  new Array(); 
	valSsMenuCible[ct_menu][ct_ssmenu] = new Array(); 
	valSsMenuExtra[ct_menu][ct_ssmenu] = new Array();
	valSsMenu[ct_menu][ct_ssmenu] =  nom;
	valSsMenuLien[ct_menu][ct_ssmenu] =  url;
	valSsMenuCible[ct_menu][ct_ssmenu] =  targ;
	valSsMenuExtra[ct_menu][ct_ssmenu] = extra;
	ct_ssmenu++;
}

function generationMenu(type) {
	setMenuTimeout = 'st';
	tmp_menu = '';
	widthMenu = ( arguments[0] ) ? arguments[0] : 400;
	heightMenu = ( arguments[1] ) ? arguments[1] : 20;
	cssClass  = ( arguments[2] ) ? arguments[2] : 'menu';
	nom_menu= cssClass;
	// fixouille
	widthSsMenu = (arguments[3]) ? arguments[3] : 120;  // largeur du sous menu
	menu_spacer= (arguments[4]) ? arguments[4] : 0; // pour fixer les espacement entre cellulles ...
	menuTimeout = (arguments[5]) ? arguments[5] : 25; // pour fixer le delai de fermeture des menus ...
	cellspacing = ( arguments[6] ) ? arguments[6] : 0;
	
	nbMenu = ct_menu + 1;
	cssClass = ( cssClass ) ? cssClass: 'menu';
	//tailleCellule = Math.round(widthMenu / nbMenu); 
	tailleCellule =widthMenu;
	// Affichage du menubarder
	tmp_menu += "<div id=\"menu\">"
	tmp_menu += "<TABLE  width='" +tailleCellule+ "'  class='" + cssClass  + "' border='0' cellpadding='0' cellspacing='"+cellspacing+"'>";
	for (i=0;i<nbMenu;i++) {
		tmp_menu += "<TR class=\"" + cssClass  + "\">";
		if (valMenuURL[i]!="") {
			// Menu père qui n'affiche pas de sous-menu
			tmp_menu += "<TD width='" + tailleCellule + "'  id=\"" +nom_menu + i + "\" class=\"" + cssClass  + "\"  onMouseOver=\"javascript:changeMenu('');menu_clear_timer();changeImage(" + i + ", " + true + ");\" onMouseOut=\"changeImage(" + i + ", " + false + ")\" style=\"background-image:url(images/bouton"+(i+1)+".gif)\">";
			tmp_menu += "<a style=\"display:block;\"href=\""+valMenuURL[i]+" \" class=\"" + cssClass  + "\" >"+ valMenu[i] +"</a>";
		}
		else {
			// Menu-père qui va afficher un sous-menu
			tmp_menu += "<TD width='" + tailleCellule + "'  id=\"" +nom_menu + i + "\" class=\"" + cssClass  + "\" onMouseOut=\"javascript:timeClose('ssMenu_" + nom_menu + i +"','" + menuTimeout +"');changeImage(" + i + ", " + false + ");\" onMouseOver=\"javascript:changeMenu('ssMenu_" + nom_menu + i +"');menu_clear_timer();changeImage(" + i + ", " + true + ");\"  onClick=\"changeMenu('ssMenu_" + nom_menu + i +"')\" style=\"background-image:url(images/bouton"+(i+1)+".gif)\">";
			tmp_menu += valMenu[i];
		}
		tmp_menu += "</TD>";
		tmp_menu += "</TR>";
	}
	tmp_menu += "</TABLE>";
	tmp_menu += "</div>"
	//on met un petit élement pour jouer avec ...
	//tmp_menu += "<DIV style=\"position:absolute;top:10px;left:150px;height:0px;width:400px;overflow:visible;\">";
	tmp_menu += "<DIV id=\"sousmenu\">";
	tmp_menu += mk_menu(cssClass);
	tmp_menu += '</DIV>';
	document.write(tmp_menu);
	
	// on remet les chose dans l'état d'origine pour les autres menu
	ct_menu = -1;
	ct_ssmenu = 0;
	valMenu = new Array();
	valSsMenu = new Array();
	valSsMenuLien = new Array();
	valSsMenuCible = new Array();
	valSsMenuExtra = new Array();	
}

function mk_menu(cssClass) {
	var newTable="";
	var Cellpos = 0;
	for (i=0;i<valSsMenu.length;i++) {
		// on calcul la position du menu 
		Cellpos= ( i * (heightMenu+ menu_spacer) ) ;
		// fix le dèbordement de l'élément qui le contient (dernier menu)
		/*if ( (Cellpos + widthSsMenu ) >= widthMenu ) {
			Cellpos = widthMenu - ( widthSsMenu + menu_spacer );
		}*/
		if ( valSsMenu[i].length > 0 ) {
			//newTable += "<center>";
			newTable += "<DIV id=\"ssMenu_" + nom_menu + i +"\" class=\"" + cssClass  + "\" onMouseOver=\"menu_clear_timer()\" onMouseOut=\"timeClose('ssMenu_"+ nom_menu + i +"','" + menuTimeout +"')\"  style=\"top:"  + Cellpos +"px;\" >";
			//newTable += "<p style=\"vertical-align: middle;height:25px;\">";
			for (z=0;z<valSsMenu[i].length;z++) {
				// On affiche les liens
					newTable += "<strong>";
					newTable += "<a href=\""+valSsMenuLien[i][z]+" \" class=\"" + cssClass  + "_sousmenu\"  " +  valSsMenuExtra[i][z]  + " target='"+ valSsMenuCible[i][z] +"' >"+ valSsMenu[i][z] + "</a>";
					if (z<valSsMenu[i].length-1) newTable += "<BR>";
					newTable += "</strong>";
			}
			//newTable += "</p>";
			newTable += "</DIV>";
			//newTable += "</center>";
		}
	}
	return newTable;
}

function changeMenu(this_menu){
	// montre le menu et cache l'ancien
	//document.getElementById(this_menu).style.visibility = "visible";
	if ( menu_last_open != '' ) {
		suppMenu(menu_last_open) 
	}
	if (this_menu!='') document.getElementById(this_menu).style.visibility = "visible";
	menu_last_open = this_menu;
}

function suppMenu(this_menu) {
	// cache le menu
	document.getElementById(this_menu).style.visibility = "hidden";
}

function timeClose(this_menu,this_menuTimeout) {
	setMenuTimeout=setTimeout("suppMenu(\"" + this_menu+"\")", this_menuTimeout);
}
function menu_clear_timer() {
	if ( setMenuTimeout != 'st' ) {
		clearTimeout(setMenuTimeout);
	}
}

function changeImage(index, enfonce) {
	image = "images/bouton"+(index+1);
	if (enfonce) image += "_enf";
	image += ".gif";
	document.getElementById(nom_menu + index).style.backgroundImage="url(" + image + ")";
}