/**
 * Versión:        1.0
 * Autor:          Agustín Rodríguez Reina
 * E-mail:         agustin@jfactory.es
 * Ult. Actualiz:  12/05/2008
 * Utilidad:       Grupo de menús o pestañas. Al presionar uno muestra su DIV 
 *                 y oculta el anterior. Realiza el rollower automáticamente.
 *                 
 *                 Rollower opcional.
 *                 
 * Restricciones:  Requiere "div.js" y "gnral.js"
 *
 * Uso:            Dentro de <head> incluir los grupos de menús o pestañas. Ej:
 
                       initGrpMnu('grpProd', 1, '../../../../img/en/productos/', 'gif');
                       initGrpMnu('grpSoft', -1, '../../../../img/en/software/', 'png');
											 
                   Para las imágenes que hacen de menú:
						<a href="javascript:verCapaMnu('grpProd', 1)"><img id="img_grpProd_1" src="../../../img/en/productos/img_grpProd_1_on.gif" width="95" height="20" border="0"></a>
											 
                   Si tenemos rollower:
                       <a href="javascript:;"><img id="img_grpProd_1" onMouseOver="rollowerMnuImg('grpProd', 1)" onMouseOut="rollowerMnuImg('grpProd', 1)" onClick="verCapaMnu('grpProd', 1); return false" src="../../../img/en/productos/img_grpProd_1_on.gif" width="95" height="20" border="0"></a>									 
 
                   Por último la zona de DIVs:
                       <div name="grpProd">
                           <div id="grpProd_1"></div>
                           <div id="grpProd_2"></div>
                           <div id="grpProd_3"></div>
                       </div>
 */


/* ************************** VARIABLES GLOBALES ************************************ */

var grpMnus= new Array();
         

/* ****************************** FUNCIONES ***************************************** */


/* *************************** GRUPO DE PESTAÑAS ************************************** */  
/* ***** (cuando se pincha sobre una se muestra su capa y se ocultan las demás) ******* */  
/* ************************************************************************************ */  


/** Inicializa un grupo de menús:
 *    · 'nomGrp': Nombre del grupo (será empleado en DIVs e IMGs)
 *    · 'posSel': Elemento seleccionado inicialmente [dft. "-1"]
 *    · 'rutaImgs': Ruta hasta las imágenes. Si vale "null" se sobreentiende que 
 *                  no hay rollower
 *    · 'extImg': Extensión de la imágenes [dft. 'gif']
 */
function initGrpMnu(nomGrp, posSel, rutaImgs, extImg)
{
    if (posSel < 1) posSel= -1;
    if (extImg == null) extImg= "gif";

    grpMnus[nomGrp] = {	
       nomGrp: nomGrp,
       posSel: posSel,
       rutaImgs: rutaImgs,
       extImg: extImg
    };
}


/** Cambia la imagen de una pestaña o menú por su complementaria. Si es la
 *  pestaña seleccionada actualmente no hace el rollower.
 */
function rollowerMnuImg(nomGrp, pos)
{
    if(typeof (grpMnus[nomGrp]) == "undefined") 
       alert("Menú de pestañas " + nomGrp + " no inicializado");
     
    else if (grpMnus[nomGrp].posSel != pos)
    {
      var grp= grpMnus[nomGrp];
      var idImg= "img_" + nomGrp + "_" + pos;
      var uriImgOn= grp.rutaImgs + idImg + "_on." + grp.extImg;
      var uriImgOff= grp.rutaImgs + idImg + "_off." + grp.extImg;
      
      // Buscamos la imagen
      var imagen= document.getElementById(idImg);

      if (! imagen)
         alert("No existe ninguna imagen con el identificador '" + idImg + "'");
        
      else 
      {
	 // Sustituimos por la complementaria
         swapImg(imagen, uriImgOn, uriImgOff);
      }
    }  
}


/* PRIVATE */ function mnuOff(grp, pos)
{
    // Cambia imagen a OFF
    if (grp.rutaImgs != null)
    {
      var idImg= "img_" + grp.nomGrp + "_" + pos;
      var imagen= document.getElementById(idImg);

      if (! imagen)
         alert("No existe ninguna imagen con el identificador '" + idImg + "'");

      var uriImgOff= grp.rutaImgs + idImg + "_off." + grp.extImg;
      imagen.src= uriImgOff;
    }

    // Oculta capa
    var capa= grp.nomGrp + "_" + pos;
    desaparecerCapa(capa);
    ocultarCapa(capa);
}

/* PRIVATE */ function mnuOn(grp, pos)
{
    // Cambia imagen a ON
    if (grp.rutaImgs != null)
    {    
      var idImg= "img_" + grp.nomGrp + "_" + pos;
      var imagen= document.getElementById(idImg);

      if (! imagen)
         alert("No existe ninguna imagen con el identificador '" + idImg + "'");

      var uriImgOn= grp.rutaImgs + idImg + "_on." + grp.extImg;
      imagen.src= uriImgOn;
    }

    // Activamos la nueva selección
    var capa= grp.nomGrp + "_" + pos;
    mostrarCapa(capa);
    
    grp.posSel= pos;
}


/** Muestra la capa indicada y cambia su imagen de menú a activa. El elemento
 *  activo anterior deja de estarlo.
 *
 *  NOTA: Si el elemento es el activo no hace nada. 
 */
function verCapaMnu(nomGrp, pos)
{
    if(typeof (grpMnus[nomGrp]) == "undefined") 
       alert("Menú de pestañas " + nomGrp + " no inicializado");
     
    else if (grpMnus[nomGrp].posSel != pos)
    {
      var grp= grpMnus[nomGrp];
    
      // Quitamos la selección de la capa actual y desactiva imagen
      if (grp.posSel > 0)
         mnuOff(grp, grp.posSel);
      
      // Activamos la nueva selección y activa la imagen
      mnuOn(grp, pos);
    } 
}




