// généation de barre de menus
// M.desgranges mar oct 11 21:47:10 CEST 2005
// mar nov 1 16:23:14 CEST 2005
// contact: mdesg@kitryp.com
// www.kitryp.com
// ######## NOTE ##########
// 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 
// regarder dans le source,çe seras moin dure a expliquer :)
// ------------------------------------------------------------
// normallement y'a rien a toucher dans le javascript ici :)
// ------------------------------------------------------------


ct_menu = -1;
ct_ssmenu = 0;
valMenu = 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(titre) {
        ct_menu++;
    valMenu[ct_menu] = titre;
    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); 
    // Affichage du menubarder
    tmp_menu += "<TABLE  width='" + widthMenu + "'  class='" + cssClass  + "' border='0' cellpadding='0' cellspacing='"+cellspacing+"'><TR valign=\"top\" >";
    for (i=0;i<nbMenu;i++) {
        tmp_menu += "<TD width='" + tailleCellule + "'  id=\"" +nom_menu + i + "\" class=\"" + cssClass  + "\" onMouseOut=\"timeClose('ssMenu_" + nom_menu + i +"','" + menuTimeout +"')\" onMouseOver=\"javascript:changeMenu('ssMenu_" + nom_menu + i +"');menu_clear_timer();\"  onClick=\"changeMenu('ssMenu_" + nom_menu + i +"')\">"+ valMenu[i] +"</TD>";
    }
    tmp_menu += "</TR></TABLE>";
    //on met un petit élement pour jouer avec ...
    tmp_menu += "<DIV style=\"position:relative;height:0px;width:"+widthMenu+"px;overflow:visible;\">";
    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 * tailleCellule ) + 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 += "<DIV id=\"ssMenu_" + nom_menu + i +"\" class=\"" + cssClass  + "\" onMouseOver=\"menu_clear_timer()\" onMouseOut=\"timeClose('ssMenu_"+ nom_menu + i +"','" + menuTimeout +"')\"  style=\"width:"+ widthSsMenu +"px;position:absolute;visibility:hidden;left:"  + Cellpos +"px;top:0px;\">";
            for (z=0;z<valSsMenu[i].length;z++) {
                // On affiche les liens
            
                    
                    newTable += "<a style=\"display:block;\" href=\""+valSsMenuLien[i][z]+" \" class=\"" + cssClass  + "\"  " +  valSsMenuExtra[i][z]  + " target='"+ valSsMenuCible[i][z] +"' >"+ valSsMenu[i][z] + "</a>";
            }
            newTable += "</DIV>";
        }
    }
    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) 
    }
    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);
    }
}
