/** * Sexy LightBox - for jQuery 1.3 * @name sexylightbox.v2.2.js * @author Eduardo D. Sada - http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2 * @version 2.2 * @date 1-Jun-2009 * @copyright (c) 2009 Eduardo D. Sada (www.coders.me) * @license MIT - http://es.wikipedia.org/wiki/Licencia_MIT * @example http://www.coders.me/ejemplos/sexy-lightbox-2/ */ jQuery.bind = function(object, method){ var args = Array.prototype.slice.call(arguments, 2); return function() { var args2 = [this].concat(args, $.makeArray( arguments )); return method.apply(object, args2); }; }; (function($) { SexyLightbox = { getOptions: function() { return { name : 'SLB', zIndex : 65555, color : 'black', find : 'sexylightbox', imagesdir : '/js/lightbox/sexyimages', background : 'bgSexy.png', backgroundIE : 'bgSexy.gif', closeButton : 'SexyClose.png', displayed : 0, modal : 0, showDuration : 200, showEffect : 'linear', closeDuration : 400, closeEffect : 'linear', moveDuration : 800, moveEffect : 'easeOutBack', resizeDuration: 800, resizeEffect : 'easeOutBack', shake : { distance: 10, duration: 100, transition: 'easeInOutBack', loops: 2 }, BoxStyles : { 'width' : 486, 'height': 320 }, Skin : { 'white' : { 'hexcolor': '#FFFFFF', 'captionColor': '#000000', 'background-color': '#000', 'opacity': 0.6 }, 'black' : { 'hexcolor': '#000000', 'captionColor': '#FFFFFF', 'background-color': '#fff', 'opacity': 0.6 }} }; }, initialize: function(options) { this.options = $.extend(this.getOptions(), options); this.options.OverlayStyles = $.extend(this.options.Skin[this.options.color], this.options.OverlayStyles || {}); var strBG = this.options.imagesdir+'/'+this.options.color+'/'+((((window.XMLHttpRequest == undefined) && (ActiveXObject != undefined)))?this.options.backgroundIE:this.options.background); var name = this.options.name; $('html').append('
'); this.Overlay = $('#'+name+'-Overlay'); this.Wrapper = $('#'+name+'-Wrapper'); this.Background = $('#'+name+'-Background'); this.Contenedor = $('#'+name+'-Contenedor'); this.Top = $('#'+name+'-Top'); this.CloseButton = $('#'+name+'-CloseButton'); this.Contenido = $('#'+name+'-Contenido'); this.bb = $('#'+name+'-Bottom'); this.innerbb = $('#'+name+'-BottomRight'); this.Nav = $('#'+name+'-Navegador'); this.Descripcion = $('#'+name+'-Caption'); this.Overlay.css({ 'position' : 'fixed', 'top' : 0, 'left' : 0, 'opacity' : this.options.OverlayStyles['opacity'], 'height' : $(document).height(), 'width' : $(document).width(), 'z-index' : this.options.zIndex, 'background-color': this.options.OverlayStyles['background-color'] }).hide(); this.Wrapper.css({ 'z-index' : this.options.zIndex, 'top' : (-this.options.BoxStyles['height']-280)+'px', 'left' : ( ($(document).width() - this.options.BoxStyles['width']) / 2) }).hide(); this.Background.css({ 'z-index' : this.options.zIndex + 1 }); this.Contenedor.css({ 'position' : 'absolute', 'width' : this.options.BoxStyles['width'] + 'px', 'z-index' : this.options.zIndex + 2 }); this.Contenido.css({ 'height' : this.options.BoxStyles['height'] + 'px', 'border-left-color' : this.options.Skin[this.options.color].hexcolor, 'border-right-color': this.options.Skin[this.options.color].hexcolor }); this.Nav.css({ 'color' : this.options.Skin[this.options.color].captionColor }); this.Descripcion.css({ 'color' : this.options.Skin[this.options.color].captionColor }); /** * AGREGAMOS LOS EVENTOS ************************/ this.CloseButton.bind('click', $.bind(this, function(){ this.close(); return false; })); this.Overlay.bind('click', $.bind(this, function(){ if (!this.options.modal) { this.close(); } })); $(document).bind('keydown', $.bind(this, function(obj, event){ if (this.options.displayed == 1) { if (event.keyCode == 27){ this.close(); } if (event.keyCode == 37){ if (this.prev) { this.prev.trigger('click', event); } } if (event.keyCode == 39){ if (this.next) { this.next.trigger('click', event); } } } })); $(window).bind('resize', $.bind(this, function(){ if(this.options.displayed == 1) { this.replaceBox(); } else { this.Overlay.css({'height': '0px', 'width': '0px'}); } })); $(window).bind('scroll', $.bind(this, function(){ if(this.options.displayed == 1) { this.replaceBox(); } })); this.refresh(); }, hook: function(enlace) { enlace = $(enlace); enlace.blur(); this.show((enlace.attr("title") || enlace.attr("name") || ""), enlace.attr("href"), (enlace.attr('rel') || false)); }, close: function() { this.display(0); this.modal = 0; }, refresh: function() { var self = this; this.anchors = []; $("a, area").each(function() { if ($(this).attr('rel') && new RegExp("^"+self.options.find).test($(this).attr('rel'))){ $(this).click(function(event) { event.preventDefault(); event.stopImmediatePropagation(); self.hook(this); }); if (!($(this).attr('id')==self.options.name+"Left" || $(this).attr('id')==self.options.name+"Right")) { self.anchors.push(this); } } }); }, display: function(option) { if(this.options.displayed == 0 && option != 0 || option == 1) { $('embed, object, select').css({ 'visibility' : 'hidden' }); if (this.options.displayed == 0) { this.Wrapper.css({ 'top' : (-this.options.BoxStyles['height']-280)+'px', 'height' : (this.options.BoxStyles['height']-80)+'px', 'width' : this.options.BoxStyles['width']+'px' }).hide(); } this.options.displayed = 1; this.Overlay.stop(); this.Overlay.fadeIn(this.options.showDuration, $.bind(this, function(){ this.Wrapper.show(); this.Overlay.css({ 'opacity' : this.options.OverlayStyles['opacity'] }); })); } //Cerrar el Lightbox else { $('embed, object, select').css({ 'visibility' : 'visible' }); this.Wrapper.css({ 'top' : (-this.options.BoxStyles['height']-280)+'px', 'height' : (this.options.BoxStyles['height']-80)+'px', 'width' : this.options.BoxStyles['width']+'px' }).hide(); this.options.displayed = 0; this.Overlay.stop(); this.Overlay.fadeOut(this.options.closeDuration, $.bind(this, function(){ if (this.Image) this.Image.remove(); this.Overlay.css({'height': 0, 'width': 0 }); })); } }, replaceBox: function(data) { data = $.extend({ 'width' : this.ajustarWidth, 'height' : this.ajustarHeight, 'resize' : 0 }, data || {}); if (this.MoveBox) this.MoveBox.stop(); this.MoveBox = this.Wrapper.animate({ left : ( $(window).scrollLeft() + (($(window).width() - data.width) / 2)), top : ( $(window).scrollTop() + ($(window).height() - (data.height + ((this.MostrarNav)?80:48))) / 2 ) }, { duration : this.options.moveDuration, easing : this.options.moveEffect }); if (data.resize) { if (this.ResizeBox2) this.ResizeBox2.stop(); this.ResizeBox2 = this.Contenido.animate({ height : data.height }, { duration : this.options.resizeDuration, easing : this.options.resizeEffect }); if (this.ResizeBox) this.ResizeBox.stop(); this.ResizeBox = this.Contenedor.animate({ width : data.width }, { duration : this.options.resizeDuration, easing : this.options.resizeEffect, complete : $.bind(this, function(){ this.Wrapper.css({'width' : data.width}); this.ResizeBox.trigger('onComplete'); }) }); } if (window.opera) { //Opera Bug :( this.Overlay.css({'height': 0, 'width': 0 }); } this.Overlay.css({ 'height' : $(document).height(), 'width' : $(window).width() }); }, getInfo: function (image, id) { image=$(image); IEuta = $('