var bordeMarco = 3;
var ratioMarco = 1.4;

function cambiarColor(id)	{
	//alert(id);
	n = id.substr(7); //alert(n);
	if (n != irCapa)	{
		cambiaColor("menuSup" + n);
		cambiaColor("menuInf" + n);
	}
}

function recuperarColor(id)	{
	n = id.substr(7);
	if (n != irCapa)	{
		recuperaColor("menuSup" + n);
		recuperaColor("menuInf" + n);
	}
}

function mostrarComentario(foto, mini, comentario, opciones, tam)	{
	return "<div align='center' ><i>" + comentario + "</i></div>";
}

function mostrarFecha(foto, mini, fecha, opciones)	{
	return "<div align='center' style='color: red;'>" + fecha + "</div>";
}

function cabeceraGaleria(galeria, miniatura, capa, lasDimensiones)	{
	return "";
}

var laMiniatura = "mini.php?id=";

function elTam(tam, porciento)	{
	return "" + Math.round((parseInt(tam[0]) * parseFloat(porciento))) + "x" + Math.round(parseInt(tam[1]) * parseFloat(porciento));
}

function laMini(foto, tam)	{
	return laMiniatura + foto + "&tam=" + tam;
}

function galeriaPaginada(galeria, miniatura, FILASxPAGINA, COLUMNASxFILA, capaBase, lasDimensiones, destino)	{
	document.write(_galeriaPaginada(galeria, miniatura, FILASxPAGINA, COLUMNASxFILA, capaBase, lasDimensiones, destino))
}

// aquí la redefinición... averiguamos en el servidor el tamaño del array de fotos (galeria)
function Foto(id, tam, fecha, es, en, opciones)	{
	this.id		= id;
	this.tam	= tam;
	this.fecha	= fecha;
	this.es		= es;
	this.en		= en;
	this.opciones	= opciones;
}

Foto.prototype.miniatura = function(porcentaje)	{
	var resultado = laMiniatura + this.id + "&tam=";
	resultado += parseInt(parseInt(this.tam.split("x")[0]) * porcentaje);
	resultado += "x";
	resultado += parseInt(parseInt(this.tam.split("x")[1]) * porcentaje);
	return resultado;
}

function procesarOpcionesHead(opciones)	{
	return "";
}

function procesarOpcionesOnload(opciones)	{
	return "";
}

function procesarOpcionesBody(opciones)	{
	return "";
}

function abrirVentana(destino, opciones)	{
	return window.open("", destino, opciones);
}

function ampliarDiapo(foto, ancho, alto, opciones, destino)	{ //window.open(); return;
	var contenido = "<html>\n\t<head>\n\t\t<title>\n\t\t\tSuCaricatura.com\n\t\t</title>\n\t\t";
	contenido += procesarOpcionesHead(opciones);
	contenido += "\n\t</head>\n\t<body ";
	contenido += "onclick='window.close()' ";
	contenido += procesarOpcionesOnload(opciones);
	contenido += " >\n\t\t";
	contenido += "<div style='";
	contenido += "width: ";
	contenido += ancho;
	contenido += "px; position: absolute; top: 0px; left: 0px; margin: 0px; overflow: hidden; height:";
	contenido += alto;
	contenido += "px' >\n\t\t\t";
	contenido += "<img src='imagen.php?id=" + foto;
	contenido += "' style='position: absolute; left: 0px; top: 0px;' />\n\t\t\t";
	contenido += "<div style='position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; overflow: hidden;' >\n";
	contenido += procesarOpcionesBody(opciones);
	contenido += "\n\t\t\t</div >\n\t\t</div>\n\t</body>\n";
	contenido += "</html>";
	var opsVentana = "width=" + ancho + ",height=" + alto;
	opsVentana += ",top=" + (screen.height - alto) / 2;
	opsVentana += ",left=" + (screen.width - ancho) / 2;
	opsVentana += ",scrollbars=No";

	var ventana = abrirVentana(destino, opsVentana);
	ventana.document.open();
	ventana.document.write(contenido);
	ventana.document.close();
}

