/*
	Slimbox v1.57 - The ultimate lightweight Lightbox clone
	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
var Slimbox = (function () {
    var G = window,
    v, h, H = -1,
    q, x, F, w, z, N, t, l = r.bindWithEvent(),
    f = window.opera && (navigator.appVersion >= "9.3"),
    p = document.documentElement,
    o = {},
    u = new Image(),
    L = new Image(),
    J,
    b,
    i,
    K,
    e,
    I,
    c,
    B,
    M,
    y,
    j,
    d,
    D;
    G.addEvent("domready", function () {
        $(document.body).adopt($$(J = new Element("div", {
            id: "lbOverlay"
        }), b = new Element("div", {
            id: "lbCenter"
        }), I = new Element("div", {
            id: "lbBottomContainer"
        })).setStyle("display", "none"));
        i = new Element("div", {
            id: "lbImage"
        }).injectInside(b).adopt(K = new Element("a", {
            id: "lbPrevLink",
            href: "#"
        }), e = new Element("a", {
            id: "lbNextLink",
            href: "#"
        }));
        K.onclick = C;
        e.onclick = g;
        var O;
        c = new Element("div", {
            id: "lbBottom"
        }).injectInside(I).adopt(O = new Element("a", {
            id: "lbCloseLink",
            href: "#"
        }), B = new Element("div", {
            id: "lbCaption"
        }), M = new Element("div", {
            id: "lbNumber"
        }), new Element("div", {
            styles: {
                clear: "both"
            }
        }));
        O.onclick = J.onclick = E
    });
    function A() {
        var P = G.getScrollLeft(),
        O = f ? p.clientWidth: G.getWidth();
        $$(b, I).setStyle("left", P + (O / 2));
        if (w) {
            J.setStyles({
                left: P,
                top: G.getScrollTop(),
                width: O,
                height: G.getHeight()
            })
        }
    }
    function n(O) { ["object", G.ie6 ? "select": "embed"].forEach(function (Q) {
            $each(document.getElementsByTagName(Q), function (R) {
                if (O) {
                    R._slimbox = R.style.visibility
                }
                R.style.visibility = O ? "hidden": R._slimbox
            })
        });
        J.style.display = O ? "": "none";
        var P = O ? "addEvent": "removeEvent";
        G[P]("scroll", A)[P]("resize", A);
        document[P]("keydown", l)
    }
    function r(P) {
        var O = P.code;
        if (v.closeKeys.contains(O)) {
            E()
        } else {
            if (v.nextKeys.contains(O)) {
                g()
            } else {
                if (v.previousKeys.contains(O)) {
                    C()
                }
            }
        }
        P.stop()
    }
    function C() {
        return a(x)
    }
    function g() {
        return a(F)
    }
    function a(O) {
        if (O >= 0) {
            H = O;
            q = h[O][0];
            x = (H || (v.loop ? h.length: 0)) - 1;
            F = ((H + 1) % h.length) || (v.loop ? 0 : -1);
            s();
            b.className = "lbLoading";
            o = new Image();
            o.onload = m;
            o.src = q
        }
        return false
    }
    function m() {
        b.className = "";
        d.set(0);
        i.setStyles({
            width: o.width,
            backgroundImage: "url(" + q + ")",
            display: ""
        });
        $$(i, K, e).setStyle("height", o.height);
        B.setHTML(h[H][1] || "");
        M.setHTML((((h.length > 1) && v.counterText) || "").replace(/{x}/, H + 1).replace(/{y}/, h.length));
        if (x >= 0) {
            u.src = h[x][0]
        }
        if (F >= 0) {
            L.src = h[F][0]
        }
        N = i.offsetWidth;
        t = i.offsetHeight;
        var O = Math.max(0, z - (t / 2));
        if (b.offsetHeight != t) {
            j.chain(j.start.pass({
                height: t,
                top: O
            },
            j))
        }
        if (b.offsetWidth != N) {
            j.chain(j.start.pass({
                width: N,
                marginLeft: -N / 2
            },
            j))
        }
        j.chain(function () {
            I.setStyles({
                width: N,
                top: O + t,
                marginLeft: -N / 2,
                visibility: "hidden",
                display: ""
            });
            d.start(1)
        });
        j.callChain()
    }
    function k() {
        if (x >= 0) {
            K.style.display = ""
        }
        if (F >= 0) {
            e.style.display = ""
        }
        D.set( - c.offsetHeight).start(0);
        I.style.visibility = ""
    }
    function s() {
        o.onload = Class.empty;
        o.src = u.src = L.src = q;
        j.clearChain();
        j.stop();
        d.stop();
        D.stop();
        $$(K, e, i, I).setStyle("display", "none")
    }
    function E() {
        if (H >= 0) {
            s();
            H = x = F = -1;
            b.style.display = "none";
            y.stop().chain(n).start(0)
        }
        return false
    }
    Element.extend({
        slimbox: function (O, P) {
            $$(this).slimbox(O, P);
            return this
        }
    });
    Elements.extend({
        slimbox: function (O, R, Q) {
            R = R ||
            function (S) {
                return [S.href, S.title]
            };
            Q = Q ||
            function () {
                return true
            };
            var P = this;
            P.forEach(function (S) {
                S.removeEvents("click").addEvent("click", function (T) {
                    var U = P.filter(Q, this);
                    Slimbox.open(U.map(R), U.indexOf(this), O);
                    T.stop()
                }.bindWithEvent(S))
            });
            return P
        }
    });
    return {
        open: function (Q, P, O) {
            v = $extend({
                loop: false,
                overlayOpacity: 0.8,
                overlayFadeDuration: 400,
                resizeDuration: 400,
                resizeTransition: false,
                initialWidth: 250,
                initialHeight: 250,
                imageFadeDuration: 400,
                captionAnimationDuration: 400,
                counterText: "Image {x} of {y}",
                closeKeys: [27, 88, 67],
                previousKeys: [37, 80],
                nextKeys: [39, 78]
            },
            O || {});
            y = J.effect("opacity", {
                duration: v.overlayFadeDuration
            });
            j = b.effects($extend({
                duration: v.resizeDuration
            },
            v.resizeTransition ? {
                transition: v.resizeTransition
            }: {}));
            d = i.effect("opacity", {
                duration: v.imageFadeDuration,
                onComplete: k
            });
            D = c.effect("margin-top", {
                duration: v.captionAnimationDuration
            });
            if (typeof Q == "string") {
                Q = [[Q, P]];
                P = 0
            }
            z = G.getScrollTop() + ((f ? p.clientHeight: G.getHeight()) / 2);
            N = v.initialWidth;
            t = v.initialHeight;
            b.setStyles({
                top: Math.max(0, z - (t / 2)),
                width: N,
                height: t,
                marginLeft: -N / 2,
                display: ""
            });
            w = G.ie6 || (J.currentStyle && (J.currentStyle.position != "fixed"));
            if (w) {
                J.style.position = "absolute"
            }
            y.set(0).start(v.overlayOpacity);
            A();
            n(1);
            h = Q;
            v.loop = v.loop && (h.length > 1);
            return a(P)
        }
    }
})();

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