
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:32000,
                color:'negro',
                find:'sexylightbox',
                dir:'sexyimages',
                emergefrom:'top',
                background:'bgSexy.png',
                backgroundIE:'bgSexy.gif',
                buttons:'buttons.png',
                displayed:0,
                showDuration:200,
                closeDuration:400,
                moveDuration:1000,
                moveEffect:'easeInOutBack',
                resizeDuration:1000,
                resizeEffect:'easeInOutBack',
                shake:{
                    distance:10,
                    duration:100,
                    transition:'easeInOutBack',
                    loops:2
                },
                BoxStyles:{
                    'width':486,
                    'height':320
                },
                Skin:{
                    'white':{
                        'hexcolor':'#000000',
                        'captionColor':'#000000',
                        'background-color':'#000000',
                        'opacity':0.6
                    },
                    'black':{
                        'hexcolor':'#000000',
                        'captionColor':'#000000',
                        'background-color':'#000000',
                        'opacity':0.6
                    },
                    'blanco':{
                        'hexcolor':'#000000',
                        'captionColor':'#000000',
                        'background-color':'#000000',
                        'opacity':0.6
                    },
                    'negro':{
                        'hexcolor':'#100000',
                        'captionColor':'#100000',
                        'background-color':'#180000',
                        'opacity':0.6
                    }
                }
            };

},
overlay:{
    create:function(options){
        this.options=options;
        this.element=$('<div id="'+new Date().getTime()+'"></div>');
        this.element.css($.extend({},{
            'position':'absolute',
            'top':0,
            'left':0,
            'opacity':0,
            'display':'none',
            'z-index':this.options.zIndex
            },this.options.style));
        this.element.bind('click',$.bind(this,function(obj,event){
            if(this.options.hideOnClick){
                if(this.options.callback){
                    this.options.callback();
                }else{
                    this.hide();
                }
            }
        event.preventDefault();
            }));
    this.hidden=true;
    this.inject();
},
inject:function(){
    this.target=$(document.body);
    this.target.append(this.element);
    if($.browser.msie&&$.browser.version=="6.0")

    {
        var zIndex=parseInt(this.element.css('zIndex'));
        if(!zIndex)

        {
            zIndex=1;
            var pos=this.element.css('position');
            if(pos=='static'||!pos)

            {
                this.element.css({
                    'position':'relative'
                });
            }
            this.element.css({
                'zIndex':zIndex
            });
        }
        zIndex=(!!(this.options.zIndex||this.options.zIndex===0)&&zIndex>this.options.zIndex)?this.options.zIndex:zIndex-1;
        if(zIndex<0)

        {
            zIndex=1;
        }
        this.shim=$('<iframe id="IF_'+new Date().getTime()+'" scrolling="no" frameborder=0 src=""></div>');
        this.shim.css({
            zIndex:zIndex,
            position:'absolute',
            top:0,
            left:0,
            border:'none',
            opacity:0
        });
        this.shim.insertAfter(this.element);
    }
},
resize:function(x,y){
    this.element.css({
        'height':0,
        'width':0
    });
    if(this.shim)this.shim.css({
        'height':0,
        'width':0
    });
    var win={
        x:$(document).width(),
        y:$(document).height()
        };

    var chromebugfix=$.browser.safari?(win.x-25<document.body.clientWidth?document.body.clientWidth:win.x):win.x;
    this.element.css({
        width:x?x:chromebugfix,
        height:y?y:win.y
        });
    if(this.shim)

    {
        this.shim.css({
            'height':0,
            'width':0
        });
        this.shim.css({
            width:x?x:chromebugfix,
            height:y?y:win.y
            });
    }
    return this;
},
show:function(){
    if(!this.hidden)return this;
    if(this.transition)this.transition.stop();
    this.target.bind('resize',$.bind(this,this.resize));
    this.resize();
    if(this.shim)this.shim.css({
        'display':'block'
    });
    this.hidden=false;
    this.transition=this.element.fadeIn(this.options.showDuration,$.bind(this,function(){
        this.element.trigger('show');
    }));
    return this;
},
hide:function(){
    if(this.hidden)return this;
    if(this.transition)this.transition.stop();
    this.target.unbind('resize');
    if(this.shim)this.shim.css({
        'display':'none'
    });
    this.hidden=true;
    this.transition=this.element.fadeOut(this.options.closeDuration,$.bind(this,function(){
        this.element.trigger('hide');
        this.element.css({
            'height':0,
            'width':0
        });
    }));
    return this;
}
},
backwardcompatibility:function(option){
    this.options.dir=option.imagesdir||option.path||option.folder||option.dir;
    this.options.OverlayStyles=$.extend(this.options.Skin[this.options.color],this.options.OverlayStyles||{});
},
preloadimage:function(url){
    img=new Image();
    img.src=url;
},
initialize:function(options){
    this.options=$.extend(this.getOptions(),options);
    this.backwardcompatibility(this.options);
    var strBG=this.options.dir+'/'+this.options.color+'/'+((((window.XMLHttpRequest==undefined)&&(ActiveXObject!=undefined)))?this.options.backgroundIE:this.options.background);
    var name=this.options.name;
    this.preloadimage(strBG);
    this.preloadimage(this.options.dir+'/'+this.options.color+'/'+this.options.buttons);
    this.overlay.create({
        style:this.options.Skin[this.options.color],
        hideOnClick:true,
        zIndex:this.options.zIndex-1,
        callback:$.bind(this,this.close),
        showDuration:this.options.showDuration,
        showEffect:this.options.showEffect,
        closeDuration:this.options.closeDuration,
        closeEffect:this.options.closeEffect
        });
    this.lightbox={};

    $('body').append('<div id="'+name+'-Wrapper"><div id="'+name+'-Background"></div><div id="'+name+'-Contenedor"><div id="'+name+'-Top" style="background-image: url('+strBG+')"><a id="'+name+'-CloseButton" href="#">&nbsp;</a><div id="'+name+'-TopLeft" style="background-image: url('+strBG+')"></div></div><div id="'+name+'-Contenido"></div><div id="'+name+'-Bottom" style="background-image: url('+strBG+')"><div id="'+name+'-BottomRight" style="background-image: url('+strBG+')"><div id="'+name+'-Navegador"><strong id="'+name+'-Caption"></strong></div></div></div></div></div>');
    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.Wrapper.css({
        'z-index':this.options.zIndex,
        'display':'none'
    }).hide();
    this.Background.css({
        'z-index':this.options.zIndex+1
        });
    this.Contenedor.css({
        'position':'absolute',
        'width':this.options.BoxStyles['width'],
        'z-index':this.options.zIndex+2
        });
    this.Contenido.css({
        'height':this.options.BoxStyles['height'],
        'border-left-color':this.options.Skin[this.options.color].hexcolor,
        'border-right-color':this.options.Skin[this.options.color].hexcolor
        });
    this.CloseButton.css({
        'background-image':'url('+this.options.dir+'/'+this.options.color+'/'+this.options.buttons+')'
        });
    this.Nav.css({
        'color': this.options.Skin[this.options.color].captionColor
            
        });
    this.Descripcion.css({
//        'color':this.options.Skin[this.options.color].captionColor
        'color': 'white'
        });
    this.CloseButton.bind('click',$.bind(this,function(){
        this.close();
        return false;
    }));
    $(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();
        this.overlay.resize();
    }
}));
$(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.animate(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();
                self.hook(this);
            });
            if(!($(this).attr('id')==self.options.name+"-Left"||$(this).attr('id')==self.options.name+"-Right")){
                self.anchors.push(this);
            }
        }
    });
},
animate:function(option){
    if(this.options.displayed==0&&option!=0||option==1)

    {
        this.overlay.show();
        this.options.displayed=1;
        this.Wrapper.css({
            'display':'block'
        });
    }
    else
    {
        this.Wrapper.css({
            'display':'none',
            'top':-(this.options.BoxStyles['height']+280)
            }).hide();
        this.overlay.hide();
        this.overlay.element.bind('hide',$.bind(this,function(){
            if(this.options.displayed){
                if(this.Image)this.Image.remove();
                this.options.displayed=0;
            }
        }));
}
},
replaceBox:function(data){
    var size={
        x:$(window).width(),
        y:$(window).height()
        };

    var scroll={
        x:$(window).scrollLeft(),
        y:$(window).scrollTop()
        };

    var width=this.options.BoxStyles['width'];
    var height=this.options.BoxStyles['height'];
    if(this.options.displayed==0)

    {
        var x=0;
        var y=0;
        y=scroll.x+((size.x-width)/2);
        if(this.options.emergefrom=="bottom")

        {
            x=(scroll.y+size.y+80);
        }
        else
        {
            x=(scroll.y-height)-80;
        }
        this.Wrapper.css({
            'display':'none',
            'top':x,
            'left':y
        });
        this.Contenedor.css({
            'width':width
        });
        this.Contenido.css({
            'height':height-80
            });
    }
    data=$.extend({},{
        'width':this.lightbox.width,
        'height':this.lightbox.height,
        'resize':0
    },data);
    if(this.MoveBox)this.MoveBox.stop();
    this.MoveBox=this.Wrapper.animate({
        'left':(scroll.x+((size.x-data.width)/2)),
        'top':(scroll.y+(size.y-(data.height+(this.navigator?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:function(){
                $(this).trigger('complete');
            }
        });
}
},
getInfo:function(image,id){
    image=$(image);
    IEuta=$('<a id="'+this.options.name+'-'+id+'" title="'+image.attr('title')+'" rel="'+image.attr('rel')+'">&nbsp;</a>');
    IEuta.css({
        'background-image':'url('+this.options.dir+'/'+this.options.color+'/'+this.options.buttons+')'
        });
    IEuta.attr('href',image.attr('href'));
    return IEuta;
},
display:function(url,title,force){
    return this.show(title,url,'',force);
},
show:function(caption,url,rel,force){
    this.showLoading();
    var baseURL=url.match(/(.+)?/)[1]||url;
    var imageURL=/\.(jpe?g|png|gif|bmp)/gi;
    var queryString=url.match(/\?(.+)/);
    if(queryString)queryString=queryString[1];
    var params=this.parseQuery(queryString);
    if(this.ResizeBox)this.ResizeBox.unbind('complete');
    params=$.extend({},{
        'width':0,
        'height':0,
        'modal':0,
        'background':'#180000',
        'title':caption
    },params||{});
    params['width']=parseInt(params['width']);
    params['height']=parseInt(params['height']);
    params['modal']=parseInt(params['modal']);
    this.overlay.options.hideOnClick=!params['modal'];
    this.lightbox=$.extend({},params,{
        'width':params['width']+14
        });
    this.navigator=this.lightbox.title?true:false;
    if(force=='image'||baseURL.match(imageURL))

    {
        this.img=new Image();
        this.img.onload=$.bind(this,function(){
            this.img.onload=function(){};

            if(!params['width'])

            {
                var objsize=this.calculate(this.img.width,this.img.height);
                params['width']=objsize.x;
                params['height']=objsize.y;
                this.lightbox.width=params['width']+14;
            }
            this.lightbox.height=params['height']-(this.navigator?21:35);
            this.replaceBox({
                'resize':1
            });
            this.ResizeBox.bind('complete',$.bind(this,function(){
                this.showImage(this.img.src,params);
            }));
        });
        this.img.onerror=$.bind(this,function(){
            this.show('',this.options.imagesdir+'/'+this.options.color+'/404.png',this.options.find);
        });
        this.img.src=url;
    }else{
        this.lightbox.height=params['height']+($.browser.opera?2:0);
        this.replaceBox({
            'resize':1
        });
        if(url.indexOf('TB_inline')!=-1)

        {
            this.ResizeBox.bind('complete',$.bind(this,function(){
                this.showContent($('#'+params['inlineId']).html(),this.lightbox);
            }));
        }
        else if(url.indexOf('TB_iframe')!=-1)
        {
            var urlNoQuery=url.split('TB_');
            this.ResizeBox.bind('complete',$.bind(this,function(){
                this.showIframe(urlNoQuery[0],this.lightbox);
            }));
        }
        else
        {
            this.ResizeBox.bind('complete',$.bind(this,function(){
                $.ajax({
                    url:url,
                    type:"GET",
                    cache:false,
                    error:$.bind(this,function(){
                        this.show('',this.options.imagesdir+'/'+this.options.color+'/404html.png',this.options.find)
                        }),
                    success:$.bind(this,this.handlerFunc)
                    });
            }));
        }
    }
this.next=false;
this.prev=false;
if(rel.length>this.options.find.length)
{
    this.navigator=true;
    var foundSelf=false;
    var exit=false;
    var self=this;
    $.each(this.anchors,function(index){
        if($(this).attr('rel')==rel&&!exit){
            if($(this).attr('href')==url){
                foundSelf=true;
            }else{
                if(foundSelf){
                    self.next=self.getInfo(this,"Right");
                    exit=true;
                }else{
                    self.prev=self.getInfo(this,"Left");
                }
            }
        }
    });
}
this.addButtons();
this.showNavBar(caption);
this.animate(1);
},
calculate:function(x,y){
    var maxx=$(window).width()-100;
    var maxy=$(window).height()-100;
    if(x>maxx)

    {
        y=y*(maxx/x);
        x=maxx;
        if(y>maxy)

        {
            x=x*(maxy/y);
            y=maxy;
        }
    }
else if(y>maxy)
{
    x=x*(maxy/y);
    y=maxy;
    if(x>maxx)

    {
        y=y*(maxx/x);
        x=maxx;
    }
}
return{
    x:parseInt(x),
    y:parseInt(y)
    };

},
handlerFunc:function(obj,html){
    this.showContent(html,this.lightbox);
},
addButtons:function(){
    if(this.prev)this.prev.bind('click',$.bind(this,function(obj,event){
        event.preventDefault();
        this.hook(this.prev);
    }));
    if(this.next)this.next.bind('click',$.bind(this,function(obj,event){
        event.preventDefault();
        this.hook(this.next);
    }));
},
showNavBar:function(){
    if(this.navigator)

    {
        this.bb.addClass("SLB-bbnav");
        this.Nav.empty();
        this.innerbb.empty();
        this.innerbb.append(this.Nav);
        this.Descripcion.html(this.lightbox.title);
        this.Nav.append(this.prev);
        this.Nav.append(this.next);
        this.Nav.append(this.Descripcion);
    }
    else
    {
        this.bb.removeClass("SLB-bbnav");
        this.innerbb.empty();
    }
},
showImage:function(image,size){
    this.Background.empty().removeAttr('style').css({
        'width':'auto',
        'height':'auto'
    }).append('<img id="'+this.options.name+'-Image"/>');
    this.Image=$('#'+this.options.name+'-Image');
    this.Image.attr('src',image).css({
        'width':size['width'],
        'height':size['height']
        });
    this.Contenedor.css({
        'background':'none'
    });
    this.Contenido.empty().css({
        'background-color':'transparent',
        'padding':'0px',
        'width':'auto'
    });
},
showContent:function(html,size){
    this.Background.empty().css({
        'width':size['width']-14,
        'height':size['height']+35,
        'background-color':size['background']||'#ffffff'
        });
    this.Contenido.empty().css({
        'width':size['width']-14,
        'background-color':size['background']||'#ffffff'
        }).append('<div id="'+this.options.name+'-Image"/>');
    this.Image=$('#'+this.options.name+'-Image');
    this.Image.css({
        'width':size['width']-14,
        'height':size['height'],
        'overflow':'auto',
        'background':size['height']||'#ffffff'
        }).append(html);
    this.Contenedor.css({
        'background':'none'
    });
},
showIframe:function(src,size,bg){
    this.Background.empty().css({
        'width':size['width']-14,
        'height':size['height']+35,
        'background-color':size['background']||'#ffffff'
        });
    var id="if_"+new Date().getTime()+"-Image";
    this.Contenido.empty().css({
        'width':size['width']-14,
        'background-color':size['background']||'#ffffff',
        'padding':'0px'
    }).append('<iframe id="'+id+'" frameborder="0"></iframe>');
    this.Image=$('#'+id);
    this.Image.css({
        'width':size['width']-14,
        'height':size['height'],
        'background':size['background']||'#ffffff'
        }).attr('src',src);
    this.Contenedor.css({
        'background':'none'
    });
},
showLoading:function(){
    this.Background.empty().removeAttr('style').css({
        'width':'auto',
        'height':'auto'
    });
    this.Contenido.empty().css({
        'background-color':'transparent',
        'padding':'0px',
        'width':'auto'
    });
    this.Contenedor.css({
        'background':'url('+this.options.imagesdir+'/'+this.options.color+'/loading.gif) no-repeat 50% 50%'
        });
    this.Contenido.empty().css({
        'background-color':'transparent',
        'padding':'0px',
        'width':'auto'
    });
    this.replaceBox($.extend(this.options.BoxStyles,{
        'resize':1
    }));
},
parseQuery:function(query){
    if(!query)
        return{};

    var params={};

    var pairs=query.split(/[;&]/);
    for(var i=0;i<pairs.length;i++){
        var pair=pairs[i].split('=');
        if(!pair||pair.length!=2)
            continue;
        params[unescape(pair[0])]=unescape(pair[1]).replace(/\+/g,' ');
    }
    return params;
},
shake:function(){
    var d=this.options.shake.distance;
    var l=this.Wrapper.position();
    l=l.left;
    for(x=0;x<this.options.shake.loops;x++){
        this.Wrapper.animate({
            left:l+d
            },this.options.shake.duration,this.options.shake.transition).animate({
            left:l-d
            },this.options.shake.duration,this.options.shake.transition);
    }
    this.Wrapper.animate({
        "left":l+d
        },this.options.shake.duration,this.options.shake.transition).animate({
        "left":l
    },this.options.shake.duration,this.options.shake.transition);
}
}
})(jQuery);
