var jsNodeElement = 1;
var jsHauteur = "HAUTEUR";
var jsLongueur = "LONGUEUR";

var jsHauteurElementsDefaut = 20;

function entier(iNombre) {
   var sNombre, aNombre;

   sNombre = String(iNombre);
   aNombre = sNombre.split(".");

   if (aNombre.length > -1)
      return aNombre[0];
   else
      return iNombre;
}

// constructeur
function rollover(sLangue, sMenu) {

   var pre, post, ass;
   pre = true;
   if (pre) {

      // attributs
      this.m_langue = sLangue;
      this.m_nomMenu = sMenu;
      this.m_tableauCalques = new Array();
      this.m_initialise = false;
      this.m_sourceCourante = null;

      // prototypage
      this.deasgMenus = deasgMenus;
      this.creerSousMenu = creerSousMenu;
      this.reqMenuInitialise = reqMenuInitialise;
      this.reqPositionX = reqPositionX;
      this.reqPositionY = reqPositionY;
      this.reqMenuPointe = reqMenuPointe;
      this.reqSourceCourante = reqSourceCourante;
      // construction réussie
      return true;
   }
   else {
      return false;
   }

  
   function creerSousMenu(sMenu, aLiens, aTitres, sTypeMenu, iRetraitElements) {
      var iIndexMenu, iIndexMenuPrecedent;
      var sINNERHTML, sValeurNode, sBordure;
      var sLien;
      var objMenu;
      var iHauteur, iHauteurCalque;
      var aIndexMenu;   

      sINNERHTML = "";
      iHauteurCalque = 0;
      iHauteur = 0;
      iGauche = 0;

      if (aLiens.length > 0) {
         // valider les items du sous-menu
         for (var i = 0; i < aLiens.length; i++) {

            if (i < aLiens.length-1) {
               sBordure = "border-bottom: 1px solid rgb(78, 152, 201);"
            }
            else {
               sBordure = "";
            }
            sINNERHTML += "<tr>";
            sINNERHTML += "<td onClick=\"menuElement_Click(this);\" onMouseOver=\"menuElement_MouseOver(this);\" onMouseOut=\"menuElement_MouseOut(this);\" class=\"mnuElement\"><a class=\"hrefElement\" style=\"position: relative; left: " + iRetraitElements + "px;\" href=\"" + aLiens[i] + "\">" + aTitres[i] + "</a></td>";
            sINNERHTML += "</tr>";             

            if (i < aLiens.length-1)
               sINNERHTML += "<tr><td height=\"1\" class=\"mnuElementSeparateur\"><img src=\"blank.gif\" width=\"1\" height=\"1\" alt=\"\"></td></tr>";

            if (aTitres[i].length >= 20)
               iHauteurCalque += jsHauteurElementsDefaut + (12 * entier((aTitres[i].length / 20)));
            else
               iHauteurCalque += jsHauteurElementsDefaut;

         }
      }


      // il existe des items pour générer un sous-menu
      if (sINNERHTML != "") {
         sINNERHTML = "<table onmouseout=\"menuMenu_MouseOut(obj);\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"tblRollover\">" + sINNERHTML + "</table>";

         if (this.m_tableauCalques["MENU"] == null) {
             this.m_tableauCalques["MENU"] = new CalqueClasse("MENU", 150, iHauteurCalque, true);
         }

         this.m_tableauCalques["MENU"].remplirCalque(sINNERHTML, (this.m_tableauCalques["MENU"].reqNavigateur() == "ie") ? event : objEvent, null, "layTransparent");
         this.m_tableauCalques["MENU"].asgCalque("BODY");
         if (document.getElementById(sMenu) != null) {
            this.m_sourceCourante = document.getElementById(sMenu);
            if (sTypeMenu == jsHauteur) {
// à implanter !
            }
            else {
               obj = document.getElementById(sMenu);
               iHauteur += obj.offsetHeight;
               while (obj != null) {
                  if (obj.offsetLeft != null)
                     iGauche += obj.offsetLeft;

                  if (obj.offsetTop != null)
                     iHauteur += obj.offsetTop;
                  obj = obj.offsetParent;
               }
            }           
         }

         this.m_tableauCalques["MENU"].asgPosition(iGauche, iHauteur);
         this.m_tableauCalques["MENU"].visibleCalque(true);
      }
   }

   function deasgMenus() {
      if (this.m_tableauCalques["MENU"] != null) {
         this.m_tableauCalques["MENU"].deasgCalque();
         this.m_tableauCalques["MENU"] = null;
      }
   }

   function reqMenuInitialise() {
      if (this.m_tableauCalques["MENU"] != null)
         return true;
      else 
         return false;
   }

   function reqPositionX() {
      return this.m_tableauCalques["MENU"].reqPositionX();
   }

   function reqPositionY() {
      return this.m_tableauCalques["MENU"].reqPositionY();
   }

   function reqMenuPointe(iX, iY) {
      var bPointeMenu;

      if (this.m_tableauCalques["MENU"] != null) {
         // le curseur est hors de la zone de menu horizontalement
         if ((iX <= this.m_tableauCalques["MENU"].reqPositionX()) || (iX >= (this.m_tableauCalques["MENU"].reqPositionX()+this.m_tableauCalques["MENU"].reqLargeurCalque()))) {
            return false;
         }

         // le curseur est hors de la zone de menu verticalement vers le haut
         if ((iY < this.m_tableauCalques["MENU"].reqPositionY()) && (iX > this.m_tableauCalques["MENU"].reqPositionX()+this.m_sourceCourante.offsetWidth)) {
            return false;
         }

         // le curseur est dans la zone de menus
         if ((iY >= this.m_tableauCalques["MENU"].reqPositionY()-this.m_sourceCourante.offsetHeight) && (iY <= (this.m_tableauCalques["MENU"].reqPositionY()+this.m_tableauCalques["MENU"].reqHauteurCalque()))) {
            return true;
         }
         else {
            return false;
         }
      }
   }

   function reqSourceCourante() {
      return this.m_sourceCourante;
   }
}
