// =============================================
// PhotoAlbum 2.0 - © 2003 Israel Gómez de Celis
// http://sparksoft.igece.net
// =============================================

// -- Novedades con respecto a la versión 1.0 ---------------------------------------
//
// Al seleccionar una fotografía esta aparece en la misma ventana,
// junto a una barra de navegación (en la parte superior) y el texto
// descriptivo de la fotografía (en la parte inferior). Mediante la
// barra de navegación podemos desplazarnos entre las distintas
// fotografías de la galería o volver al índice de la misma.
//
// Para definir el aspecto tanto de la barra de títulos como de los
// textos descriptivos se utiliza una hoja de estilos que previamente
// habrá que enlazar con la página desde la cual creemos el álbum.
//
// ----------------------------------------------------------------------------------

// -- Instalación -------------------------------------------------------------------
// 
// Colocar dentro de la sección <HEAD></HEAD> una referencia tanto a este código
// como al de la hoja de estilos. Suponiendo que ambos archivos se encuentren en el
// mismo directorio las líneas a introducir serían:
//
// <LINK REL="STYLESHEET" TYPE="text/css" HREF="photoalbum.css">
// <SCRIPT LANGUAGE="JavaScript" SRC="photoalbum.js" TYPE="text/javascript"></SCRIPT>
//
// ----------------------------------------------------------------------------------

// -- Utilización -------------------------------------------------------------------
//
// 1. Las fotos que queremos que constituyan un álbum deben agruparse en un mismo
//    directorio, el nombre de dicho directorio sera el identificador del álbum.
//    Además, para cada fotografía deberá generarse una versión en miniatura. El
//    tamaño de estas miniaturas es libre, el mismo para todas, y deberá especificarse
//    más abajo, en el apartado de definición de variables. Por último, las fotografías
//    deberán renombrarse de acuerdo al siguiente esquema:
//
//    Fotografías:  [nombre del album]_[número de orden con dos cifras].[extensión]
//                  ej. album_01.jpg, album_02.jpg, etc.
//
//    Miniaturas:   [nombre del album]_[número de orden con dos cifras]_t.[extensión]
//                  ej. album_01_t.jpg, album_02_t.jpg, etc.
//
// 2. Cambiar si se desea los parámetros iniciales del álbum (ver más abajo).
//
// 3. En la página, llamar a la función principal de este código allá donde se quiera
//    que aparezca el álbum:
//
//    <SCRIPT LANGUAGE="JavaScript">
//    <!--
//      photoComments[0]  = 'Mis fotos';
//      photoComments[1]  = 'foto 1';
//      photoComments[3]  = 'foto 3'; 
//      createAlbum("http://mi.web.com/fotos", "album", 5);
//    //-->
//    </SCRIPT>
//
//    En este ejemplo, queremos que el título del álbum sea 'Mis fotos', y las fotos
//    1 y 3 tendrán el comentario indicado bajo ellas. El álbum se encuentra en la
//    dirección http://mi.web.com/fotos, dentro del directorio album, y contiene
//    5 fotografías.
//
// ----------------------------------------------------------------------------------


// Definición de variables
// Pueden modificarse sus valores para ajustarse al diseño de la página

var albumAlignment   = "center";      // Alineación del álbum
var albumCellSpacing = 0;             // Espacio entre fotos
var albumCellPadding = 4;             //
var albumWidth       = "95%";         // Ancho del álbum
var parentPage       = "impresiones.asp"   // Página padre del álbum
var photoBorder      = 0;             // Ancho del borde de las fotos
var photosInRow      = 3;             // Número de fotos por fila
var thumbnailWidth   = 157;           // Ancho de las miniaturas
var thumbnailHeight  = 105;           // Alto de las miniaturas

// No modificar

var photoComments = new Array();      // Matriz que contiene el título y los comentarios de las fotos
var photoURLs = new Array();          // Matriz que contiene las URLs de las fotografías
var thumbURLs = new Array();          // Ídem con las de las miniaturas
var currentPhoto = 1;
photoComments[0] = "Sin título";      // Título predeterminado del álbum



