/* GZIP on the fly by Raccoon Framework http://www.wt.com.mx/ */
var Galeria =
{
config:
{
resource: "",
language: "es",
por_pagina: 9,
paginado_activo: "",
paginado_inactivo: "",
path_fotos: "",
prefijo_id_foto: "",
id_menu: "",
id_titulo: "",
id_paginado: "",
id_mascara: "galeria_mascara_foto",
id_control: "galeria_control_foto",
id_layer: "galeria_layer_foto"
},
arrayFotos: [],
indice_actual: null,
init: function(config)
{
if (config.resource)
{
Galeria.config.resource = config.resource;
}
if (config.language)
{
Galeria.config.language = config.language;
}
if (config.por_pagina)
{
Galeria.config.por_pagina = config.por_pagina;
}
if (config.paginado_activo)
{
Galeria.config.paginado_activo = config.paginado_activo;
}
if (config.paginado_inactivo)
{
Galeria.config.paginado_inactivo = config.paginado_inactivo;
}
if (config.path_fotos)
{
Galeria.config.path_fotos = config.path_fotos;
}
if (config.prefijo_id_foto)
{
Galeria.config.prefijo_id_foto = config.prefijo_id_foto;
}
if (config.id_menu)
{
Galeria.config.id_menu = config.id_menu;
}
if (config.id_titulo)
{
Galeria.config.id_titulo = config.id_titulo;
}
if (config.id_paginado)
{
Galeria.config.id_paginado = config.id_paginado;
}
Event.observe(window, "load", function() {
Galeria.initLayers();
});
if (config.load_categories)
{
Event.observe(window, "load", function() {
new Ajax.Request(
Galeria.config.resource,
{
method: 'get',
parameters: {
act: 'categorias',
language: Galeria.config.language
},
onSuccess: function(transport, json)
{
var cargado = false;
var menu = "";
json.categorias.each(function(categoria) {
menu += '
'+categoria.nombre+'';
if(!cargado){
cargado = true;
Galeria.cargaFotos(categoria.id, categoria.nombre);
}
});
$(Galeria.config.id_menu).update("");
}
}
);
});
}
},
initLayers: function()
{
var mascara = $(Galeria.config.id_mascara);
var control = $(Galeria.config.id_control);
var layer = $(Galeria.config.id_layer);
if (!mascara || mascara.ancestors()[0] !== "body")
{
mascara = Builder.node("div");
mascara = $(mascara);
mascara.id = Galeria.config.id_mascara;
document.body.appendChild(mascara);
}
if (!control || control.ancestors()[0] !== "body")
{
control = Builder.node("div");
control = $(control);
control.id = Galeria.config.id_control;
var tabla_control = "";
if (Galeria.config.language == "es")
{
tabla_control = "" +
'' +
'| Anterior | '+
'Cerrar | '+
'Siguiente | '+
'
';
}
else if (Galeria.config.language == "en")
{
tabla_control = "" +
'' +
'| Back | '+
'Close | '+
'Next | '+
'
';
}
control.update(tabla_control);
document.body.appendChild(control);
}
if (!layer || layer.ancestors()[0] !== "body")
{
layer = Builder.node("div");
layer = $(layer);
layer.id = Galeria.config.id_layer;
document.body.appendChild(layer);
}
mascara.hide();
control.hide();
layer.hide();
var sizes = Galeria.getWindowSizes();
control.style.position = "absolute";
control.style.backgroundColor = "#FFFFFF";
control.style.color = "#000000";
control.style.zIndex = 99999999;
mascara.style.position = "absolute";
mascara.style.left = "0px";
mascara.style.top = "0px";
mascara.style.width = sizes.width + "px";
mascara.style.height = sizes.height + "px";
mascara.style.backgroundColor = "#000000";
mascara.style.zIndex = 99999998;
layer.style.position = "absolute";
layer.style.backgroundPosition = "center center";
layer.style.backgroundRepeat = "no-repeat";
layer.style.zIndex = 99999999;
},
getWindowSizes: function()
{
var sizes = {
width : 0,
height : 0
};
if (window.innerWidth) {
sizes.width = window.innerWidth;
sizes.height = window.innerHeight;
} else if (document.documentElement.clientWidth) {
sizes.width = document.documentElement.clientWidth;
sizes.height = document.documentElement.clientHeight;
}
return sizes;
},
cargaFotosCarpeta: function(carpeta, nombre)
{
Event.observe(window, "load", function() {
if (Galeria.config.language == "es")
{
$(Galeria.config.id_titulo).update("cargando...");
}
else if (Galeria.config.language == "en")
{
$(Galeria.config.id_titulo).update("loading...");
}
new Ajax.Request(
Galeria.config.resource,
{
method: 'get',
parameters: {
act: 'carpeta',
dir: carpeta
},
onSuccess: function(transport, json)
{
Galeria.arrayFotos = json.fotos;
$(Galeria.config.id_titulo).update(nombre);
Galeria.paginado();
Galeria.pintaFotos(1);
}
}
);
});
},
cargaFotos: function(id_categoria, nombre)
{
if (Galeria.config.language == "es")
{
$(Galeria.config.id_titulo).update("cargando...");
}
else if (Galeria.config.language == "en")
{
$(Galeria.config.id_titulo).update("loading...");
}
new Ajax.Request(
Galeria.config.resource,
{
method: 'get',
parameters: {
act: 'fotos',
id: id_categoria,
language: Galeria.config.language
},
onSuccess: function(transport, json)
{
Galeria.arrayFotos = json.fotos;
$(Galeria.config.id_titulo).update(nombre);
Galeria.paginado();
Galeria.pintaFotos(1);
}
}
);
},
paginado: function()
{
var paginas = "";
var termina = Math.ceil(Galeria.arrayFotos.length / Galeria.config.por_pagina);
for (var i = 1; i <= termina; i++)
{
paginas += ""+i+"\n";
}
$(Galeria.config.id_paginado).update(paginas);
},
pintaFotos: function(pagina)
{
$$("#" + Galeria.config.id_paginado + " span").each(function(span) {
span.className = Galeria.config.paginado_activo;
});
$("galeria_pagina_" + pagina).className = Galeria.config.paginado_inactivo;
pagina -= 1;
var inicia = pagina * Galeria.config.por_pagina;
var elemento = null;
for (var i = 1 ; i <= Galeria.config.por_pagina; i++)
{
elemento = $(Galeria.config.prefijo_id_foto + i);
if (Galeria.arrayFotos[(inicia + i) - 1]) {
elemento.style.backgroundImage = "url("+Galeria.config.path_fotos +"loading.gif)";
elemento.style.backgroundPosition = "center center";
elemento.style.backgroundRepeat = "no-repeat";
elemento.style.cursor = "pointer";
elemento.src = Galeria.config.path_fotos + "thumbs/" + Galeria.arrayFotos[(inicia + i) - 1].thumb;
elemento.setAttribute("srcFoto", (inicia + i) - 1);
elemento.onclick = function() {
Galeria.indice_actual = this.getAttribute("srcFoto");
//console.log("Indice actual: " + Galeria.indice_actual);
Galeria.mostrarFoto();
};
} else {
elemento.style.cursor = "default";
elemento.style.backgroundImage = "url("+Galeria.config.path_fotos +"blank.gif)";
elemento.src = Galeria.config.path_fotos + "blank.gif";
}
}
},
mostrarFoto: function()
{
var indice = Galeria.indice_actual;
var foto = Galeria.arrayFotos[indice].foto;
var mascara = $(Galeria.config.id_mascara);
var control = $(Galeria.config.id_control);
var layer = $(Galeria.config.id_layer);
var control_height = 30;
var sizes = Galeria.getWindowSizes();
control.style.left = ((sizes.width / 2) - (foto.width / 2)) + "px";
control.style.top = (((sizes.height / 2) - (foto.height / 2)) - (control_height / 2)) + "px";
control.style.width = foto.width + "px";
control.style.height = control_height + "px";
layer.style.left = ((sizes.width / 2) - (foto.width / 2)) + "px";
layer.style.top = (((sizes.height / 2) - (foto.height / 2)) + (control_height / 2)) + "px";
layer.style.width = foto.width + "px";
layer.style.height = foto.height + "px";
layer.style.backgroundImage = "url(" + Galeria.config.path_fotos + "loading.gif)";
layer.style.backgroundImage = "url(" + Galeria.config.path_fotos + foto.src + ")";
control.show();
mascara.show();
new Effect.Opacity(mascara, { duration:0.2, from:1.0, to:0.7 });
Effect.Appear(layer);
},
fotoCerrar: function()
{
$(Galeria.config.id_mascara).hide();
$(Galeria.config.id_control).hide();
$(Galeria.config.id_layer).hide();
},
fotoAnterior: function()
{
Galeria.indice_actual = parseInt(Galeria.indice_actual);
Galeria.indice_actual -= 1;
if (Galeria.indice_actual == -1)
{
Galeria.indice_actual = Galeria.arrayFotos.length;
}
//console.log("Se cambia a: " + Galeria.indice_actual);
if (Galeria.arrayFotos[Galeria.indice_actual])
{
//console.log("Pintar foto: " + Galeria.indice_actual);
Galeria.mostrarFoto();
}
else
{
//console.log("No existe el indice: " + Galeria.indice_actual);
Galeria.fotoAnterior();
}
},
fotoSiguiente: function()
{
Galeria.indice_actual = parseInt(Galeria.indice_actual);
Galeria.indice_actual += 1;
if (Galeria.indice_actual >= Galeria.arrayFotos.length)
{
Galeria.indice_actual = 0;
}
//console.log("Se cambia a: " + Galeria.indice_actual);
if (Galeria.arrayFotos[Galeria.indice_actual])
{
//console.log("Pintar foto: " + Galeria.indice_actual);
Galeria.mostrarFoto();
}
else
{
//console.log("No existe el indice: " + Galeria.indice_actual);
Galeria.fotoSiguiente();
}
}
};