function mayor(a, b)	{
	if (a > b)
		return a;
	else
		return b;
}

function ampliarClick(opciones)	{
	// se ejecuta antes de la ampliación
	return "";
}

function masEstilos()	{
	return "";
}

function diapoAmpliable(mini, foto, tams, vista, n, opciones, destino)	{
	var tamMaxi = tams.split(",")[0];
	var tamMini = tams.split(",")[1];
	var recuadro = parseInt(mayor(parseInt(tamMini.split("x")[0]), parseInt(tamMini.split("x")[1])) * ratioMarco) + (bordeMarco * 4);
	var _Y = parseInt((recuadro - parseInt(tamMini.split("x")[1]) - bordeMarco * 2) / 2) - bordeMarco;
	var _X = parseInt((recuadro - parseInt(tamMini.split("x")[0]) - bordeMarco * 2) / 2) - bordeMarco;
	var aMostrar = "";

//	marco de la diapo
	aMostrar += "\n\t<div class='diapositiva' ";
	aMostrar += "style='";
	aMostrar += "width: " + recuadro + "px; height: " + recuadro + "px; ";
	aMostrar += masEstilos();
	aMostrar += "' ";
	aMostrar += " >";

//	Tag img
	aMostrar += "<a name='miniatura" + n + "' ";
	aMostrar += "class='miniatura' ";

	aMostrar += "href='javascript: ampliarDiapo(\"";
	aMostrar += foto + "\"," + tamMaxi.split("x")[0] + ", " + tamMaxi.split("x")[1];

	aMostrar += ", \"" + opciones + "\", \"" + destino + "\");'";

	aMostrar += "><img URL='" + mini + "' src='";
	aMostrar += (vista) ? mini : "";
	aMostrar += "' ";
	aMostrar += "name='miniatura" + n + "' ";
	aMostrar += "alt='" + mini + "' ";
	aMostrar += "title='" + foto + ", " + tamMaxi + "' ";
	aMostrar += "width='" + tamMini.split("x")[0] + "px' ";
	aMostrar += "height='" + tamMini.split("x")[1] + "px' ";

	aMostrar += "style='";// border: 3px inset; ";
	aMostrar += "top:" + _Y + "px; left:" + _X + "px;";
	aMostrar += "' ";

	aMostrar += "onclick='";
	aMostrar += ampliarClick(opciones);
	aMostrar += "'";
	aMostrar += " /></a>\n";

//	Fin marco
	aMostrar += "</div>";

	return aMostrar;
}

function mostrarPagina(galeria, columnas, vista)	{
	var aMostrar = "<div align='center' width='100%' >\n\t<table>\n\t\t<tr>";
	for (var i = 0, total = galeria.length; i < total; i ++)	{
		if ((i % columnas == 0) && (i > 0))	aMostrar += "\n\t\t</tr>\n\t</table>\n\t<table>\n\t\t<tr>";
		aMostrar += "\n\t\t\t<td style='margin: 10px'>\n";
		aMostrar += diapoAmpliable(galeria[i].mini, galeria[i].URL, galeria[i].tams, vista);
		aMostrar += "\n\t\t\t\t\t<div align='center' >" + galeria[i].comentario;
		aMostrar += "\n\t\t\t\t\t</br>";
		aMostrar += galeria[i].fecha + "\n\t\t\t\t\t</div>";
		aMostrar += "\n\t\t\t\t\t</td>";
	}
	aMostrar += "\n\t\t</tr>\n\t</table>\n</div>\n";
	return aMostrar;
}

// pasándonos a ajax
// Función de petición ajax:
var pedido;
var irCapa;

