/************************************
 * Générateur de menus JavaScript   *
 * Copyright (c) 2006 H. Müller     *
 * Droits de reproduction réservés  *
 ************************************/

// Version 2.02, 17/12/2006, spécifique SPIP Villiers-sur-Orge

// Pour les libellés et les liens, voir le fichier : spipmenu.js

lastid = 'nul';		// id du dernier sous-menu ouvert ('nul' = aucun)

/*
 * Cookie de gestion de la rémanence de l'affichage d'un sous-menu ouvert.
 *	Sans ce cookie, un sous-menu ouvert est refermé automatiquement au
 *	rafraîchissement ou au recalcul de la page ainsi qu'à l'appel
 *	d'une autre page. Ce cookie permet de le garder ouvert jusqu'à ce qu'il
 *	soit refermé refermé par une action explicite de l'utilisateur.
 */

if (document.cookie != "") {
  myCookie = document.cookie.split("; ");
  for (i=0; i < myCookie.length; i++) {
    if (myCookie[i].split("=")[0] != "LastShownMenu") continue;
    lastid = myCookie[i].split("=")[1];
    break;
  } // for (i=0;...
} // if ((document.cookie != "")

function setCookie(id)
{
  document.cookie = 'LastShownMenu='+id;
}

/*
 * Ouverture et fermeture d'un sous-menu
 */

function showmenu(id)
{
  setCookie(id);
  lastid = id;
  if (id == 'nul') return;
  document.getElementById('sm'+id).style.display = "block";
  document.getElementById('sm'+id+'a').style.display = "block";
  document.getElementById('sm'+id+'b').style.display = "none";
}

function hidemenu(id)
{
  if (id == 'nul') return;
  document.getElementById('sm'+id).style.display = "none"; 
  document.getElementById('sm'+id+'a').style.display = "none";
  document.getElementById('sm'+id+'b').style.display = "block";
  setCookie('nul');
}

function toggle(id)
{
  hidemenu(lastid);
  if (id != lastid) showmenu(id); else lastid = 'nul';
}

/*
 * Génération du menu principal ---------------
 */

function genmenu()
{
if (ymax == undefined) ymax=5;
  ymax++;
  for (y=1; y < ymax; y++) {
    var items = navmain[y].split(',');
    var n = items[0].charAt(1);
    items[0] = items[0].substr(2);
    if (items[0].length > 20) n = '1'+n;	// test de la longueur du texte (une ou deux lignes)

    switch (n) {
      case "0":		// single-line main item with submenu (no URL)
        document.write('<div class="fg3"><a class="fg5" href="javascript:toggle('+y+');" '
          +'><div id="sm'+y+'c" class="fg1">'+items[0]+'</div></a></div>');
        gensub(y);
        document.write('<div id="sm'+y+'a" class="fg2b">&nbsp;</div>'); 	// subjaune
        document.write('<div><img id="sm'+y+'b" class="fg4" src="pics/interjaune.png"></div>');
        break;
      case "1":		// single-line main item with URL (no submenu)
        document.write('<div class="fg3"><a class="fg5" href="'+items[1]+'" onClick="hidemenu(lastid);" '
          +'><div id="sm'+y+'c" class="fg1">'+items[0]+'</div></a></div><div><img src="pics/interjaune.png"></div>');
        break;
      case "10":		// double-line main item with submenu (no URL)
        document.write('<div class="fg3a"><a class="fg5a" href="javascript:toggle('+y+');" '
          +'><div id="sm'+y+'c" class="fg1a">'+items[0]+'</div></a></div>');
        gensub(y);
        document.write('<div id="sm'+y+'a" class="fg2b">&nbsp;</div>'); 	// subjaune
        document.write('<div><img id="sm'+y+'b" class="fg4" src="pics/interjaune.png"></div>');
        break;
      case "11":		// double-line main item with URL (no submenu)
        document.write('<div class="fg3a"><a class="fg5a" href="'+items[1]+'" onClick="hidemenu(lastid);" '
          +'><div id="sm'+y+'c" class="fg1a">'+items[0]+'</div></a></div><div><img src="pics/interjaune.png"></div>');
        break;
    } // switch (n)

  } // for (y=0, ...
}

