/**
 * Funciones para el manejo de las capas asociadas a enlaces múltiples
 * en el CM.
 *
 */    
        
    /**
     * Variable que toma el valor de true cuando el cursor se
     * encuentre sobre el link
     */
    var onLink = false;
    
    /**
     * Variable que toma el valor de true cuando el cursor 
     * se encuentra sobre la capa de enlaces
     */
    var onLayer = false;
    
    
    /**
     * Debe ser llamada cuando el cursor entra en el espacio
     * del enlace.
     *
     * @param e     El evento de raton que se ha producido al
     *   entrar el cursor en el area del enlace.
     * @param name  Id de la capa de enlaces asociada a este enlace.
     */     
    function enterLink(e,name) {
        onLink = true;
        showLayer(e,name);
    }
    
    /**
     * Debe ser llamada cuando el cursor sale del espacio del enlace.
     * 
     * @param e     El evento de ratón que se ha producido al 
     *   salir el cursor del area de enlace.
     * @param name  Id de la capa de enlaces asociada a este enlace.
     */
    function leaveLink(e,name) {
        onLink = false;
        if ( onLayer == true ) {
           showLayer(e,name);
        } else {
           hideLayer(e,name);
        }
    }

    /**
     * Debe ser llamada cuando el cursor entra en el espacio
     * de la capa de enlaces
     *
     * @param e     El evento de raton que se ha producido al
     *   entrar el cursor en el area de la capa de enlaces.
     * @param name  Id de esta capa de enlaces.
     */         
    function enterLayer(e,name) {
        onLayer = true;
        showLayer(e,name);    
    }

    /**
     * Debe ser llamada cuando el cursor sale de la capa de enlaces.
     * 
     * @param e     El evento de ratón que se ha producido al 
     *   salir el cursor de la capa de enlaces.
     * @param name  Id de esta capa de enlaces.
     */
    function leaveLayer(e,name) {
        onLayer = false;
        if ( onLink == true ) {
           showLayer(e,name);
        } else {
           hideLayer(e,name);
        }    
    }
    
    
    /**
     * Función interna que muestra una capa de enlaces.
     *
     * Esta función requiere que la capa principal del contenido
     * (aquella que este por encima de la capa overflow) tenga
     * como identificador 'contentClass'
     *
     * @param e     El evento de ratón que origino la acción 
     *  de mostrar la capa
     * @param name  El identificador de la capa a mostrar.
     */
    function showLayer(e,name) {
      var links = document.getElementById(name);
      var contentClass = document.getElementById('bodyContentDiv');
      if ( links && links.style.visibility == 'hidden' ) {
            if ( onLink ) {
                // Hacemos que la capa sea hija de la capa denominada 'contentClass'
                // Si no fuese así y la pusiesemos debajo de la capa que tiene el
                // overflow (tal y como sale el contenido preformateado) la capa
                // nunca saldría por encima del scroll del contenido
                if ( contentClass ) {
                    links.parentNode.removeChild(links);
                    contentClass.appendChild(links);
                }
                if ( window.navigator.appName == 'Netscape' ) {
                    links.style.top = e.pageY-2;
                    links.style.left = e.pageX-2;
                } else {
                    links.style.top =  self.document.body.scrollTop+e.y-2;
                    links.style.left = e.x-2;
                }
            }
            document.body.style.overflowX='hidden';            
            links.style.visibility='visible';
      }      
   }
   
    /**
     * Función interna que muestra una capa sin controlar para nada que
     * nos encontremos dentro de la capa...
     *
     * @param e     El evento de ratón que origino la acción 
     *  de mostrar la capa
     * @param name  El identificador de la capa a mostrar.
     */
    function showLayer2(e,name) {
      var links = document.getElementById(name);
      if ( links ) {
          if ( window.navigator.appName == 'Netscape' ) {
              links.style.top = e.pageY+20;
              links.style.left = e.pageX-2;
          } else {
              links.style.top =  self.document.body.scrollTop+e.y+20;
              links.style.left = e.x-2;
          }
      }
      links.style.visibility='visible';      
   }   
   
    /**
     * Función interna que oculta una capa de enlaces.
     *
     * @param e     El evento de ratón que origino la acción 
     *  de ocultar la capa
     * @param name  El identificador de la capa a ocultar.
     */   
   function hideLayer(e,name) {
      var links = document.getElementById(name);
      if ( links ) {
          links.style.visibility='hidden';
      }
      
   }