function respuestaXMLRango()	{// 
	if (pedido.readyState == 4)	{
		if (pedido.status == 200)	{
			datoTraido = pedido.responseXML.documentElement;
			// averiguamos el tamaño para el bucle:
			elementos = datoTraido.getElementsByTagName('careto');
			prime = parseInt(datoTraido.getElementsByTagName('primero')[0].firstChild.data);
			tamTraido = elementos.length;
			//alert ("trajimos " + tamTraido + " datos");
			// asignamos los valores al array galeria...
			for (var i = 0; i < tamTraido; i++)
				with(galeria[prime + i])	{
					id = elementos[i].getElementsByTagName("id")[0].firstChild.data;
					tam = elementos[i].getElementsByTagName("tam")[0].firstChild.data;
					fecha = elementos[i].getElementsByTagName("fecha")[0].firstChild.data;
					es = elementos[i].getElementsByTagName("es")[0].firstChild.data;
					en = elementos[i].getElementsByTagName("en")[0].firstChild.data;
					opciones = "ef=1,risas=1,env=1";
				}
			// y escribimos la capa correspondiente
			escribirCapa(irCapa, prime, tamTraido);

			// y actualizamos el array vistas
			vistas[irCapa] = true;
			// y mostramos la capa:
			document.getElementById(capaBase + irCapa).style.display = "block";
			
		}
		else	{
			alert("error\n" + pedido.statusText);
		}
	}
}


var fechas = new Array();
function respuestaXMLFechas()	{// 
	if (pedido.readyState == 4)	{
		if (pedido.status == 200)	{
			datoTraido = pedido.responseXML.documentElement;

			// averiguamos el tamaño para el bucle:
			elementos = datoTraido.getElementsByTagName('fecha');
			tamTraido = elementos.length;
			//alert ("trajimos " + tamTraido + " datos");
			// asignamos los valores al array galeria...
			for (var i = 0; i < tamTraido; i++) fechas[i] = elementos[i].firstChild.data;

			// y escribimos la galería buscando la última página
			document.getElementById(capaBase).innerHTML = 
				_galeriaPaginada(galeria, miniatura, FILASxPAGINA, COLUMNASxFILA, capaBase, lasDimensiones, destino);

			// El índice menor será ncapas * tamPagina:
			var indiceMenor = (ncapas - 1) * tamPagina;

			// El índice mayor será tamGaleria - 1:
			//var indiceMayor = tamGaleria - 1;
			// La petición será:

			var pedir = "AjaxBuscarFotos.php?galeria=" + g + "&rango=" + indiceMenor + "-" + tamPagina;

			irCapa = ncapas - 1;
if (ncapas > 1)	{
			cambiaColor("menuSup" + irCapa);
			cambiaColor("menuInf" + irCapa);

	document.getElementById("menuSup" + irCapa).style.textDecoration = "underline";
	document.getElementById("menuInf" + irCapa).style.textDecoration = "overline";

}
			pedirXML(pedir, respuestaXMLRango);
		}
		else	{
			alert("error\n" + pedido.statusText);
		}
	}
}


function respuestaXMLNFotos()	{// 
	if (pedido.readyState == 4)	{
		if (pedido.status == 200)	{
			datoTraido = pedido.responseXML.documentElement;
			// éxito: damos valores en blanco al array galería para mostrar luego
			tamGaleria = parseInt(datoTraido.getElementsByTagName('total')[0].firstChild.data);
			//alert(tamGaleria);
			for (var i = 0; i < tamGaleria; i ++)
				galeria[i] = new Foto("", "", "", "", "");

			// Buscamos fechas para el menu... y Escribimos las páginas:

			// La petición será:
			var pedir = "AjaxBuscarFechas.php?galeria=" + g + "&rango=" + tamPagina;
			// se debe mostrar la última capa
			//irCapa = ncapas - 1;
//alert(irCapa);
			// la respuesta será procesada por respuestaXMLNRango() 
			pedirXML(pedir, respuestaXMLFechas);
		}
		else	{
			alert("error\n" + pedido.statusText);
		}
	}
}

