var Shadowbox = function () {
    var ua = navigator.userAgent.toLowerCase(),
        S = {
            version: "3.0b",
            adapter: null,
            current: -1,
            gallery: [],
            cache: [],
            content: null,
            dimensions: null,
            plugins: null,
            path: "",
            options: {
                adapter: null,
                animate: true,
                animateFade: true,
                autoplayMovies: true,
                autoDimensions: false,
                continuous: false,
                counterLimit: 10,
                counterType: "default",
                displayCounter: true,
                displayNav: true,
                ease: function (x) {
                    return 1 + Math.pow(x - 1, 3)
                },
                enableKeys: true,
                errors: {
                    fla: {
                        name: "Flash",
                        url: "http://www.adobe.com/products/flashplayer/"
                    },
                    qt: {
                        name: "QuickTime",
                        url: "http://www.apple.com/quicktime/download/"
                    },
                    wmp: {
                        name: "Windows Media Player",
                        url: "http://www.microsoft.com/windows/windowsmedia/"
                    },
                    f4m: {
                        name: "Flip4Mac",
                        url: "http://www.flip4mac.com/wmv_download.htm"
                    }
                },
                ext: {
                    img: ["png", "jpg", "jpeg", "gif", "bmp"],
                    swf: ["swf"],
                    flv: ["flv"],
                    qt: ["dv", "mov", "moov", "movie", "mp4"],
                    wmp: ["asf", "wm", "wmv"],
                    qtwmp: ["avi", "mpg", "mpeg"],
                    iframe: ["asp", "aspx", "cgi", "cfm", "htm", "html", "jsp", "pl", "php", "php3", "php4", "php5", "phtml", "rb", "rhtml", "shtml", "txt", "vbs"]
                },
                fadeDuration: 0.35,
                flashParams: {
                    bgcolor: "#000000",
                    allowFullScreen: true
                },
                flashVars: {},
                flashVersion: "9.0.115",
                handleOversize: "resize",
                handleUnsupported: "link",
                initialHeight: 160,
                initialWidth: 320,
                language: "en",
                modal: false,
                onChange: null,
                onClose: null,
                onFinish: null,
                onOpen: null,
                overlayColor: "#000",
                overlayOpacity: 0.8,
                players: ["img"],
                resizeDuration: 0.35,
                showOverlay: true,
                showMovieControls: true,
                skipSetup: false,
                slideshowDelay: 0,
                useSizzle: true,
                viewportPadding: 20
            },
            client: {
                isIE: ua.indexOf("msie") > -1,
                isIE6: ua.indexOf("msie 6") > -1,
                isIE7: ua.indexOf("msie 7") > -1,
                isGecko: ua.indexOf("gecko") > -1 && ua.indexOf("safari") == -1,
                isWebkit: ua.indexOf("applewebkit/") > -1,
                isWindows: ua.indexOf("windows") > -1 || ua.indexOf("win32") > -1,
                isMac: ua.indexOf("macintosh") > -1 || ua.indexOf("mac os x") > -1,
                isLinux: ua.indexOf("linux") > -1
            },
            regex: {
                domain: /:\/\/(.*?)[:\/]/,
                inline: /#(.+)$/,
                rel: /^(light|shadow)box/i,
                gallery: /^(light|shadow)box\[(.*?)\]/i,
                unsupported: /^unsupported-(\w+)/,
                param: /\s*([a-z_]*?)\s*=\s*(.+)\s*/
            },
            libraries: {
                Prototype: "prototype",
                jQuery: "jquery",
                MooTools: "mootools",
                YAHOO: "yui",
                dojo: "dojo",
                Ext: "ext"
            },
            applyOptions: function (opts) {
                if (opts) {
                    default_options = apply({}, S.options);
                    apply(S.options, opts)
                }
            },
            buildCacheObj: function (link, opts) {
                var href = link.href,
                    obj = {
                        el: link,
                        title: link.getAttribute("title"),
                        options: apply({}, opts || {}),
                        content: href
                    };
                each(["player", "title", "height", "width", "gallery"], function (o) {
                        if (typeof obj.options[o] != "undefined") {
                            obj[o] = obj.options[o];
                            delete obj.options[o]
                        }
                    });
                if (!obj.player) {
                        obj.player = getPlayer(href)
                    }
                var rel = link.getAttribute("rel");
                if (rel) {
                        var m = rel.match(S.regex.gallery);
                        if (m) {
                            obj.gallery = escape(m[2])
                        }
                        each(rel.split(";"), function (p) {
                            m = p.match(S.regex.param);
                            if (m) {
                                if (m[1] == "options") {
                                    eval("apply(obj.options," + m[2] + ")")
                                } else {
                                    obj[m[1]] = m[2]
                                }
                            }
                        })
                    }
                return obj
            },
            change: function (n) {
                if (!S.gallery) {
                    return
                }
                if (!S.gallery[n]) {
                    if (!S.options.continuous) {
                        return
                    } else {
                        n = n < 0 ? S.gallery.length - 1 : 0
                    }
                }
                S.current = n;
                if (typeof slide_timer == "number") {
                    clearTimeout(slide_timer);
                    slide_timer = null;
                    slide_delay = slide_start = 0
                }
                if (S.options.onChange) {
                    S.options.onChange()
                }
                loadContent()
            },
            clearCache: function () {
                each(S.cache, function (obj) {
                    if (obj.el) {
                        S.lib.removeEvent(obj.el, "click", handleClick)
                    }
                });
                S.cache = []
            },
            close: function () {
                if (!active) {
                    return
                }
                active = false;
                listenKeys(false);
                if (S.content) {
                    S.content.remove();
                    S.content = null
                }
                if (typeof slide_timer == "number") {
                    clearTimeout(slide_timer)
                }
                slide_timer = null;
                slide_delay = 0;
                if (S.options.onClose) {
                    S.options.onClose()
                }
                S.skin.onClose();
                S.revertOptions();
                each(v_cache, function (c) {
                    c[0].style.visibility = c[1]
                })
            },
            contentId: function () {
                return content_id
            },
            getCounter: function () {
                var len = S.gallery.length;
                if (S.options.counterType == "skip") {
                    var c = [],
                        i = 0,
                        end = len,
                        limit = parseInt(S.options.counterLimit) || 0;
                    if (limit < len && limit > 2) {
                            var h = Math.floor(limit / 2);
                            i = S.current - h;
                            if (i < 0) {
                                i += len
                            }
                            end = S.current + (limit - h);
                            if (end > len) {
                                end -= len
                            }
                        }
                    while (i != end) {
                            if (i == len) {
                                i = 0
                            }
                            c.push(i++)
                        }
                } else {
                    var c = (S.current + 1) + " " + S.lang.of + " " + len
                }
                return c
            },
            getCurrent: function () {
                return S.current > -1 ? S.gallery[S.current] : null
            },
            hasNext: function () {
                return S.gallery.length > 1 && (S.current != S.gallery.length - 1 || S.options.continuous)
            },
            init: function (opts) {
                if (initialized) {
                    return
                }
                initialized = true;
                opts = opts || {};
                init_options = opts;
                if (opts) {
                    apply(S.options, opts)
                }
                for (var e in S.options.ext) {
                    S.regex[e] = new RegExp(".(" + S.options.ext[e].join("|") + ")s*$", "i")
                }
                if (!S.path) {
                    var path_re = /(.+)shadowbox\.js/i,
                        path;
                    each(document.getElementsByTagName("script"), function (s) {
                            if ((path = path_re.exec(s.src)) != null) {
                                S.path = path[1];
                                return false
                            }
                        })
                }
                if (S.options.adapter) {
                    S.adapter = S.options.adapter
                } else {
                    for (var lib in S.libraries) {
                        if (typeof window[lib] != "undefined") {
                            S.adapter = S.libraries[lib];
                            break
                        }
                    }
                    if (!S.adapter) {
                        S.adapter = "base"
                    }
                }
                if (S.options.useSizzle && !window.Sizzle) {
                    U.include(S.path + "libraries/sizzle/sizzle.js")
                }
                if (!S.lang) {
                    U.include(S.path + "languages/shadowbox-" + S.options.language + ".js")
                }
                each(S.options.players, function (p) {
                    if ((p == "swf" || p == "flv") && !window.swfobject) {
                        U.include(S.path + "libraries/swfobject/swfobject.js")
                    }
                    if (!S[p]) {
                        U.include(S.path + "players/shadowbox-" + p + ".js")
                    }
                });
                if (!S.lib) {
                    U.include(S.path + "adapters/shadowbox-" + S.adapter + ".js")
                }
            },
            isActive: function () {
                return active
            },
            isPaused: function () {
                return slide_timer == "paused"
            },
            load: function () {
                if (S.skin.options) {
                    apply(S.options, S.skin.options);
                    apply(S.options, init_options)
                }
                var markup = S.skin.markup.replace(/\{(\w+)\}/g, function (m, p) {
                    return S.lang[p]
                });
                S.lib.append(document.body, markup);
                if (S.skin.init) {
                    S.skin.init()
                }
                var id;
                S.lib.addEvent(window, "resize", function () {
                    if (id) {
                        clearTimeout(id);
                        id = null
                    }
                    if (active) {
                        id = setTimeout(function () {
                            if (S.skin.onWindowResize) {
                                S.skin.onWindowResize()
                            }
                            var c = S.content;
                            if (c && c.onWindowResize) {
                                c.onWindowResize()
                            }
                        }, 50)
                    }
                });
                if (!S.options.skipSetup) {
                    S.setup()
                }
            },
            next: function () {
                S.change(S.current + 1)
            },
            open: function (obj) {
                if (U.isLink(obj)) {
                    obj = S.buildCacheObj(obj)
                }
                if (obj.constructor == Array) {
                    S.gallery = obj;
                    S.current = 0
                } else {
                    if (!obj.gallery) {
                        S.gallery = [obj];
                        S.current = 0
                    } else {
                        S.current = null;
                        S.gallery = [];
                        each(S.cache, function (c) {
                            if (c.gallery && c.gallery == obj.gallery) {
                                if (S.current == null && c.content == obj.content && c.title == obj.title) {
                                    S.current = S.gallery.length
                                }
                                S.gallery.push(c)
                            }
                        });
                        if (S.current == null) {
                            S.gallery.unshift(obj);
                            S.current = 0
                        }
                    }
                }
                obj = S.getCurrent();
                if (obj.options) {
                    S.revertOptions();
                    S.applyOptions(obj.options)
                }
                var g, r, m, s, a, oe = S.options.errors,
                    msg, el;
                for (var i = 0; i < S.gallery.length; ++i) {
                        g = S.gallery[i] = apply({}, S.gallery[i]);
                        r = false;
                        if (g.player == "unsupported") {
                            r = true
                        } else {
                            if (m = S.regex.unsupported.exec(g.player)) {
                                if (S.options.handleUnsupported == "link") {
                                    g.player = "html";
                                    switch (m[1]) {
                                    case "qtwmp":
                                        s = "either";
                                        a = [oe.qt.url, oe.qt.name, oe.wmp.url, oe.wmp.name];
                                        break;
                                    case "qtf4m":
                                        s = "shared";
                                        a = [oe.qt.url, oe.qt.name, oe.f4m.url, oe.f4m.name];
                                        break;
                                    default:
                                        s = "single";
                                        if (m[1] == "swf" || m[1] == "flv") {
                                            m[1] = "fla"
                                        }
                                        a = [oe[m[1]].url, oe[m[1]].name]
                                    }
                                    msg = S.lang.errors[s].replace(/\{(\d+)\}/g, function (m, n) {
                                        return a[n]
                                    });
                                    g.content = '<div class="sb-message">' + msg + "</div>"
                                } else {
                                    r = true
                                }
                            } else {
                                if (g.player == "inline") {
                                    m = S.regex.inline.exec(g.content);
                                    if (m) {
                                        var el = U.get(m[1]);
                                        if (el) {
                                            g.content = el.innerHTML
                                        } else {
                                            throw "Cannot find element with id " + m[1]
                                        }
                                    } else {
                                        throw "Cannot find element id for inline content"
                                    }
                                } else {
                                    if (g.player == "swf" || g.player == "flv") {
                                        var version = (g.options && g.options.flashVersion) || S.options.flashVersion;
                                        if (!swfobject.hasFlashPlayerVersion(version)) {
                                            g.width = 310;
                                            g.height = 177
                                        }
                                    }
                                }
                            }
                        }
                        if (r) {
                            S.gallery.splice(i, 1);
                            if (i < S.current) {
                                --S.current
                            } else {
                                if (i == S.current) {
                                    S.current = i > 0 ? i - 1 : i
                                }
                            }--i
                        }
                    }
                if (S.gallery.length) {
                        if (!active) {
                            if (typeof S.options.onOpen == "function" && S.options.onOpen(obj) === false) {
                                return
                            }
                            v_cache = [];
                            each(["select", "object", "embed", "canvas"], function (tag) {
                                each(document.getElementsByTagName(tag), function (el) {
                                    v_cache.push([el, el.style.visibility || "visible"]);
                                    el.style.visibility = "hidden"
                                })
                            });
                            var h = S.options.autoDimensions && "height" in obj ? obj.height : S.options.initialHeight;
                            var w = S.options.autoDimensions && "width" in obj ? obj.width : S.options.initialWidth;
                            S.skin.onOpen(h, w, loadContent)
                        } else {
                            loadContent()
                        }
                        active = true
                    }
            },
            pause: function () {
                if (typeof slide_timer != "number") {
                    return
                }
                var time = new Date().getTime();
                slide_delay = Math.max(0, slide_delay - (time - slide_start));
                if (slide_delay) {
                    clearTimeout(slide_timer);
                    slide_timer = "paused";
                    if (S.skin.onPause) {
                        S.skin.onPause()
                    }
                }
            },
            play: function () {
                if (!S.hasNext()) {
                    return
                }
                if (!slide_delay) {
                    slide_delay = S.options.slideshowDelay * 1000
                }
                if (slide_delay) {
                    slide_start = new Date().getTime();
                    slide_timer = setTimeout(function () {
                        slide_delay = slide_start = 0;
                        S.next()
                    }, slide_delay);
                    if (S.skin.onPlay) {
                        S.skin.onPlay()
                    }
                }
            },
            previous: function () {
                S.change(S.current - 1)
            },
            revertOptions: function () {
                apply(S.options, default_options)
            },
            setDimensions: function (height, width, max_h, max_w, tb, lr, resizable) {
                var h = height = parseInt(height),
                    w = width = parseInt(width),
                    pad = parseInt(S.options.viewportPadding) || 0;
                var extra_h = 2 * pad + tb;
                if (h + extra_h >= max_h) {
                        h = max_h - extra_h
                    }
                var extra_w = 2 * pad + lr;
                if (w + extra_w >= max_w) {
                        w = max_w - extra_w
                    }
                var resize_h = height,
                    resize_w = width,
                    change_h = (height - h) / height,
                    change_w = (width - w) / width,
                    oversized = (change_h > 0 || change_w > 0);
                if (resizable && oversized && S.options.handleOversize == "resize") {
                        if (change_h > change_w) {
                            w = Math.round((width / height) * h)
                        } else {
                            if (change_w > change_h) {
                                h = Math.round((height / width) * w)
                            }
                        }
                        resize_w = w;
                        resize_h = h
                    }
                S.dimensions = {
                        height: h + tb,
                        width: w + lr,
                        inner_h: h,
                        inner_w: w,
                        top: (max_h - (h + extra_h)) / 2 + pad,
                        left: (max_w - (w + extra_w)) / 2 + pad,
                        oversized: oversized,
                        resize_h: resize_h,
                        resize_w: resize_w
                    };
                return S.dimensions
            },
            setup: function (links, opts) {
                if (!links) {
                    var links = [],
                        rel;
                    each(document.getElementsByTagName("a"), function (a) {
                            rel = a.getAttribute("rel");
                            if (rel && S.regex.rel.test(rel)) {
                                links.push(a)
                            }
                        })
                } else {
                    var len = links.length;
                    if (len) {
                        if (window.Sizzle) {
                            if (typeof links == "string") {
                                links = Sizzle(links)
                            } else {
                                if (len == 2 && links.push && typeof links[0] == "string" && links[1].nodeType) {
                                    links = Sizzle(links[0], links[1])
                                }
                            }
                        }
                    } else {
                        links = [links]
                    }
                }
                each(links, function (link) {
                    if (typeof link.shadowboxCacheKey == "undefined") {
                        link.shadowboxCacheKey = S.cache.length;
                        S.lib.addEvent(link, "click", handleClick)
                    }
                    S.cache[link.shadowboxCacheKey] = S.buildCacheObj(link, opts)
                })
            }
        },
        U = S.util = {
            animate: function (el, p, to, d, cb) {
                var from = parseFloat(S.lib.getStyle(el, p));
                if (isNaN(from)) {
                    from = 0
                }
                var delta = to - from;
                if (delta == 0) {
                    if (cb) {
                        cb()
                    }
                    return
                }
                var op = p == "opacity";

                function fn(ease) {
                    var to = from + ease * delta;
                    if (op) {
                        U.setOpacity(el, to)
                    } else {
                        el.style[p] = to + "px"
                    }
                }
                if (!d || (!op && !S.options.animate) || (op && !S.options.animateFade)) {
                    fn(1);
                    if (cb) {
                        cb()
                    }
                    return
                }
                d *= 1000;
                var begin = new Date().getTime(),
                    end = begin + d,
                    time, timer = setInterval(function () {
                        time = new Date().getTime();
                        if (time >= end) {
                            clearInterval(timer);
                            fn(1);
                            if (cb) {
                                cb()
                            }
                        } else {
                            fn(S.options.ease((time - begin) / d))
                        }
                    }, 10)
            },
            apply: function (o, e) {
                for (var p in e) {
                    o[p] = e[p]
                }
                return o
            },
            clearOpacity: function (el) {
                var s = el.style;
                if (window.ActiveXObject) {
                    if (typeof s.filter == "string" && (/alpha/i).test(s.filter)) {
                        s.filter = s.filter.replace(/[\w\.]*alpha\(.*?\);?/i, "")
                    }
                } else {
                    s.opacity = ""
                }
            },
            each: function (obj, fn, scope) {
                for (var i = 0, len = obj.length; i < len; ++i) {
                    if (fn.call(scope || obj[i], obj[i], i, obj) === false) {
                        return
                    }
                }
            },
            get: function (id) {
                return document.getElementById(id)
            },
            include: function () {
                var includes = {};
                return function (file) {
                    if (includes[file]) {
                        return
                    }
                    includes[file] = true;
                    document.write('<script type="text/javascript" src="' + file + '"><\/script>')
                }
            }(),
            isLink: function (obj) {
                if (!obj || !obj.tagName) {
                    return false
                }
                var up = obj.tagName.toUpperCase();
                return up == "A" || up == "AREA"
            },
            removeChildren: function (el) {
                while (el.firstChild) {
                    el.removeChild(el.firstChild)
                }
            },
            setOpacity: function (el, o) {
                var s = el.style;
                if (window.ActiveXObject) {
                    s.zoom = 1;
                    s.filter = (s.filter || "").replace(/\s*alpha\([^\)]*\)/gi, "") + (o == 1 ? "" : " alpha(opacity=" + (o * 100) + ")")
                } else {
                    s.opacity = o
                }
            }
        },
        apply = U.apply,
        each = U.each,
        init_options, initialized = false,
        default_options = {},
        content_id = "sb-content",
        active = false,
        slide_timer, slide_start, slide_delay = 0,
        v_cache = [];
    if (navigator.plugins && navigator.plugins.length) {
            var names = [];
            each(navigator.plugins, function (p) {
                names.push(p.name)
            });
            names = names.join();
            var detectPlugin = function (n) {
                return names.indexOf(n) > -1
            };
            var f4m = detectPlugin("Flip4Mac");
            S.plugins = {
                fla: detectPlugin("Shockwave Flash"),
                qt: detectPlugin("QuickTime"),
                wmp: !f4m && detectPlugin("Windows Media"),
                f4m: f4m
            }
        } else {
            function detectPlugin(n) {
                try {
                    var axo = new ActiveXObject(n)
                } catch (e) {}
                return !!axo
            }
            S.plugins = {
                fla: detectPlugin("ShockwaveFlash.ShockwaveFlash"),
                qt: detectPlugin("QuickTime.QuickTime"),
                wmp: detectPlugin("wmplayer.ocx"),
                f4m: false
            }
        }
    function getPlayer(url) {
            var re = S.regex,
                p = S.plugins,
                m = url.match(re.domain),
                d = m && document.domain == m[1];
            if (url.indexOf("#") > -1 && d) {
                    return "inline"
                }
            var q = url.indexOf("?");
            if (q > -1) {
                    url = url.substring(0, q)
                }
            if (re.img.test(url)) {
                    return "img"
                }
            if (re.swf.test(url)) {
                    return p.fla ? "swf" : "unsupported-swf"
                }
            if (re.flv.test(url)) {
                    return p.fla ? "flv" : "unsupported-flv"
                }
            if (re.qt.test(url)) {
                    return p.qt ? "qt" : "unsupported-qt"
                }
            if (re.wmp.test(url)) {
                    if (p.wmp) {
                        return "wmp"
                    }
                    if (p.f4m) {
                        return "qt"
                    }
                    if (S.client.isMac) {
                        return p.qt ? "unsupported-f4m" : "unsupported-qtf4m"
                    }
                    return "unsupported-wmp"
                }
            if (re.qtwmp.test(url)) {
                    if (p.qt) {
                        return "qt"
                    }
                    if (p.wmp) {
                        return "wmp"
                    }
                    return S.client.isMac ? "unsupported-qt" : "unsupported-qtwmp"
                }
            if (!d || re.iframe.test(url)) {
                    return "iframe"
                }
            return "unsupported"
        }
    function handleClick(e) {
            var link;
            if (U.isLink(this)) {
                link = this
            } else {
                link = S.lib.getTarget(e);
                while (!U.isLink(link) && link.parentNode) {
                    link = link.parentNode
                }
            }
            if (link) {
                var key = link.shadowboxCacheKey;
                if (typeof key != "undefined" && typeof S.cache[key] != "undefined") {
                    link = S.cache[key]
                }
                S.open(link);
                if (S.gallery.length) {
                    S.lib.preventDefault(e)
                }
            }
        }
    function listenKeys(on) {
            if (!S.options.enableKeys) {
                return
            }
            S.lib[(on ? "add" : "remove") + "Event"](document, "keydown", handleKey)
        }
    function handleKey(e) {
            var code = S.lib.keyCode(e);
            S.lib.preventDefault(e);
            switch (code) {
            case 81:
            case 88:
            case 27:
                S.close();
                break;
            case 37:
                S.previous();
                break;
            case 39:
                S.next();
                break;
            case 32:
                S[(typeof slide_timer == "number" ? "pause" : "play")]()
            }
        }
    function loadContent() {
            var obj = S.getCurrent();
            if (!obj) {
                return
            }
            var p = obj.player == "inline" ? "html" : obj.player;
            if (typeof S[p] != "function") {
                throw "Unknown player: " + p
            }
            var change = false;
            if (S.content) {
                S.content.remove();
                change = true;
                S.revertOptions();
                if (obj.options) {
                    S.applyOptions(obj.options)
                }
            }
            U.removeChildren(S.skin.bodyEl());
            S.content = new S[p](obj);
            listenKeys(false);
            S.skin.onLoad(S.content, change, function () {
                if (!S.content) {
                    return
                }
                if (typeof S.content.ready != "undefined") {
                    var id = setInterval(function () {
                        if (S.content) {
                            if (S.content.ready) {
                                clearInterval(id);
                                id = null;
                                S.skin.onReady(contentReady)
                            }
                        } else {
                            clearInterval(id);
                            id = null
                        }
                    }, 100)
                } else {
                    S.skin.onReady(contentReady)
                }
            });
            if (S.gallery.length > 1) {
                var next = S.gallery[S.current + 1] || S.gallery[0];
                if (next.player == "img") {
                    var a = new Image();
                    a.src = next.content
                }
                var prev = S.gallery[S.current - 1] || S.gallery[S.gallery.length - 1];
                if (prev.player == "img") {
                    var b = new Image();
                    b.src = prev.content
                }
            }
        }
    function contentReady() {
            if (!S.content) {
                return
            }
            S.content.append(S.skin.bodyEl(), content_id, S.dimensions);
            S.skin.onFinish(finishContent)
        }
    function finishContent() {
            if (!S.content) {
                return
            }
            if (S.content.onLoad) {
                S.content.onLoad()
            }
            if (S.options.onFinish) {
                S.options.onFinish()
            }
            if (!S.isPaused()) {
                S.play()
            }
            listenKeys(true)
        }
    return S
}();
Shadowbox.skin = function () {
    var e = Shadowbox,
        d = e.util,
        o = false,
        k = ["sb-nav-close", "sb-nav-next", "sb-nav-play", "sb-nav-pause", "sb-nav-previous"];

    function l() {
            d.get("sb-container").style.top = document.documentElement.scrollTop + "px"
        }
    function g(p) {
            var q = d.get("sb-overlay"),
                r = d.get("sb-container"),
                t = d.get("sb-wrapper");
            if (p) {
                    if (e.client.isIE6) {
                        l();
                        e.lib.addEvent(window, "scroll", l)
                    }
                    if (e.options.showOverlay) {
                        o = true;
                        q.style.backgroundColor = e.options.overlayColor;
                        d.setOpacity(q, 0);
                        if (!e.options.modal) {
                            e.lib.addEvent(q, "click", e.close)
                        }
                        t.style.display = "none"
                    }
                    r.style.visibility = "visible";
                    if (o) {
                        var s = parseFloat(e.options.overlayOpacity);
                        d.animate(q, "opacity", s, e.options.fadeDuration, p)
                    } else {
                        p()
                    }
                } else {
                    if (e.client.isIE6) {
                        e.lib.removeEvent(window, "scroll", l)
                    }
                    e.lib.removeEvent(q, "click", e.close);
                    if (o) {
                        t.style.display = "none";
                        d.animate(q, "opacity", 0, e.options.fadeDuration, function () {
                            r.style.display = "";
                            t.style.display = "";
                            d.clearOpacity(q)
                        })
                    } else {
                        r.style.visibility = "hidden"
                    }
                }
        }
    function b(r, p) {
            var q = d.get("sb-nav-" + r);
            if (q) {
                q.style.display = p ? "" : "none"
            }
        }
    function i(r, q) {
            var t = d.get("sb-loading"),
                v = e.getCurrent().player,
                u = (v == "img" || v == "html");
            if (r) {
                    function s() {
                        d.clearOpacity(t);
                        if (q) {
                            q()
                        }
                    }
                    d.setOpacity(t, 0);
                    t.style.display = "";
                    if (u) {
                        d.animate(t, "opacity", 1, e.options.fadeDuration, s)
                    } else {
                        s()
                    }
                } else {
                    function s() {
                        t.style.display = "none";
                        d.clearOpacity(t);
                        if (q) {
                            q()
                        }
                    }
                    if (u) {
                        d.animate(t, "opacity", 0, e.options.fadeDuration, s)
                    } else {
                        s()
                    }
                }
        }
    function a(s) {
            var u = e.getCurrent();
            d.get("sb-title-inner").innerHTML = u.title || "";
            var x, r, t, y, q;
            if (e.options.displayNav) {
                x = true;
                var w = e.gallery.length;
                if (w > 1) {
                    if (e.options.continuous) {
                        r = q = true
                    } else {
                        r = (w - 1) > e.current;
                        q = e.current > 0
                    }
                }
                if (e.options.slideshowDelay > 0 && e.hasNext()) {
                    y = !e.isPaused();
                    t = !y
                }
            } else {
                x = r = t = y = q = false
            }
            b("close", x);
            b("next", r);
            b("play", t);
            b("pause", y);
            b("previous", q);
            var x = "";
            if (e.options.displayCounter && e.gallery.length > 1) {
                var v = e.getCounter();
                if (typeof v == "string") {
                    x = v
                } else {
                    d.each(v, function (p) {
                        x += '<a onclick="Shadowbox.change(' + p + ');"';
                        if (p == e.current) {
                            x += ' class="sb-counter-current"'
                        }
                        x += ">" + (p + 1) + "</a>"
                    })
                }
            }
            d.get("sb-counter").innerHTML = x;
            s()
        }
    function h(r, q) {
            var w = d.get("sb-wrapper"),
                z = d.get("sb-title"),
                s = d.get("sb-info"),
                p = d.get("sb-title-inner"),
                x = d.get("sb-info-inner"),
                y = parseInt(e.lib.getStyle(p, "height")) || 0,
                v = parseInt(e.lib.getStyle(x, "height")) || 0;

            function u() {
                    p.style.visibility = x.style.visibility = "hidden";
                    a(q)
                }
            if (r) {
                    d.animate(z, "height", 0, 0.35);
                    d.animate(s, "height", 0, 0.35);
                    d.animate(w, "paddingTop", y, 0.35);
                    d.animate(w, "paddingBottom", v, 0.35, u)
                } else {
                    z.style.height = s.style.height = "0px";
                    w.style.paddingTop = y + "px";
                    w.style.paddingBottom = v + "px";
                    u()
                }
        }
    function j(r) {
            var q = d.get("sb-wrapper"),
                u = d.get("sb-title"),
                s = d.get("sb-info"),
                x = d.get("sb-title-inner"),
                w = d.get("sb-info-inner"),
                v = parseInt(e.lib.getStyle(x, "height")) || 0,
                p = parseInt(e.lib.getStyle(w, "height")) || 0;
            x.style.visibility = w.style.visibility = "";
            if (x.innerHTML != "") {
                    d.animate(u, "height", v, 0.35);
                    d.animate(q, "paddingTop", 0, 0.35)
                }
            d.animate(s, "height", p, 0.35);
            d.animate(q, "paddingBottom", 0, 0.35, r)
        }
    function c(q, x, w, p) {
            var y = d.get("sb-body"),
                v = d.get("sb-wrapper"),
                u = parseInt(q),
                r = parseInt(x);
            if (w) {
                    d.animate(y, "height", u, e.options.resizeDuration);
                    d.animate(v, "top", r, e.options.resizeDuration, p)
                } else {
                    y.style.height = u + "px";
                    v.style.top = r + "px";
                    if (p) {
                        p()
                    }
                }
        }
    function f(u, x, v, p) {
            var t = d.get("sb-wrapper"),
                r = parseInt(u),
                q = parseInt(x);
            if (v) {
                    d.animate(t, "width", r, e.options.resizeDuration);
                    d.animate(t, "left", q, e.options.resizeDuration, p)
                } else {
                    t.style.width = r + "px";
                    t.style.left = q + "px";
                    if (p) {
                        p()
                    }
                }
        }
    function n(p) {
            var r = e.content;
            if (!r) {
                return
            }
            var q = m(r.height, r.width, r.resizable);
            switch (e.options.animSequence) {
            case "hw":
                c(q.inner_h, q.top, true, function () {
                    f(q.width, q.left, true, p)
                });
                break;
            case "wh":
                f(q.width, q.left, true, function () {
                    c(q.inner_h, q.top, true, p)
                });
                break;
            default:
                f(q.width, q.left, true);
                c(q.inner_h, q.top, true, p)
            }
        }
    function m(p, s, r) {
            var q = d.get("sb-body-inner");
            sw = d.get("sb-wrapper"),
            so = d.get("sb-overlay"),
            tb = sw.offsetHeight - q.offsetHeight,
            lr = sw.offsetWidth - q.offsetWidth,
            max_h = so.offsetHeight,
            max_w = so.offsetWidth;
            return e.setDimensions(p, s, max_h, max_w, tb, lr, r)
        }
    return {
            markup: '<div id="sb-container">\n\
                        <div id="sb-overlay"></div>\n\
                        <div id="sb-wrapper">\n\
                            <div id="sb-title">\n\
                            </div>\n\
                                    <div id="sb-nav">\n\
                                        <a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a>\n\
                                        <a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a>\n\
                                        <a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a>\n\
                                        <a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a>\n\
                                        <a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a>\n\
                                    </div>\n\
                            <div id="sb-body">\n\
                                <div id="sb-body-inner"></div>\n\
                                <div id="sb-loading">\n\
                                    <a onclick="Shadowbox.close()">{cancel}</a>\n\
                                </div>\n\
                            </div>\n\
                                <div id="sb-title-inner">\n\
                                    <div id="sb-counter"></div>\n\
                                </div>\n\
                            <div id="sb-info">\n\
                                <div id="sb-info-inner">\n\
                                    <div id="sb-counter"></div>\n\
                                    <div style="clear:both"></div>\n\
                                </div>\n\
                            </div>\n\
                        </div>\n\
                    </div>',
            options: {
                animSequence: "sync"
            },
            init: function () {
                if (e.client.isIE6) {
                    d.get("sb-body").style.zoom = 1;
                    var r, p, q = /url\("(.*\.png)"\)/;
                    d.each(k, function (s) {
                        r = d.get(s);
                        if (r) {
                            p = e.lib.getStyle(r, "backgroundImage").match(q);
                            if (p) {
                                r.style.backgroundImage = "none";
                                r.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src=" + p[1] + ",sizingMethod=scale);"
                            }
                        }
                    })
                }
            },
            bodyEl: function () {
                return d.get("sb-body-inner")
            },
            onOpen: function (r, q, p) {
                d.get("sb-container").style.display = "block";
                var s = m(r, q);
                c(s.inner_h, s.top, false);
                f(s.width, s.left, false);
                g(p)
            },
            onLoad: function (q, r, p) {
                i(true);
                h(r, function () {
                    if (!q) {
                        return
                    }
                    if (!r) {
                        d.get("sb-wrapper").style.display = ""
                    }
                    p()
                })
            },
            onReady: function (p) {
                n(function () {
                    j(p)
                })
            },
            onFinish: function (p) {
                i(false, p)
            },
            onClose: function () {
                g(false)
            },
            onPlay: function () {
                b("play", false);
                b("pause", true)
            },
            onPause: function () {
                b("pause", false);
                b("play", true)
            },
            onWindowResize: function () {
                var r = e.content;
                if (!r) {
                    return
                }
                var q = m(r.height, r.width, r.resizable);
                f(q.width, q.left, false);
                c(q.inner_h, q.top, false);
                var p = d.get(e.contentId());
                if (p) {
                    if (r.resizable && e.options.handleOversize == "resize") {
                        p.height = q.resize_h;
                        p.width = q.resize_w
                    }
                }
            }
        }
}();