/*
 * Génération des sous-menus ---------------------
 */

function gensub(y) {
  document.write('<div class="fgsub"><div id="sm'+y+'" class="fg2">');	// start of submenu block

  for (x=0; nav[y][x] != undefined; x++) {		// each submenu item
    var items = nav[y][x].split(',');
    var n = items[0].charAt(1);
    items[0] = items[0].substr(2);
      document.write('<a href="'+items[1]+'">'+items[0]+'</a><br>');
  } // for (x=0, ...

  document.write('</div></div>');	// end of submenu block
}

/*
 * Génération des menus secondaires -------
 */

//	y	secondary menu id, numeric 1..n, different for each menu

function menuSec(y) {

  for (var x=0; navSec[y][x] != undefined; x++) {
    var items = navSec[y][x].split(',');
    var n = items[0].charAt(1);
    items[0] = items[0].substr(2);
    switch (n) {
      case "0":
        document.write('<div class="mstyle'+n+'">'+items[0]+'</div>');	// titres
        break;
      case "1":			// sous-titres
        document.write('<div class="mstyle'+n+'"><a class="lstyle'+n+'" href="'+items[1]
          +'" onClick="hidemenu(lastid);">'+items[0]+'</a></div>');
        break;
      case "2":			// Webmestre (droit)
        document.write('<div class="mstyle1"><a class="lstyle1" href="'+items[1]+'" onClick="hidemenu(lastid);" >'+items[0]+'</a></div>');
        break;
      case "3":			// Webmestre (bas)
        document.write('<a class="lstyle'+n+'" href="'+items[1]+'" onClick="hidemenu(lastid);" >'+items[0]+'</a> \|');
        break;
      case "4":			// Mentions légales
        document.write('<a class="lstyle'+n+'" href="'+items[1]+'">'+items[0]+'</a> \|');
        break;
      case "5":			// Plan du site
        document.write('<div class="mstyle'+n+'"><a class="lstyle'+n+'" href="'+items[1]+'">'+items[0]+'</a></div>');
        break;
      case "6":			// Crédits
        document.write('<a class="lstyle'+n+'" href="'+items[1]+'">'+items[0]+'</a> \|');
        break;
    } // switch (n)
  } // for (x=0, ...
}

/************************************************************
 * Redirection de page pour les rubriques à article unique  *
 ************************************************************/
/* Pour une rubrique possédant plusieurs articles, on affiche la liste des articles.
 * Pour une rubrique possédant un seul article, on affiche directement l'article.
 * La fonction suivante est appelée dans une boucle d'articles, dont elle mémorise l'id
 * du dernier. Puis elle est appelée après la fin de la boucle avec la valeur de la
 * balise TOTAL_BOUCLE dans le 2e paramètre. Si cette valeur est 1, on remplace la page
 * par celle de l'article. 
 */
    id_article = 0;
    function oneid(id, total) {
      switch (total) {
        case 0: id_article = id; break;
        case 1: if (id_article != 0) window.location = 'spip.php?article'+id_article; break;
        default: id_article = 0;
      } // switch
    }

/*********************************************
 * Générateur de tables de menus JavaScript  *
 *********************************************/

// Primary menu data base builder

ymax=-1; x=0;var navmain=new Array;var nav=new Array;

function mdb(dbitem) {
  if (dbitem.charAt(0) == '0') {ymax++;x=0;nav[ymax]=new Array;navmain[ymax]= dbitem;}
    else nav[ymax][x++] = dbitem;
}

// Secondary menus data base builder

var ySecmax=-1; var x=0; var navSec=new Array;

function pdb(dbitem) {
  if (dbitem.charAt(0) == '0') {ySecmax++;x=0;navSec[ySecmax]=new Array;}
  navSec[ySecmax][x++] = dbitem;
}
