// lepine - 2002-09-04 14:59:22 - V1.0.3
// Reno - 2002-06-28 11:20:16 - V1.0.2
// lepine - 2002-06-17 12:33:21 - V1.0.1
	// bug si le premier appel (en bas de la page inf_left) passe en paramètre cx=0 et cy=0
	// dans ce cas FixMenuBaseCx et FixMenuBaseCy restent à 0 et 0
	// et quand on appel cette fonction avec aucun paramètre cx et cy
	// on fait un setMenuXY(undefined,undefined)
	// gl - 2002-06-17
// Nicolas - 01/31/2002 10:50:38 - V1.0.0
// menu.js --- (c) Operationnelle - 2001 - jlr
// gestion de menu auto ouvrant verticaux
// modele des menus dans menu.inc
// modele de la feuille de style (indispensable) dans menu.css
// Nom des menu ferme = MainMenu(1...x)
// Nom des menu ouvert = Menu(1...x)
// Nom des sous-menu ouvert = Menu(1...x)(1...x)
// SetMenuNb(iNb)             // set le nombre de menu a gerer
// SetMenuPad(iNb)            // set le nombre de pixel de deplacement a chaque interval
// SetMenuTo(iNb)             // set le TimeOut en milliseconde de l'interval
// SetMenuOff()               // ferme tous les menus
// SetMenu(IdOn, bOff, cx, cy)// ferme le menu ouvert (bOff = 1) et ouvre le menu IdOn, cx et cy correspondent a la base du premier menu  
var MenuNb, MenuBaseCx, MenuBaseCy;
var FixMenuBaseCx, FixMenuBaseCy;
var MenuOut, MenuIn, MenuCur, MenuOn, MenuOnCur;
var MenuTo, MenuPad;
MenuPad = 5;
MenuTo = 30;
MenuNb = 0;
MenuCur = MenuOn = MenuOnCur = "";
FixMenuBaseCx = 0;
FixMenuBaseCy = 0;
MenuBaseCy = 0;
MenuBaseCx = 0;
iMenuDy = 1; // Distance séparant les div  - GL - 04/09/2002
function SetCurMenuOn(IdMenu) { MenuOnCur = IdMenu; }
function SetMenuXY(iCx, iCy) { FixMenuBaseCx = iCx; FixMenuBaseCy = iCy; }
function SetMenuNb(iNb) { MenuNb = iNb; }
function SetMenuPad(iNb) { MenuPad = iNb; }
function SetMenuTo(iNb) { MenuTo = iNb; }
function SetMenuDy(iNb) { iMenuDy = iNb; }
function SetMenuOff() {
  if (MenuCur == "") return;
  if (MenuCur == MenuOn) return;
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  cx = FixMenuBaseCx;
  cy = FixMenuBaseCy;
  for (i=1; i<=MenuNb; i++) {
    var aRes = false;
    var pObj = false;
    re = new RegExp("Menu"+i+sRe, "i");
    if (MenuCur != "") aRes = re.exec(MenuCur);
    if (aRes) { 
      pObj = getLayer(MenuCur);
      if (pObj) {
        hideLayer(pObj);
        moveLayerTo(pObj, 0, 0);
        MenuCur = "";
      }
    }
    if (MenuOnCur != "") aRes = re.exec(MenuOnCur);
    if (aRes) {
      pObj = getLayer(MenuOnCur);
      if (pObj) {
        hideLayer(pObj);
        moveLayerTo(pObj, 0, 0);
        MenuOnCur = "";
      }
    }
    pObj = getLayer("MainMenu"+i);
    if (pObj) {
      moveLayerTo(pObj, cx, cy);
      cy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
      showLayer(pObj);
    }
  }
}
function SetMenu(IdOn, bOff, cx, cy, bClose) {
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  var re, iCur, iOn;
  if (FixMenuBaseCx == 0 && FixMenuBaseCy == 0) SetMenuXY(cx, cy);
  cx = FixMenuBaseCx;
  cy = FixMenuBaseCy;

  if (bClose) {
    SetMenuOff();
    SetCurMenuOn(IdOn);
  }

  if (MenuPad == 0) return SetMenuIeMac(IdOn, bOff, FixMenuBaseCx, FixMenuBaseCy);
  if (isMac && isIE || isMinNS6) return SetMenuIeMac(IdOn, bOff, FixMenuBaseCx, FixMenuBaseCy);

  var i, aRes, sTmp;
 
  if (MenuOn != "" && MenuOn != IdOn) return;
  if (bOff == 1 || bOff == true) {
    if (IdOn == "" && MenuCur == MenuOn) return;
    if (MenuCur != "" && MenuCur != MenuOnCur) {
      objOf = getLayer(MenuCur);
      if (objOf) {
        menu_draw(MenuCur, IdOn, FixMenuBaseCx, FixMenuBaseCy);
        MenuCur = "";
        return;
      }  
    }  
  }  

  for (i=1; i<=MenuNb; i++) {
    re = new RegExp("Menu"+i+sRe, "i");
    aRes = re.exec(IdOn);
    if (aRes) {
      MenuCur = IdOn;
      MenuOn = IdOn;
      MenuBaseCy = cy;
      MenuBaseCx = cx;
      menu_pull(IdOn, i);
      return;
    }
    
    aRes = re.exec(MenuOnCur);
    sTmp = (aRes) ? MenuOnCur : "MainMenu"+i;
    pObj = getLayer(sTmp);
    if (pObj) {
      moveLayerTo(pObj, cx, cy);
      cy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
      showLayer(pObj);
    }
  }
}