// -- showIndex () -------------------------------------------------
//
// Usada por la función principal.
// Muestra un índice con las miniaturas de la fotografías del álbum.
// -----------------------------------------------------------------
function showParent()
{
  location.href = parentPage;
}


// -- showIndex () -------------------------------------------------
//
// Usada por la función principal.
// Muestra un índice con las miniaturas de la fotografías del álbum.
// -----------------------------------------------------------------
function showIndex()
{
  location.reload();
}


// -- showPrev () --------------------------------------------------
//
// Usada por la función principal.
// Muestra la fotografía anterior a la actual.
// -----------------------------------------------------------------
function showPrev()
{
  currentPhoto--;

  if (currentPhoto > 1)
    document.getElementById("btnPrev").style.visibility = "visible";
  else
    document.getElementById("btnPrev").style.visibility = "hidden";
   
  if (currentPhoto < (photoURLs.length - 1))
    document.getElementById("btnNext").style.visibility = "visible";
  else
    document.getElementById("btnNext").style.visibility = "hidden";

  document.getElementById("header").innerHTML = photoComments[0] + " (imagen " + currentPhoto + " de " + (photoURLs.length - 1) + ")";
  document.getElementById("index").style.display = "none";
  document.getElementById("visor").style.display = "";
  document.getElementById("canvas").src = "blank.gif";
  document.getElementById("canvas").src = photoURLs[currentPhoto];
  if (photoComments[currentPhoto] != null) document.getElementById("desc").innerHTML = photoComments[currentPhoto];
}


// -- showNext () --------------------------------------------------
//
// Usada por la función principal.
// Muestra la fotografía siguiente a la actual.
// -----------------------------------------------------------------
function showNext()
{
  currentPhoto++;
  
  if (currentPhoto > 1)
    document.getElementById("btnPrev").style.visibility = "visible";
  else
    document.getElementById("btnPrev").style.visibility = "hidden";
   
  if (currentPhoto < (photoURLs.length - 1))
    document.getElementById("btnNext").style.visibility = "visible";
  else
    document.getElementById("btnNext").style.visibility = "hidden";    

  document.getElementById("header").innerHTML = photoComments[0] + " (imagen " + currentPhoto + " de " + (photoURLs.length - 1) + ")";
  document.getElementById("index").style.display = "none";
  document.getElementById("visor").style.display = "";
  document.getElementById("canvas").src = "blank.gif";
  document.getElementById("canvas").src = photoURLs[currentPhoto];
  if (photoComments[currentPhoto] != null) document.getElementById("desc").innerHTML = photoComments[currentPhoto];
}


// -- showPhoto (i) ------------------------------------------------
//
// Usada por la función principal. Oculta el índice de fotografías
// y muestra una fotografía determinada.
//
// i  Índice de la fotografía a mostrar
// -----------------------------------------------------------------
function showPhoto(i)
{
  currentPhoto = i;
   
  document.getElementById("btnIndex").style.visibility = "visible";
  
  if (currentPhoto > 1)
    document.getElementById("btnPrev").style.visibility = "visible";
  else
    document.getElementById("btnPrev").style.visibility = "hidden";
   
  if (currentPhoto < (photoURLs.length - 1))
    document.getElementById("btnNext").style.visibility = "visible";
  else
    document.getElementById("btnNext").style.visibility = "hidden";      

  document.getElementById("imgBtnNext").src = "next.gif";
  document.getElementById("imgBtnNext").alt = "Imagen siguiente";
  document.getElementById("linkBtnNext").href = "javascript:showNext()";
    
  document.getElementById("header").innerHTML = photoComments[0] + " (imagen " + i + " de " + (photoURLs.length - 1) + ")";
  document.getElementById("index").style.display = "none";
  document.getElementById("visor").style.display = "";
  document.getElementById("canvas").src = "blank.gif";
  document.getElementById("canvas").src = photoURLs[i];
  if (photoComments[i] != null) document.getElementById("desc").innerHTML = photoComments[i];
}