function pedirXML(sitio, respuesta)	{
	if (window.XMLHttpRequest)	{
		pedido = new XMLHttpRequest();
		pedido.onreadystatechange = respuesta;
		pedido.open("GET", sitio, true);
		pedido.send(null);
	}
	else
		if (window.ActiveXObject)	{
			pedido = new ActiveXObject("Microsoft.XMLHTTP");
			if (pedido)	{
				pedido.onreadystatechange = respuesta;
				pedido.open("GET", sitio, true);
				pedido.send();
			}
		}
}

// definimos las variables que suponemos definen la galería
var galeria = new Array();

var miniatura, FILASxPAGINA, COLUMNASxFILA, capaBase, lasDimensiones, destino, ncapas, tamPagina, vistas;

// por compatibilidad redefinimos la función galeriaPaginada()

function galeriaPaginada(_galeria, _miniatura, _FILASxPAGINA, _COLUMNASxFILA, _capaBase, _lasDimensiones, _destino)	{
	//galeria = _galeria;
	miniatura = _miniatura;
	FILASxPAGINA = _FILASxPAGINA;
	COLUMNASxFILA = _COLUMNASxFILA;
	tamPagina = FILASxPAGINA * COLUMNASxFILA;
	capaBase = _capaBase;
	lasDimensiones = _lasDimensiones;
	destino = _destino;

	// escribimos la capa báse (capaBase) para poder rellenar luego la galería:
	document.writeln("<div id='" + capaBase + "' style='width: 100%'></div>");// en la escritura debemos cambiar write x innerHTML

	// Averiguamos el tamaño de la galería y escribimos la última página
	pedirXML("AjaxFotos.php?galeria=" + g, respuestaXMLNFotos);
}

// Redefinimos _galeriaPaginada para que solo genere las capas... Se escribirá el contenido por peticiones

function _galeriaPaginada(galeria, _miniatura, FILASxPAGINA, COLUMNASxFILA, capaBase, lasDimensiones, destino)	{
	filasPagina	= FILASxPAGINA;
	columnas	= COLUMNASxFILA;

	tamPagina	= filasPagina * columnas;
	ncapas	= ((galeria.length % tamPagina) == 0) ? 0 : 1;
	ncapas	+= parseInt(galeria.length / tamPagina);
//alert(ncapas)
	cargada	= false;
	vistas	= Array(ncapas);
	for (var i = 0; i < ncapas; i ++)	{
		vistas[i] = false;
	}
	var mayorFecha;
	//var aMostrar = "<div id='" + capaBase + "' style='width: 100%'>";
	var aMostrar = cabeceraGaleria(galeria, _miniatura, capaBase, lasDimensiones);
	aMostrar += (ncapas > 1) ? menuGaleria(galeria, "menuSup", tamPagina, capaBase) : "";

	// primer bucle: número de capas... (ncapas)

	for (var i = 0, total = ncapas; i < total; i ++)	{
		aMostrar += "<div id='" + capaBase + i + "' align=center style='display: ";
		aMostrar += (i < (total - 1)) ? "none;'>" : "block;'>";

		aMostrar += "</div>";
	}
	aMostrar += (ncapas > 1) ? menuGaleria(galeria, "menuInf", tamPagina, capaBase) : "";
//alert(aMostrar);
	return aMostrar;
}

function escribirCapa(n, _desde, _hasta)	{
	desde = parseInt(_desde);
	hasta = parseInt(_hasta);

	var aMostrar = "<table ><tr>";
	for (j = 0; j < hasta; j ++)	{
		aMostrar += ((j % columnas == 0) && (j > 0)) ? "</tr></table><table ><tr>" : "";
		tams = galeria[j + desde].tam.split("x");
		tamMini = elTam(tams, miniatura);
		var estaMini = laMini(galeria[j + desde].id, tamMini);
		var esteTam = galeria[j + desde].tam + "," + tamMini;
		aMostrar += "<td >" + diapoAmpliable(estaMini, galeria[j + desde].id, esteTam, true, j + desde, galeria[j + desde].opciones, destino);
		aMostrar += mostrarComentario(galeria[j + desde].id, estaMini, galeria[j + desde].es, galeria[j + desde].opciones, galeria[j + desde].tam);
		aMostrar += mostrarFecha(galeria[j + desde].id, estaMini, galeria[j + desde].fecha, galeria[j + desde].opciones);
		aMostrar += "</td>";
	}
	aMostrar += "</tr></table>";
	vistas[n] = true;
	document.getElementById(capaBase + n).innerHTML = aMostrar;
}

