/* 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 = "" + '' + ''+ ''+ ''+ '
    AnteriorCerrarSiguiente
    '; } else if (Galeria.config.language == "en") { tabla_control = "" + '' + ''+ ''+ ''+ '
    BackCloseNext
    '; } 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(); } } };