/*
	Slimbox v1.64 - The ultimate lightweight Lightbox clone
	(c) 2007-2008 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
var Slimbox;
(function(){
var G=0,F,L,B,S,T,O,E,M,
J=new Image(),
K=new Image(),
X,a,P,H,W,Z,I,Y,C;

window.addEvent("domready",function(){
    $(document.body).adopt(
        $$([
            X=new Element("div",{id:"lbOverlay"}).addEvent("click",N),
            a=new Element("div",{id:"lbCenter"}),
            Z=new Element("div",{id:"lbBottomContainer"})
        ]).setStyle("display","none")
    );
    P=new Element("div",{id:"lbImage"}).injectInside(a).adopt(
        H=new Element("a",{id:"lbPrevLink",href:"#"}).addEvent("click",D),
        W=new Element("a",{id:"lbNextLink",href:"#"}).addEvent("click",R)
    );
    
    I=new Element("div",{id:"lbBottom"}).injectInside(Z).adopt(
        new Element("a",{id:"lbCloseLink",href:"#"}).addEvent("click",N),
        Y=new Element("div",{id:"lbCaption"}),
        C=new Element("div",{id:"lbNumber"}),
        new Element("div",{styles:{clear:"both"}})
    );
    
    E={
        overlay:new Fx.Tween(X,{property:"opacity",duration:500}).set(0),
        image:new Fx.Tween(P,{property:"opacity",duration:500,onComplete:A}),
        bottom:new Fx.Tween(I,{property:"margin-top",duration:400})
    }
});

Slimbox={
    open:function(e,d,c){
        F=$extend({
            loop:false,
            overlayOpacity:0.8,
            resizeDuration:400,
            resizeTransition:false,
            initialWidth:250,
            initialHeight:250,
            animateCaption:true,
            showCounter:true,
            counterText:"Image {x} of {y}"
        },c||{});
        
        if(typeof e=="string"){
            e=[[e,d]];
            d=0
        }
        
        L=e;
        F.loop=F.loop&&(L.length>1);
        b();
        Q(true);
        O=window.getScrollTop()+(window.getHeight()/15);
        E.resize=new Fx.Morph(a,$extend({duration:F.resizeDuration,onComplete:A},F.resizeTransition?{transition:F.resizeTransition}:{}));
        a.setStyles({top:O,width:F.initialWidth,height:F.initialHeight,marginLeft:-(F.initialWidth/2),display:""});
        E.overlay.start(F.overlayOpacity);
        G=1;
        return U(d)
    }
};

Element.implement({
    slimbox:function(c,d){
        $$(this).slimbox(c,d);
        return this
    }
});
        
Elements.implement({
    slimbox:function(c,f,e){
        f=f||function(g){
            return[g.href,g.title]
        };
    
        e=e||function(){
            return true
        };
        
        var d=this;
        
        d.removeEvents("click").addEvent("click",function(){
            var g=d.filter(e,this);
            return Slimbox.open(g.map(f),g.indexOf(this),c)
        });
        
        return d
    }
});

function b(){
    X.setStyles({top:window.getScrollTop(),height:window.getHeight()})
}

function Q(c){
    ["object",window.ie?"select":"embed"].forEach(function(e){
        Array.forEach(document.getElementsByTagName(e),function(f){
            if(c){f._slimbox=f.style.visibility}
            f.style.visibility=c?"hidden":f._slimbox
        })
    });
    
    X.style.display=c?"":"none";
    
    var d=c?"addEvent":"removeEvent";
    window[d]("scroll",b)[d]("resize",b);
    document[d]("keydown",V)
}

function V(c){
    switch(c.code){
        case 27:
        case 88:
        case 67:
            N();
            break;
        case 37:
        case 80:
            D();
            break;
        case 39:
        case 78:
            R()
    }
    return false
}

function D(){
    return U(S)
}

function R(){
    return U(T)
}
function U(c){
    if((G==1)&&(c>=0)){
        G=2;
        B=c;
        S=((B||!F.loop)?B:L.length)-1;
        T=B+1;
        if(T==L.length){T=F.loop?0:-1}$$(H,W,P,Z).setStyle("display","none");
        E.bottom.cancel().set(0);
        E.image.set(0);
        a.className="lbLoading";
        
        M=new Image();
        M.onload=A;
        M.src=L[c][0]
    }
    return false
}
function A(){
    switch(G++){
        case 2:
            a.className="";
            P.setStyles({backgroundImage:"url("+L[B][0]+")",display:""});
            $$(P,I).setStyle("width",M.width);
            $$(P,H,W).setStyle("height",M.height);
            
            Y.set("html",L[B][1]||"");
            C.set("html",(F.showCounter&&(L.length>1))?F.counterText.replace(/{x}/,B+1).replace(/{y}/,L.length):"");
            if(S>=0){J.src=L[S][0]}
            if(T>=0){K.src=L[T][0]}
            if(a.clientHeight!=P.offsetHeight){
                E.resize.start({height:P.offsetHeight});
                break
            }
            G++;
        case 3:
            if(a.clientWidth!=P.offsetWidth){
                E.resize.start({width:P.offsetWidth,marginLeft:-P.offsetWidth/2});
                break
            }
            G++;
        case 4:
            Z.setStyles({top:O+a.clientHeight,marginLeft:a.style.marginLeft,visibility:"hidden",display:""});
            E.image.start(1);
            break;
        case 5:
            if(S>=0){H.style.display=""}
            if(T>=0){W.style.display=""}
            if(F.animateCaption){
                E.bottom.set(-I.offsetHeight).start(0)
            }
            
            Z.style.visibility="";
            G=1
    }
}
function N(){
    if(G){
        G=0;
        M.onload=$empty;
        for(var c in E){E[c].cancel()}
        $$(a,Z).setStyle("display","none");
        E.overlay.chain(Q).start(0)
    }
    return false
}
})();

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
Slimbox.scanPage = function() {
	var links = $$("a").filter(function(el) {
		return el.rel && el.rel.test(/^lightbox/i);
	});
	$$(links).slimbox({/* Put custom options here */}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};
window.addEvent("domready", Slimbox.scanPage);