function GetMenuBottomPos() {
 var cy = MenuBaseCy;
  for (i=1; i<=MenuNb; i++) {
    pObj = (i == MenuNb) ? getLayer("Menu"+i) : getLayer("MainMenu"+i);
    if (!pObj) return;
    cy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
  }
  return cy;
}
// -*********************************************** Interne **
function SetMenuIeMac(IdOn, bOff, cx, cy) {
  var bOn = false;
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  for (i=1; i<=MenuNb; i++) {
    var re = new RegExp("Menu"+i+sRe, "i");
    var aRes = false;
    var pObj = false;
    if (MenuCur != "") {
      aRes = re.exec(MenuCur);
      if (aRes) {
        pObj = getLayer(MenuCur);
        if (pObj) {
          hideLayer(pObj);
          moveLayerTo(pObj, 0, 0);
          MenuCur = "";
        }
      }
    }
    if (MenuOnCur != "") {
      aRes = re.exec(MenuOnCur);
      if (aRes) {
        pObj = getLayer(MenuOnCur);
        if (pObj) {
          hideLayer(pObj);
          moveLayerTo(pObj, 0, 0);
          MenuOnCur = "";
        }
      }
    }
    pObj = getLayer("MainMenu"+i);
    if (IdOn != "") aRes = re.exec(IdOn);
    if (aRes) {
      if (pObj) {
        hideLayer(pObj);
        moveLayerTo(pObj, 0, 0);
      }
      bOn = true;
      pObj = getLayer(IdOn);
    }  
    if (pObj) {
      moveLayerTo(pObj, cx, cy);
      cy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
      showLayer(pObj);
    }
  }
  if (bOn) MenuCur = IdOn;
}
function menu_pullengine(IdOn, iBaseCy){
  var i, j, iMainCy;
  pObj = getLayer(IdOn);
  if (!pObj) return;
  if (getClipHeight(pObj) < iBaseCy) {
    j = 0;
    var iPad;
    var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
    for (i=1; i<=MenuNb; i++) {
      re = new RegExp("Menu"+i+sRe, "i")
      if (j!=0) {
        aRes = re.exec(MenuOnCur);
        sTmp = (aRes) ? MenuOnCur : "MainMenu"+i;
        pObj = getLayer(sTmp);
        if (pObj) {
          moveLayerTo(pObj, MenuBaseCx, iMainCy);
          iMainCy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
        }
      }
      aRes = re.exec(IdOn);
      if (aRes) {
        j = i;
        pObj = getLayer(IdOn);
        iPad = ((getClipBottom(pObj)+MenuPad) > iBaseCy) ? iBaseCy-getClipBottom(pObj) : MenuPad; 
        MenuBaseCy += iPad;
        iMainCy = MenuBaseCy + iMenuDy; // modif GL 04/09/2002
      }  
    }  
    pObj = getLayer(IdOn);
    clipLayer(pObj, 0, 0, getClipRight(pObj), getClipBottom(pObj)+iPad);
  } else {
    clearInterval(MenuOut);
    MenuOn = "";
  }
}
function menu_pull(IdOn, iPos){
  var i, j, iMainCy, iBaseCy;
  j = 0;
  i = (iPos) ? iPos : 0;
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  for (; i<=MenuNb; i++) {
    re = new RegExp("Menu"+i+sRe, "i")
    if (j != 0) {
      aRes = re.exec(MenuOnCur);
      sTmp = (aRes) ? MenuOnCur : "MainMenu"+i;
      pObj = getLayer(sTmp);
      if (pObj) {
        moveLayerTo(pObj, MenuBaseCx, iMainCy);
        iMainCy += (getHeight(pObj) + iMenuDy); // modif GL 04/09/2002
        showLayer(pObj);
      }
    }
    aRes = re.exec(IdOn);
    if (aRes && j == 0) {
      j = i;
      clearInterval(MenuIn);
      pMainObj = getLayer("MainMenu"+i);
      pObj = getLayer(IdOn);
      moveLayerTo(pObj, MenuBaseCx, MenuBaseCy);
      iBaseCy = getHeight(pObj);
      clipLayer(pObj, 0, 0, getWidth(pObj)+10, 15);
      MenuBaseCy += 15;
      iMainCy = MenuBaseCy;
      hideLayer(pMainObj);
      moveLayerTo(pMainObj, 0, 0);
      showLayer(pObj);
    }
  }
  MenuOut = setInterval("menu_pullengine('"+IdOn+"',"+iBaseCy+")",MenuTo);
}
function menu_drawengine(IdOut, chy, IdOn, chMainy){
  var i, j, iEnd, iPad, iY, pObj, pMainObj;
  j = 0;
  iEnd = 0;
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  for (i=1; i<=MenuNb; i++) {
    var re = new RegExp("Menu"+i+sRe, "i")
    if (j != 0) {
      var aRes = re.exec(MenuOnCur);
      var sTmp = (aRes) ? MenuOnCur : "MainMenu"+i;
      pObj = getLayer(sTmp);
      if (pObj) {
        moveLayerTo(pObj, getLeft(pObj), getTop(pObj)-iPad);
        showLayer(pObj);
      }
      continue;
    }
    var aRes = re.exec(IdOut);
    if (aRes && j == 0) {
      j = i;
      pObj = getLayer(IdOut);
      if (getClipHeight(pObj) > chMainy) {
        iY = getClipHeight(pObj) - chMainy;
        iPad = (iY > MenuPad) ? MenuPad : iY;
        clipLayer(pObj, 0, 0, getClipRight(pObj), getClipBottom(pObj)-iPad);
        showLayer(pObj);
      } else {
        clearInterval(MenuIn);
        hideLayer(pObj);
        clipLayer(pObj, 0, 0, getClipRight(pObj), chy);
        moveLayerTo(pObj, 0, 0);
        pMainObj = getLayer("MainMenu"+i);
        moveLayerTo(pMainObj, getLeft(pObj), getTop(pObj));
        showLayer(pMainObj);
        iPad = 0;
        iEnd = 1;
      }  
    }
  }
  if (iEnd == 1 && IdOn != '') SetMenu(IdOn, 0, MenuBaseCx, MenuBaseCy);
}
function menu_draw(IdOut, IdOn, cx, cy){
  MenuOn = IdOn;
  clearInterval(MenuOut)
  MenuBaseCy = cy;
  MenuBaseCx = cx;
  var i = 0;
  var sRe = (isMinNS4) ? "([^0-9])" : "([^0-9]|$)";
  for (i=1; i<=MenuNb; i++) {
    var re = new RegExp("Menu"+i+sRe, "i")
    var aRes = re.exec(IdOut);
    if (aRes) {
      var pMainObj = getLayer("MainMenu"+i);
      var pObj = getLayer(IdOut);
      if (!pObj) return;
      var chy = getHeight(pObj);
      var chMainy = getHeight(pMainObj);
      MenuIn = setInterval("menu_drawengine('"+IdOut+"',"+chy+",'"+IdOn+"',"+chMainy+")",MenuTo);
      return;
    }
  }
}

