/* *******************************
* menu.js
* generation de menus dynamiques
*
************************************************* */

var wait = 1500;
var hideTimer;
var menus = Array();
var visibleMenus = Array();
var MINMENUSIZE = 75;

// detection de IE+
IE = (document.all) ? 1 : 0;

// Classe menu et sa methode addItem

function menu(idMenu) {	
  var bodyRef = document.getElementById("td_navigation");
  
  this.main = document.createElement("div");	
  this.main.id = "dhtml_menu"+idMenu;
  this.main.className = "dhtmlmenu";
  
  this.idMenu = idMenu;
  this.parent = 0;	
  this.addItem = item;
  this.getId = new Function("return(\""+this.main.id+"\");");
  bodyRef.appendChild(this.main);

  this.depth = 0;
}

function item(text, href, menuToShow, menuIndex) {
  var menuItem = document.createElement("a");
  var menuId = this.idMenu;
  
  menuItem.href = href;
  menuItem.innerHTML = text;
  
  if (menuIndex == 0) {
    menuItem.style.borderTop = 0;
  }
  
  rollover = "hideAfter("+menuId+");";
  
  /*if (menuToShow != "") {
    rollover += "showMenu('"+menuToShow+"', '"+menuId+"', this);";
    menuItem.style.backgroundImage = 'url(/doc/img/puce.gif)';
  }*/
  
  rollover += "keepOpen();";
  rollout = "hide();";
  
  menuItem.onmouseover = new Function(rollover);
  menuItem.onmouseout = new Function(rollout);
  
  this.main.appendChild(menuItem);
}

// Fonctions l'affichage/masquage de menu

function showMenu(_menuId, _pmenuId, _parent) {
  var thisMenu = menus[_menuId];
  var elemMenu = document.getElementById("dhtml_menu"+_menuId);

  hideAfter(_pmenuId);
  thisMenu.parent = _parent;
  
  xPos = getLeft(document.getElementById("groupe"));
  yPos = getTop(_parent);
  
  elemMenu.style.display = "block";
  elemMenu.style.left = xPos + "px";
  elemMenu.style.top = yPos + "px";

  //mod orsid
  if (IE) {
    bgColor = getStyle(_parent, 'backgroundColor');
  }
  else {
    bgColor = getStyle(_parent, 'background-color');
  }
  elemMenu.style.backgroundColor = bgColor;

  elemMenu.style.visibility = "visible";
  visibleMenus.push(_menuId);
  

  // mod orsid
    if (thisMenu.parent != 0) {
    if (IE) {
      bgImage = getStyle(_parent, 'backgroundImage');
    }
    else {
      bgImage = getStyle(_parent, 'background-image');
    }
      
    index = bgImage.lastIndexOf(".gif");
      
    if (bgImage.indexOf("_over.gif") == -1) {
      _parent.style.backgroundImage = bgImage.substring(0,index) + "_over.gif)";
    }

    //thisMenu.parent.style.backgroundColor = MOVERBGCOLOR;
    //thisMenu.parent.style.color = MOVERFTCOLOR;
  }
  // fin mod
  

}

function hideMenu(_menuId) {
  var menuId = "dhtml_menu"+_menuId;	
  var thisMenu = menus[_menuId];
  var elemMenu = document.getElementById(menuId);
  
  // mod orsid
  if (thisMenu != -1 && thisMenu.parent != 0) {
    if (IE) {
      bgImage = getStyle(thisMenu.parent, 'backgroundImage');
    }
    else {
      bgImage = getStyle(thisMenu.parent, 'background-image');
    }

   
    
    index = bgImage.lastIndexOf("_over.gif");
      
    if (bgImage.indexOf("_over.gif") != -1)
      thisMenu.parent.style.backgroundImage = bgImage.substring(0,index) + ".gif)";
    
  }
  // fin mod

  elemMenu.style.visibility = "hidden";
}

// Fonctions de recuperation des coordonnées

function getTop(_elem) {
  yPos = _elem.offsetTop;
  tempEl = _elem.offsetParent;
  while (tempEl != null) {
    yPos += tempEl.offsetTop;
    tempEl = tempEl.offsetParent;
  }
 return yPos;
}

function getLeft(_elem) {
  xPos = _elem.offsetLeft;
  tempEl = _elem.offsetParent;
  while (tempEl != null) {
    xPos += tempEl.offsetLeft;
    tempEl = tempEl.offsetParent;
  }
  return xPos;
}

// Fonction gerant le masquage automatique des menus

function keepOpen() {
  if (hideTimer != null)
    clearTimeout(hideTimer);
}

function hide() {
  hideTimer = setTimeout("hideAll()", wait);
}

function hideAll() {
  if (visibleMenus.length > 0) {
    limit = visibleMenus.length;
    for (i=0; i<limit; i++) {
      menuId = visibleMenus.pop();
      hideMenu(menuId);
    }
  }
}

function hideAfter(_menuId) {
  if (visibleMenus.length > 0 && visibleMenus[visibleMenus.length-1] != _menuId) {
    hideMenu(visibleMenus.pop());
  }
}


// Fonction d'appel publique de menu

function callMenu(idRef, elemRef) {
  var idMenu = "dhtml_menu"+idRef;
  
  hideAll();
  
  if (document.getElementById(idMenu) != null) {   

  showMenu(idRef, '-1', elemRef);
  }
  keepOpen();
}

function bindMenu(idParent, idMenu) {
  var thisParent = document.getElementById(idParent);

  if (thisParent != null) {
    var oldMouseOver = thisParent.onmouseover ? thisParent.onmouseover : new Function();

    thisParent.onmouseover = function () { callMenu(idMenu, thisParent);};

    thisParent.onmouseout = new Function("hide()");
  }
}


function getStyle(x,styleProp) {
  if (x.currentStyle)
    var y = x.currentStyle[styleProp];
  else if (window.getComputedStyle)
    var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
  return y;
}