(function(b, gb){
    var v = "none", t = "click", N = "LoadedContent", d = false, x = "resize.", o = "y", u = "auto", f = true, M = "nofollow", q = "on", n = "x";
    function e(a, c){
        a = a ? ' id="' + k + a + '"' : "";
        return b("<div" + a + (c ? ' style="' + c + '"' : "") + "/>")
    }
    function p(a, b){
        b = b === n ? m.width() : m.height();
        return typeof a === "string" ? Math.round(a.match(/%/) ? b / 100 * parseInt(a, 10) : parseInt(a, 10)) : a
    }
    function Q(c){
        c = b.isFunction(c) ? c.call(h) : c;
        return a.photo || c.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i)
    }
    function cb(){
        for (var c in a) 
            if (b.isFunction(a[c]) && c.substring(0, 2) !== q) 
                a[c] = a[c].call(h);
        a.rel = a.rel || h.rel || M;
        a.href = a.href || b(h).attr("href");
        a.title = a.title || h.title
    }
    function db(d){
        h = d;
        a = b.extend({}, b(h).data(r));
        cb();
        if (a.rel !== M) {
            i = b("." + H).filter(function(){
                return (b(this).data(r).rel || this.rel) === a.rel
            });
            g = i.index(h);
            if (g === -1) {
                i = i.add(h);
                g = i.length - 1
            }
        }
        else {
            i = b(h);
            g = 0
        }
        if (!w) {
            w = F = f;
            R = h;
            try {
                R.blur()
            } 
            catch (e) {
            }
            b.event.trigger(hb);
            a.onOpen && a.onOpen.call(h);
            y.css({
                opacity: +a.opacity,
                cursor: a.overlayClose ? "pointer" : u
            }).show();
            a.w = p(a.initialWidth, n);
            a.h = p(a.initialHeight, o);
            c.position(0);
            S && m.bind(x + O + " scroll." + O, function(){
                y.css({
                    width: m.width(),
                    height: m.height(),
                    top: m.scrollTop(),
                    left: m.scrollLeft()
                })
            }).trigger("scroll." + O)
        }
        T.add(I).add(J).add(z).add(U).hide();
        V.html(a.close).show();
        c.slideshow();
        c.load()
    }
    var eb = {
        transition: "elastic",
        speed: 100,
        width: "500",
        initialWidth: "500",
        innerWidth: "500",
        maxWidth: "600",
        height: "500",
        initialHeight: "500",
        innerHeight: "500",
        maxHeight: "600",
        scalePhotos: f,
        scrolling: f,
        inline: d,
        html: d,
        iframe: d,
        photo: d,
        href: d,
        title: d,
        rel: d,
        opacity: .9,
        preloading: f,
        current: "image {current} of {total}",
        previous: "previous",
        next: "next",
        close: "close",
        open: d,
        loop: f,
        slideshow: d,
        slideshowAuto: f,
        slideshowSpeed: 2500,
        slideshowStart: "start slideshow",
        slideshowStop: "stop slideshow",
        onOpen: d,
        onLoad: d,
        onComplete: d,
        onCleanup: d,
        onClosed: d,
        overlayClose: f,
        escKey: f,
        arrowKey: f
    }, r = "colorbox", k = "cbox", hb = k + "_open", P = k + "_load", W = k + "_complete", X = k + "_cleanup", fb = k + "_closed", G = b.browser.msie && !b.support.opacity, S = G && b.browser.version < 7, O = k + "_IE6", y, j, E, s, Y, Z, ab, bb, i, m, l, K, L, U, T, z, J, I, V, C, D, A, B, h, R, g, a, w, F, c, H = k + "Element";
    c = b.fn[r] = b[r] = function(c, d){
        var a = this;
        if (!a[0] && a.selector) 
            return a;
        c = c ||
        {};
        if (d) 
            c.onComplete = d;
        if (!a[0] || a.selector === undefined) {
            a = b("<a/>");
            c.open = f
        }
        a.each(function(){
            b(this).data(r, b.extend({}, b(this).data(r) || eb, c)).addClass(H)
        });
        c.open && db(a[0]);
        return a
    };
    c.init = function(){
        var h = "hover";
        m = b(gb);
        j = e().attr({
            id: r,
            "class": G ? "" : ""
        });
        y = e("Overlay", S ? "position:absolute" : "").hide();
        E = e("Wrapper");
        s = e("Content").append(l = e(N, "width:0; height:0"), L = e("LoadingOverlay").add(e("LoadingGraphic")), U = e("Title"), T = e("Current"), J = e("Next"), I = e("Previous"), z = e("Slideshow"), V = e("Close"));
        E.append(e().append(e("TopLeft"), Y = e("TopCenter"), e("TopRight")), e().append(Z = e("MiddleLeft"), s, ab = e("MiddleRight")), e().append(e("BottomLeft"), bb = e("BottomCenter"), e("BottomRight"))).children().children().css({
            "float": "left"
        });
        K = e(d, "position:absolute; width:9999px; visibility:hidden; display:none");
        b("body").prepend(y, j.append(E, K));
        s.children().hover(function(){
            b(this).addClass(h)
        }, function(){
            b(this).removeClass(h)
        }).addClass(h);
        C = Y.height() + bb.height() + s.outerHeight(f) - s.height();
        D = Z.width() + ab.width() + s.outerWidth(f) - s.width();
        A = l.outerHeight(f);
        B = l.outerWidth(f);
        j.css({
            "padding-top": C/2,
            "padding-left": D/2,
			"padding-bottom": C/2,
            "padding-right": D/2,
			"width":E.width()+C,
			"height":E.height()+D
        }).hide();
        J.click(c.next);
        I.click(c.prev);
        V.click(c.close);
        s.children().removeClass(h);
        b("." + H).live(t, function(a){
            if (a.button !== 0 && typeof a.button !== "undefined" || a.ctrlKey || a.shiftKey || a.altKey) 
                return f;
            else {
                db(this);
                return d
            }
        });
        y.click(function(){
            a.overlayClose && c.close()
        });
        b(document).bind("keydown", function(b){
            if (w && a.escKey && b.keyCode === 27) {
                b.preventDefault();
                c.close()
            }
            if (w && a.arrowKey && !F && i[1]) 
                if (b.keyCode === 37 && (g || a.loop)) {
                    b.preventDefault();
                    I.click()
                }
                else 
                    if (b.keyCode === 39 && (g < i.length - 1 || a.loop)) {
                        b.preventDefault();
                        J.click()
                    }
        })
    };
    c.remove = function(){
        j.add(y).remove();
        b("." + H).die(t).removeData(r).removeClass(H)
    };
    c.position = function(f, b){
        function c(a){
            Y[0].style.width = bb[0].style.width = s[0].style.width = a.style.width;
            L[0].style.height = L[1].style.height = s[0].style.height = Z[0].style.height = ab[0].style.height = a.style.height
        }
        var e, h = Math.max(m.height() - a.h - A - C, 0) / 2 + m.scrollTop(), g = Math.max(m.width() - a.w - B - D, 0) / 2 + m.scrollLeft();
        e = j.width() === a.w + B && j.height() === a.h + A ? 0 : f;
        E[0].style.width = E[0].style.height = "9999px";
        j.dequeue().animate({
            width: a.w + B,
            height: a.h + A,
            top: h,
            left: g
        }, {
            duration: e,
            complete: function(){
                c(this);
                F = d;
                E[0].style.width = a.w + B + D + "px";
                E[0].style.height = a.h + A + C + "px";
                b && b()
            },
            step: function(){
                c(this)
            }
        })
    };
    c.resize = function(b){
        if (w) {
            b = b ||
            {};
            if (b.width) 
                a.w = p(b.width, n) - B - D;
            if (b.innerWidth) 
                a.w = p(b.innerWidth, n);
            l.css({
                width: a.w
            });
            if (b.height) 
                a.h = p(b.height, o) - A - C;
            if (b.innerHeight) 
                a.h = p(b.innerHeight, o);
            if (!b.innerHeight && !b.height) {
                b = l.wrapInner("<div style='overflow:auto'></div>").children();
                a.h = b.height();
                b.replaceWith(b.children())
            }
            l.css({
                height: a.h
            });
            c.position(a.transition === v ? 0 : a.speed)
        }
    };
    c.prep = function(o){
        var d = "hidden";
        function n(t){
            var o, q, s, n, d = i.length, e = a.loop;
            c.position(t, function(){
                function t(){
                    G && j[0].style.removeAttribute("filter")
                }
                if (w) {
                    G && p && l.fadeIn(100);
                    a.iframe && b("<iframe frameborder=0" + (a.scrolling ? "" : " scrolling='no'") + (G ? " allowtransparency='true'" : "") + "/>").appendTo(l).attr({
                        src: a.href,
                        name: (new Date).getTime()
                    });
                    l.show();
                    U.show().html(a.title);
                    if (d > 1) {
                        T.html(a.current.replace(/\{current\}/, g + 1).replace(/\{total\}/, d)).show();
                        J[e || g < d - 1 ? "show" : "hide"]().html(a.next);
                        I[e || g ? "show" : "hide"]().html(a.previous);
                        o = g ? i[g - 1] : i[d - 1];
                        s = g < d - 1 ? i[g + 1] : i[0];
                        if (a.slideshow) {
                            z.show();
                            g === d - 1 && !e && j.is("." + k + "Slideshow_on") && z.click()
                        }
                        if (a.preloading) {
                            n = b(s).data(r).href || s.href;
                            q = b(o).data(r).href || o.href;
                            if (Q(n)) 
                                b("<img/>")[0].src = n;
                            if (Q(q)) 
                                b("<img/>")[0].src = q
                        }
                    }
                    L.hide();
                    a.transition === "fade" ? j.fadeTo(f, 1, function(){
                        t()
                    }) : t();
                    m.bind(x + k, function(){
                        c.position(0)
                    });
                    b.event.trigger(W);
                    a.onComplete && a.onComplete.call(h)
                }
            })
        }
        if (w) {
            var p, f = a.transition === v ? 0 : a.speed;
            m.unbind(x + k);
            l.remove();
            l = e(N).html(o);
            l.hide().appendTo(K.show()).css({
                width: function(){
                    a.w = a.w || l.width();
                    a.w = a.mw && a.mw < a.w ? a.mw : a.w;
                    return a.w
                }(),
                overflow: a.scrolling ? u : d
            }).css({
                height: function(){
                    a.h = a.h || l.height();
                    a.h = a.mh && a.mh < a.h ? a.mh : a.h;
                    return a.h
                }()
            }).prependTo(s);
            K.hide();
            b("#" + k + "Photo").css({
                cssFloat: v
            });
            S && b("select").not(j.find("select")).filter(function(){
                return this.style.visibility !== d
            }).css({
                visibility: d
            }).one(X, function(){
                this.style.visibility = "inherit"
            });
            a.transition === "fade" ? j.fadeTo(f, 0, function(){
                n(0)
            }) : n(f)
        }
    };
    c.load = function(){
        var j, d, q, m = c.prep;
        F = f;
        h = i[g];
        a = b.extend({}, b(h).data(r));
        cb();
        b.event.trigger(P);
        a.onLoad && a.onLoad.call(h);
        a.h = a.height ? p(a.height, o) - A - C : a.innerHeight && p(a.innerHeight, o);
        a.w = a.width ? p(a.width, n) - B - D : a.innerWidth && p(a.innerWidth, n);
        a.mw = a.w;
        a.mh = a.h;
        if (a.maxWidth) {
            a.mw = p(a.maxWidth, n) - B - D;
            a.mw = a.w && a.w < a.mw ? a.w : a.mw
        }
        if (a.maxHeight) {
            a.mh = p(a.maxHeight, o) - A - C;
            a.mh = a.h && a.h < a.mh ? a.h : a.mh
        }
        j = a.href;
        L.show();
        if (a.inline) {
            e("InlineTemp").hide().insertBefore(b(j)[0]).bind(P + " " + X, function(){
                b(this).replaceWith(l.children())
            });
            m(b(j))
        }
        else 
            if (a.iframe) 
                m(" ");
            else 
                if (a.html) 
                    m(a.html);
                else 
                    if (Q(j)) {
                        d = new Image;
                        d.onload = function(){
                            var e;
                            d.onload = null;
                            d.id = k + "Photo";
                            b(d).css({
                                margin: u,
                                border: v,
                                display: "block",
                                cssFloat: "left"
                            });
                            if (a.scalePhotos) {
                                q = function(){
                                    d.height -= d.height * e;
                                    d.width -= d.width * e
                                };
                                if (a.mw && d.width > a.mw) {
                                    e = (d.width - a.mw) / d.width;
                                    q()
                                }
                                if (a.mh && d.height > a.mh) {
                                    e = (d.height - a.mh) / d.height;
                                    q()
                                }
                            }
                            if (a.h) 
                                d.style.marginTop = Math.max(a.h - d.height, 0) / 2 + "px";
                            setTimeout(function(){
                                m(d)
                            }, 1);
                            i[1] && (g < i.length - 1 || a.loop) && b(d).css({
                                cursor: "pointer"
                            }).click(c.next);
                            if (G) 
                                d.style.msInterpolationMode = "bicubic"
                        };
                        d.src = j
                    }
                    else 
                        e().appendTo(K).load(j, function(c, a, b){
                            m(a === "error" ? "Request unsuccessful: " + b.statusText : this)
                        })
    };
    c.next = function(){
        if (!F) {
            g = g < i.length - 1 ? g + 1 : 0;
            c.load()
        }
    };
    c.prev = function(){
        if (!F) {
            g = g ? g - 1 : i.length - 1;
            c.load()
        }
    };
    c.slideshow = function(){
        function f(){
            z.text(a.slideshowStop).bind(W, function(){
                d = setTimeout(c.next, a.slideshowSpeed)
            }).bind(P, function(){
                clearTimeout(d)
            }).one(t, function(){
                e()
            });
            j.removeClass(b + "off").addClass(b + q)
        }
        var e, d, b = k + "Slideshow_";
        z.bind(fb, function(){
            z.unbind();
            clearTimeout(d);
            j.removeClass(b + "off " + b + q)
        });
        e = function(){
            clearTimeout(d);
            z.text(a.slideshowStart).unbind(W + " " + P).one(t, function(){
                f();
                d = setTimeout(c.next, a.slideshowSpeed)
            });
            j.removeClass(b + q).addClass(b + "off")
        };
        if (a.slideshow && i[1]) 
            a.slideshowAuto ? f() : e()
    };
    c.close = function(){
        if (w) {
            w = d;
            b.event.trigger(X);
            a.onCleanup && a.onCleanup.call(h);
            m.unbind("." + k + " ." + O);
            y.fadeTo("fast", 0);
            j.stop().fadeTo("fast", 0, function(){
                j.find("iframe").attr("src", "about:blank");
                l.remove();
                j.add(y).css({
                    opacity: 1,
                    cursor: u
                }).hide();
                try {
                    R.focus()
                } 
                catch (c) {
                }
                setTimeout(function(){
                    b.event.trigger(fb);
                    a.onClosed && a.onClosed.call(h)
                }, 1)
            })
        }
    };
    c.element = function(){
        return b(h)
    };
    c.settings = eb;
    b(c.init)
})(jQuery, this)

