/*
###############################################################################
# album.js                                                                    #
###############################################################################
# JSAlbum de {El Codigo}                                                      #
# Album de imagenes dinamico realizado con JavaScript                         #
# Version:          JSAlbum 1.0                                               #
# Publicado:        15 de mayo de 2006                                        #
# Distribuido por:  http://www.elcodigo.com                                   #
###############################################################################
# Copyright (c) 2006 Ivan Nieto Perez                                         #
# Sujeto a los términos de licencia descritos en el documento licencia.txt    #
# Esta cabecera debe permanecer invariable.                                   #
###############################################################################
*/

//CONFIGURACION
var url_album = 'album.html'	//url del album en tu sitio web
var tipo_fuente = 'Verdana, Arial, Serif'
var grosor_fuente = '400'
var color_fuente = '#483713'
var tamano_fuente = '0.9em'
var tamano_fuente_titulo = '1.1em'
var grosor_fuente_titulo = '600'
var color_fuente_titulo = '#A25151'
var color_fondo = '#FFFFFF'
var color_fuente_clave = '#FF0000'
var color_enlace = '#554B8B'
var grosor_enlace = '600'
var color_enlace_visitado = '#AD83B4'
var color_enlace_activo = '#DD0000'
var fondo_enlace_visitado = '#FFA4A4'
var ancho_visor = '30%'				//ancho de la tabla del visor

//Definicion de albums
var albums = new Array()
//                             ruta               prefijo  nombre   extension  ancho  alto inicio fin columnas titulo

albums[0] = new ObjetoAlbum( '/album/2009/', 'mini_','fot_', 'jpg',     100,   90,  1,     65,  3,       'Galeria de imagenes 2009' )
albums[1] = new ObjetoAlbum( '/album/2008/', 'mini_','fot_', 'jpg',     100,   90,  1,     45,  3,       'Galeria de imagenes 2008' )
albums[2] = new ObjetoAlbum( '/album/2007/', 'mini_','fot_', 'jpg',     100,   90,  1,     40,  3,       'Galeria de imagenes 2007' )
albums[3] = new ObjetoAlbum( '/album/2006/', 'mini_','fot_', 'jpg',     100,   90,  1,     21,  3,       'Galeria de imagenes 2006' )
albums[4] = new ObjetoAlbum( '/album/2005/', 'mini_','fot_', 'jpg',     100,   90,  1,     20,  3,'Galeria de imagenes 2005' )
albums[5] = new ObjetoAlbum( '/album/2004/', 'mini_','fot_', 'jpg',     100,   90,  1,     17,  3,'Galeria de imagenes 2004' )
albums[6] = new ObjetoAlbum( '/album/2003/', 'mini_','fot_', 'jpg',     100,   90,  1,    15,  3,       'Galeria de imagenes 2003' )

//FIN CONFIGURACION

//variables globales
var Pagina					//string que contendra la pagina a mostrar
var filasXpag
var Fila
var url = document.location.href

//Lectura de parametros pasados a la pagina
function LeeParametros( parametro ) {

	if ( url.indexOf('?') != -1 ) {
		if ( url.indexOf( parametro, url.indexOf('?') ) != -1 ) {
			var pos_inicial = url.indexOf("=", url.indexOf( parametro, url.indexOf('?') ) )
			var hasta = url.indexOf("&", pos_inicial)
			var pos_final = (hasta != -1 ? hasta : url.length)
			return url.substring(pos_inicial + 1, pos_final)
		} else {
			return ''
		}
	} else {
		return ''
	}
}

function IniciaPagina( columnas, titulo ) {
	//crea inicio pagina a visualizar y la muestra
	Pagina += '<div align="center"><table width="' + ancho_visor + '"><tr><td colspan="' + columnas + '" align="top"><b>' + titulo + '</b></td></tr>\n'
}

function TerminaPagina() {
	//crea final pagina
	Pagina += '</table>\n'
	if ( accion != '' ) Pagina += '<p><a href="' + url_album + '">Inicio</a>'
	Pagina += '</div>'
}

function CreaFila(indiceFil, imagen) {
	var numImg
	Fila[indiceFil] = '<tr>'
	numImg = imagen.indiceIni + imagen.imgXfila * indiceFil
	for ( indiceCol = 0; indiceCol < imagen.imgXfila; indiceCol++) {
		if ( numImg > imagen.indiceFin ) {
			Fila[indiceFil] += '<td align="center" valign="top"></td>\n'
			continue
		}
		//imagen de cada fila
		Fila[indiceFil] += '<td align="top" valign="top">' +
			'<a href="' + url_album + '?album=' + album + '&accion=verimg&idimag=' + numImg + '">' + 
			'<img src="' + imagen.rutaImg + imagen.prefThum + imagen.nomImg + numImg + '.' + imagen.extImg + '" width="' + imagen.anchoImg + '" height="' + imagen.altoImg + '" alt="' + imagen.nomImg + numImg + '.' + imagen.extImg + '">' +
			'<br>' + imagen.nomImg + numImg + '.' + imagen.extImg + '</a></td>\n'
			
		numImg++
	}
	Fila[indiceFil] += '</tr>'
}

function MuestraPagina() {
	//muestra el contenido del display
	document.write(Pagina)
}