// -- createAlbum (url, id, photos) --------------------------------
//
// Esta es la única función que deberemos llamar para crear el álbum.
// Si se quiere cambiar el título del mismo o añadir comentarios a
// las fotografías debe hacerse antes de llamar a esta función.
// Los parámetros que recibe son los siguientes:
//
// url     Dirección de internet donde se encuentran los álbumes
//         (cada álbum es un directorio que cuelga de dicha dirección)
//
// id      Identificador del álbum deseado
//         (nombre del directorio)
//
// photos  Número de fotos del álbum
// -----------------------------------------------------------------
function createAlbum(url, id, photos)
{
  document.write("<TABLE WIDTH='100%' BORDER='0' CELLSPACING='0' CELLPADDING='0'><TR><TD ID='header' CLASS='photoalbumheader'>" + photoComments[0]);
  document.write("</TD><TD ALIGN='right' WIDTH='20' CLASS='photoalbumheader'>");
  document.write("<SPAN ID='btnIndex' STYLE='visibility: hidden'><A HREF='impresiones.asp'><IMG SRC='index.gif' BORDER='0' ALIGN='absmiddle' ALT=''></A></SPAN>");
  document.write("</TD><TD ALIGN='right' WIDTH='20' CLASS='photoalbumheader'>");
  document.write("<SPAN ID='btnPrev' STYLE='visibility: hidden'><A HREF='javascript:showPrev()'><IMG SRC='prev.gif' BORDER='0' ALIGN='absmiddle' ALT='Imagen anterior'></A></SPAN>");
  document.write("</TD><TD ALIGN='right' WIDTH='20' CLASS='photoalbumheader'>");
  document.write("<SPAN ID='btnNext' STYLE='visibility: visible'><A HREF='javascript:showParent()' ID='linkBtnNext'><IMG SRC='index.gif' ID='imgBtnNext' BORDER='0' ALIGN='absmiddle' ALT='P&aacute;gina principal'></A></SPAN>");
  document.write("</TD></TR>");
  document.write("</TABLE><BR><BR>");     
  
  
  document.write("<SPAN ID='index'>");
  document.write("<TABLE BORDER=0 WIDTH=" + albumWidth + " CELLSPACING=" + albumCellSpacing + " CELLPADDING=" + albumCellPadding + " ALIGN=" + albumAlignment + ">");
  document.write("<TR>");
 
  for (i = 1; i <= photos; i++)
  {
    if (i < 10)
    {
      thumbURLs[i] = url + "/" + id + "/" + id + "_0" + i + "_t.jpg";
      photoURLs[i] = url + "/" + id + "/" + id + "_0" + i + ".jpg";
    }
    else
    {
      thumbURLs[i] = url + "/" + id + "/" + id + "_" + i + "_t.jpg";
      photoURLs[i] = url + "/" + id + "/" + id + "_" + i + ".jpg";
    }
       
    document.write("<TD ALIGN=center VALIGN=top WIDTH=" + thumbnailWidth + ">");
    document.write("<A HREF='javascript:showPhoto(" + i + ")' BORDER=0 ALT=''>");
    document.write("<IMG SRC='" + thumbURLs[i] + "' BORDER=" + photoBorder + " WIDTH=" + thumbnailWidth + " HEIGHT=" + thumbnailHeight + "></A><BR>");
    
    if (photoComments[i] != null)
    {
      document.write("<DIV CLASS='photoalbumcomment'>" + photoComments[i] + "</DIV>");
    }
    else
    {
      document.write("<DIV CLASS='photoalbumcomment'>&nbsp;</DIV>");
    }

    document.write("</TD>");

    if (i % photosInRow == 0)
    {
      document.write("</TR><TR>");
    }
    else
    {
      document.write("<TD></TD>");
    }
  }
  
  document.write("</TR>");
  document.write("</TABLE>");
  document.write("</SPAN>");
  
  document.write("<SPAN ID='visor' STYLE='display: none'>");
  document.write("<DIV ALIGN='center'>");                 
  document.write("<IMG ID='canvas' SRC='blank.gif'>");
  document.write("</DIV>");
  document.write("<BR><BR><DIV ID='desc' CLASS='photoalbumdesc'></DIV>");
  document.write("</SPAN>");  
}