// Redefinimos irPagina para que actualice cada Página que no haya sido cargada

function irPagina(n, de, capaBase)	{

	recuperaColor("menuSup" + irCapa);
	recuperaColor("menuInf" + irCapa);

	document.getElementById("menuSup" + n).style.textDecoration = "underline";
	document.getElementById("menuInf" + n).style.textDecoration = "overline";
	
	var total = de;
	irCapa = n;
	for (var i = 0; i < total; i ++)
		document.getElementById(capaBase + i).style.display = "none";
	if (!vistas[n])	{// pedimos los datos

		// El índice menor será n * tamPagina:
		var indiceMenor = n * tamPagina;

		// El índice mayor será indiceMenor + tamPagina - 1:
		var indiceMayor = indiceMenor + tamPagina - 1;

		// La petición será:
		var pedir = "AjaxBuscarFotos.php?galeria=" + g + "&rango=" + indiceMenor + "-" + tamPagina;

		// la respuesta será procesada por respuestaXMLNRango() 
		pedirXML(pedir, respuestaXMLRango);
	}
	document.getElementById(capaBase + n).style.display = "block";
}

//Redefinimos el menu para que muestre el XML en un popup
function menuGaleria(galeria, capa, tamPagina, capaBase)	{
	aMostrar = "<div align=center id='" + capa + "' style='";
	aMostrar += "border-color: aqua transparent; border-width: 3px; border-style: solid none;";
	aMostrar += "padding: 10px; margin: 10px;' >";
	var mayorFecha;
	var cuentaFecha = 0;
	var ncapas	= ((galeria.length % tamPagina) == 0) ? 0 : 1;
	ncapas	+= parseInt(galeria.length / tamPagina);

	for (var i = 0, total = ncapas; i < total; i ++)	{
		// fabricamos el enlace:

		indiceMenor = i * tamPagina;
		mayorFecha  = (i < ncapas - 1) ? ((i * tamPagina) + (tamPagina) - 1) : (i * tamPagina + (galeria.length % tamPagina - 1));
		indiceMayor = mayorFecha;
		enlace = "AjaxBuscarFotos.php?rango=" + indiceMenor + "-" + indiceMayor;
		// creamos el enlace:

		aMostrar += "<span onclick='irPagina(" + i + ", " + ncapas + ", \"" + capaBase + "\")' ";
		aMostrar += "title='" + fechas[cuentaFecha++] + " - ";
		aMostrar += fechas[cuentaFecha++] + "' ";

		aMostrar += "name='menu " + i + "' ";
		aMostrar += "id='" + capa + (i).toString() + "' ";

		aMostrar += "class='menuGaleria' ";
		aMostrar += "style='background-color: " + colorInicial;
		aMostrar += "; color: " + colorFinal + "; cursor: pointer;' ";

		aMostrar += "onmouseover='cambiarColor(this.id)' ";
		aMostrar += "onmouseout='recuperarColor(this.id)' ";

		aMostrar += ">[ ";
		aMostrar += (i + 1).toString();
		aMostrar += " ]</span>";
	}

	aMostrar += "</div >";
	return aMostrar;
}

// Modificación para mejorar el menú de páginas


var colorInicial, colorFinal, fondos;
c1 = "ffffff";
colorInicial = "#ffffff";
c2 = "0000ff";
colorFinal = "#0000ff";
fondos = transitar(c2, c1, 16);