// imagen: objeto con los datos de las imagenes
function CreaIndice( imagen ) {
	//inicia variables globales
	Pagina = ''
	filasXpag = Math.ceil( (imagen.indiceFin - imagen.indiceIni + 1) / imagen.imgXfila)   //numero de filas de imagenes por pagina
	Fila = new Array(filasXpag)      
   
	//escribe pagina
	IniciaPagina( imagen.imgXfila, imagen.Titulo )
	for ( indiceFil = 0; indiceFil < filasXpag; indiceFil++) {
		CreaFila(indiceFil, imagen)
		Pagina += Fila[indiceFil]
	}
	TerminaPagina()
}

// imagen: objeto con los datos de las imagenes:
function MuestraImagen( imagen, numImg ) {
	
	if ( numImg < imagen.indiceIni ) numImg = imagen.indiceIni
	else if ( numImg > imagen.indiceFin ) numImg = imagen.indiceFin
	
	//inicia variables globales
	Pagina = ""
	var siguiente = parseInt(numImg) + 1
	if ( siguiente > imagen.indiceFin ) siguiente = imagen.indiceFin
	var anterior = parseInt(numImg) - 1
	if ( anterior < imagen.indiceIni ) anterior = imagen.indiceIni
	
	//tabla de 3 columnas
	//fila con imagen
	IniciaPagina( 1, imagen.Titulo)
	Pagina += '<td align="center" valign="top"><img src="' + imagen.rutaImg + imagen.nomImg + numImg + '.' + imagen.extImg + '" alt="' + imagen.nomImg + numImg + '.' + imagen.extImg + '"></td>'
	
	//fila con controles
	Pagina += '<tr><td align="center" valign="top">' +
		'<a href="' + url_album + '?album=' + album + '&accion=verimg&idimag=' + imagen.indiceIni + '" title="Primera"><img src="ir_primera.gif" border="0"></a>' +
		'&nbsp;<a href="' + url_album + '?album=' + album + '&accion=verimg&idimag=' + anterior + '" title="Anterior"><img src="anterior.gif" border="0"></a>' +
		'&nbsp;<a href="' + url_album + '?album=' + album + '&accion=verind" title="Indice"><img src="indice.gif" border="0"></a>' +
		'&nbsp;<a href="' + url_album + '?album=' + album + '&accion=verimg&idimag=' + siguiente + '" title="Siguiente"><img src="siguiente.gif" border="0"></a>' +
		'&nbsp;<a href="' + url_album + '?album=' + album + '&accion=verimg&idimag=' + imagen.indiceFin + '" title="Ultima"><img src="ir_ultima.gif" border="0"></a>' +
		'</td></tr>\n'
	
	TerminaPagina()
}


function CreaEnlaces() {
	//inicia variables globales
	Pagina = ""
	IniciaPagina( 1, '' )
	for ( numalbum = 0; numalbum < albums.length; numalbum++) {
		Pagina += '<tr><td><a href="album.html?accion=verind&album=' + numalbum + '">' + albums[numalbum].Titulo + '</a></td></tr>\n'
	}
	TerminaPagina()
}


function ObjetoAlbum( ruta, prefijo, nombre, extension, ancho, alto, inicio, fin, columnas, titulo ) {
	this.rutaImg = ruta			//ruta fisica de las imagenes (con / al final)
	this.prefThum = prefijo			//prefijo nombre thumbnails
	this.nomImg = nombre			//nombre con que comienzan las imagenes
	this.extImg = extension			//extension imagenes
	this.indiceIni = inicio			//indice primera imagen
	this.indiceFin = fin			//indice ultima imagen
	this.Titulo = titulo			//titulo de la pagina
	
	this.anchoImg = ancho			//ancho imagenes thumbnail
	this.altoImg = alto			//alto imagenes thumbnail
	
	this.imgXfila = columnas
}

function CreaEstilo () {
	var estilo = '<style type="text/css">\n' +
		'body {font-family: ' + tipo_fuente + '; font-weight: ' + grosor_fuente + '; color: ' + color_fuente + '; background-color: ' + color_fondo + '; }\n' +
		'.clave {color: ' + color_fuente_clave + ';}\n' +
		'a:link {color: ' + color_enlace + '; text-decoration: none; font-weight: ' + grosor_enlace + ';}\n' +
		'a:visited {color: ' + color_enlace_visitado + '; text-decoration: none; font-weight: ' + grosor_enlace + ';}\n' +
		'a:active {color: ' + color_enlace_activo + '; text-decoration: none; font-weight: ' + grosor_enlace + ';}\n' +
		'a:hover {color: ' + color_enlace + '; text-decoration: none;background: ' + fondo_enlace_visitado + '; font-weight: ' + grosor_enlace + ';}\n' +
		'td  { padding: 7px;  font-size: ' + tamano_fuente + '; vertical-align: top; }\n' +
		'table { margin-left: 50px; margin-right: 50px;}\n' +
		'h1 {margin-left: 25px; margin-right: 20px; font-size: ' + tamano_fuente_titulo + '; font-weight: ' + grosor_fuente_titulo + '; color: ' + color_fuente_titulo + ';}\n' +
		'p {margin-left: 25px; margin-right: 20px; font-size: ' + tamano_fuente + ';}\n' +
		'</style>\n'

	document.write( estilo )
}

//obtiene parametros entrada
var accion = LeeParametros('accion')
var album = LeeParametros('album')

//realiza accion
if ( accion == 'verind' ) {
	CreaIndice( albums[album] )	
} else if ( accion == 'verimg' ) {
	var idimag = LeeParametros('idimag')
	MuestraImagen( albums[album], idimag )
} else {
	CreaEnlaces()
}
