/*
 * Shadowbox.js, version 3.0.3
 * http://shadowbox-js.com/
 *
 * Copyright 2007-2010, Michael J. I. Jackson
 * Date: 2011-01-19 09:22:47 +0000
 */
(function (aw, l) {
    var T = {
        version: "3.0.3"
    };
    var M = navigator.userAgent.toLowerCase();
    if (M.indexOf("windows") > -1 || M.indexOf("win32") > -1) {
        T.isWindows = true
    } else {
        if (M.indexOf("macintosh") > -1 || M.indexOf("mac os x") > -1) {
            T.isMac = true
        } else {
            if (M.indexOf("linux") > -1) {
                T.isLinux = true
            }
        }
    }
    T.isIE = M.indexOf("msie") > -1;
    T.isIE6 = M.indexOf("msie 6") > -1;
    T.isIE7 = M.indexOf("msie 7") > -1;
    T.isGecko = M.indexOf("gecko") > -1 && M.indexOf("safari") == -1;
    T.isWebKit = M.indexOf("applewebkit/") > -1;
    var ad = /#(.+)$/,
        ah = /^(light|shadow)box\[(.*?)\]/i,
        aB = /\s*([a-z_]*?)\s*=\s*(.+)\s*/,
        g = /[0-9a-z]+$/i,
        aG = /(.+\/)shadowbox\.js/i;
    var C = false,
        b = false,
        m = {},
        B = 0,
        U, ar;
    T.current = -1;
    T.dimensions = null;
    T.ease = function (K) {
        return 1 + Math.pow(K - 1, 3)
    };
    T.errorInfo = {
        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"
        }
    };
    T.gallery = [];
    T.onReady = al;
    T.path = null;
    T.player = null;
    T.playerId = "sb-player";
    T.options = {
        animate: true,
        animateFade: true,
        autoplayMovies: true,
        continuous: false,
        enableKeys: true,
        flashParams: {
            bgcolor: "#000000",
            allowfullscreen: true
        },
        flashVars: {},
        flashVersion: "9.0.115",
        handleOversize: "resize",
        handleUnsupported: "link",
        onChange: al,
        onClose: al,
        onFinish: al,
        onOpen: al,
        showMovieControls: true,
        skipSetup: false,
        slideshowDelay: 0,
        viewportPadding: 20
    };
    T.getCurrent = function () {
        return T.current > -1 ? T.gallery[T.current] : null
    };
    T.hasNext = function () {
        return T.gallery.length > 1 && (T.current != T.gallery.length - 1 || T.options.continuous)
    };
    T.isOpen = function () {
        return C
    };
    T.isPaused = function () {
        return ar == "pause"
    };
    T.applyOptions = function (K) {
        m = aE({}, T.options);
        aE(T.options, K)
    };
    T.revertOptions = function () {
        aE(T.options, m)
    };
    T.init = function (aI, aL) {
        if (b) {
            return
        }
        b = true;
        if (T.skin.options) {
            aE(T.options, T.skin.options)
        }
        if (aI) {
            aE(T.options, aI)
        }
        if (!T.path) {
            var aK, S = document.getElementsByTagName("script");
            for (var aJ = 0, K = S.length; aJ < K; ++aJ) {
                aK = aG.exec(S[aJ].src);
                if (aK) {
                    T.path = aK[1];
                    break
                }
            }
        }
        if (aL) {
            T.onReady = aL
        }
        R()
    };
    T.open = function (S) {
        if (C) {
            return
        }
        var K = T.makeGallery(S);
        T.gallery = K[0];
        T.current = K[1];
        S = T.getCurrent();
        if (S == null) {
            return
        }
        T.applyOptions(S.options || {});
        I();
        if (T.gallery.length) {
            S = T.getCurrent();
            if (T.options.onOpen(S) === false) {
                return
            }
            C = true;
            T.skin.onOpen(S, d)
        }
    };
    T.close = function () {
        if (!C) {
            return
        }
        C = false;
        if (T.player) {
            T.player.remove();
            T.player = null
        }
        if (typeof ar == "number") {
            clearTimeout(ar);
            ar = null
        }
        B = 0;
        at(false);
        T.options.onClose(T.getCurrent());
        T.skin.onClose();
        T.revertOptions()
    };
    T.play = function () {
        if (!T.hasNext()) {
            return
        }
        if (!B) {
            B = T.options.slideshowDelay * 1000
        }
        if (B) {
            U = ay();
            ar = setTimeout(function () {
                B = U = 0;
                T.next()
            }, B);
            if (T.skin.onPlay) {
                T.skin.onPlay()
            }
        }
    };
    T.pause = function () {
        if (typeof ar != "number") {
            return
        }
        B = Math.max(0, B - (ay() - U));
        if (B) {
            clearTimeout(ar);
            ar = "pause";
            if (T.skin.onPause) {
                T.skin.onPause()
            }
        }
    };
    T.change = function (K) {
        if (!(K in T.gallery)) {
            if (T.options.continuous) {
                K = (K < 0 ? T.gallery.length + K : 0);
                if (!(K in T.gallery)) {
                    return
                }
            } else {
                return
            }
        }
        T.current = K;
        if (typeof ar == "number") {
            clearTimeout(ar);
            ar = null;
            B = U = 0
        }
        T.options.onChange(T.getCurrent());
        d(true)
    };
    T.next = function () {
        T.change(T.current + 1)
    };
    T.previous = function () {
        T.change(T.current - 1)
    };
    T.setDimensions = function (aU, aL, aS, aT, aK, K, aQ, aN) {
        var aP = aU,
            aJ = aL;
        var aO = 2 * aQ + aK;
        if (aU + aO > aS) {
            aU = aS - aO
        }
        var aI = 2 * aQ + K;
        if (aL + aI > aT) {
            aL = aT - aI
        }
        var S = (aP - aU) / aP,
            aR = (aJ - aL) / aJ,
            aM = (S > 0 || aR > 0);
        if (aN && aM) {
            if (S > aR) {
                aL = Math.round((aJ / aP) * aU)
            } else {
                if (aR > S) {
                    aU = Math.round((aP / aJ) * aL)
                }
            }
        }
        T.dimensions = {
            height: aU + aK,
            width: aL + K,
            innerHeight: aU,
            innerWidth: aL,
            top: Math.floor((aS - (aU + aO)) / 2 + aQ),
            left: Math.floor((aT - (aL + aI)) / 2 + aQ),
            oversized: aM
        };
        return T.dimensions
    };
    T.makeGallery = function (aK) {
        var K = [],
            aJ = -1;
        if (typeof aK == "string") {
            aK = [aK]
        }
        if (typeof aK.length == "number") {
            aH(aK, function (aM, aN) {
                if (aN.content) {
                    K[aM] = aN
                } else {
                    K[aM] = {
                        content: aN
                    }
                }
            });
            aJ = 0
        } else {
            if (aK.tagName) {
                var S = T.getCache(aK);
                aK = S ? S : T.makeObject(aK)
            }
            if (aK.gallery) {
                K = [];
                var aL;
                for (var aI in T.cache) {
                    aL = T.cache[aI];
                    if (aL.gallery && aL.gallery == aK.gallery) {
                        if (aJ == -1 && aL.content == aK.content) {
                            aJ = K.length
                        }
                        K.push(aL)
                    }
                }
                if (aJ == -1) {
                    K.unshift(aK);
                    aJ = 0
                }
            } else {
                K = [aK];
                aJ = 0
            }
        }
        aH(K, function (aM, aN) {
            K[aM] = aE({}, aN)
        });
        return [K, aJ]
    };
    T.makeObject = function (aJ, aI) {
        var aK = {
            content: aJ.href,
            title: aJ.getAttribute("title") || "",
            link: aJ
        };
        if (aI) {
            aI = aE({}, aI);
            aH(["player", "title", "height", "width", "gallery"], function (aL, aM) {
                if (typeof aI[aM] != "undefined") {
                    aK[aM] = aI[aM];
                    delete aI[aM]
                }
            });
            aK.options = aI
        } else {
            aK.options = {}
        }
        if (!aK.player) {
            aK.player = T.getPlayer(aK.content)
        }
        var K = aJ.getAttribute("rel");
        if (K) {
            var S = K.match(ah);
            if (S) {
                aK.gallery = escape(S[2])
            }
            aH(K.split(";"), function (aL, aM) {
                S = aM.match(aB);
                if (S) {
                    aK[S[1]] = S[2]
                }
            })
        }
        return aK
    };
    T.getPlayer = function (aI) {
        if (aI.indexOf("#") > -1 && aI.indexOf(document.location.href) == 0) {
            return "inline"
        }
        var aJ = aI.indexOf("?");
        if (aJ > -1) {
            aI = aI.substring(0, aJ)
        }
        var S, K = aI.match(g);
        if (K) {
            S = K[0].toLowerCase()
        }
        if (S) {
            if (T.img && T.img.ext.indexOf(S) > -1) {
                return "img"
            }
            if (T.swf && T.swf.ext.indexOf(S) > -1) {
                return "swf"
            }
            if (T.flv && T.flv.ext.indexOf(S) > -1) {
                return "flv"
            }
            if (T.qt && T.qt.ext.indexOf(S) > -1) {
                if (T.wmp && T.wmp.ext.indexOf(S) > -1) {
                    return "qtwmp"
                } else {
                    return "qt"
                }
            }
            if (T.wmp && T.wmp.ext.indexOf(S) > -1) {
                return "wmp"
            }
        }
        return "iframe"
    };

    function I() {
        var aJ = T.errorInfo,
            aK = T.plugins,
            aM, aN, aQ, aI, aP, S, aO, K;
        for (var aL = 0; aL < T.gallery.length; ++aL) {
            aM = T.gallery[aL];
            aN = false;
            aQ = null;
            switch (aM.player) {
            case "flv":
            case "swf":
                if (!aK.fla) {
                    aQ = "fla"
                }
                break;
            case "qt":
                if (!aK.qt) {
                    aQ = "qt"
                }
                break;
            case "wmp":
                if (T.isMac) {
                    if (aK.qt && aK.f4m) {
                        aM.player = "qt"
                    } else {
                        aQ = "qtf4m"
                    }
                } else {
                    if (!aK.wmp) {
                        aQ = "wmp"
                    }
                }
                break;
            case "qtwmp":
                if (aK.qt) {
                    aM.player = "qt"
                } else {
                    if (aK.wmp) {
                        aM.player = "wmp"
                    } else {
                        aQ = "qtwmp"
                    }
                }
                break
            }
            if (aQ) {
                if (T.options.handleUnsupported == "link") {
                    switch (aQ) {
                    case "qtf4m":
                        aP = "shared";
                        S = [aJ.qt.url, aJ.qt.name, aJ.f4m.url, aJ.f4m.name];
                        break;
                    case "qtwmp":
                        aP = "either";
                        S = [aJ.qt.url, aJ.qt.name, aJ.wmp.url, aJ.wmp.name];
                        break;
                    default:
                        aP = "single";
                        S = [aJ[aQ].url, aJ[aQ].name]
                    }
                    aM.player = "html";
                    aM.content = '<div class="sb-message">' + t(T.lang.errors[aP], S) + "</div>"
                } else {
                    aN = true
                }
            } else {
                if (aM.player == "inline") {
                    aI = ad.exec(aM.content);
                    if (aI) {
                        aO = af(aI[1]);
                        if (aO) {
                            aM.content = aO.innerHTML
                        } else {
                            aN = true
                        }
                    } else {
                        aN = true
                    }
                } else {
                    if (aM.player == "swf" || aM.player == "flv") {
                        K = (aM.options && aM.options.flashVersion) || T.options.flashVersion;
                        if (T.flash && !T.flash.hasFlashPlayerVersion(K)) {
                            aM.width = 310;
                            aM.height = 177
                        }
                    }
                }
            }
            if (aN) {
                T.gallery.splice(aL, 1);
                if (aL < T.current) {
                    --T.current
                } else {
                    if (aL == T.current) {
                        T.current = aL > 0 ? aL - 1 : aL
                    }
                }--aL
            }
        }
    }
    function at(K) {
        if (!T.options.enableKeys) {
            return
        }(K ? H : O)(document, "keydown", ap)
    }
    function ap(aI) {
        if (aI.metaKey || aI.shiftKey || aI.altKey || aI.ctrlKey) {
            return
        }
        var S = x(aI),
            K;
        switch (S) {
        case 81:
        case 88:
        case 27:
            K = T.close;
            break;
        case 37:
            K = T.previous;
            break;
        case 39:
            K = T.next;
            break;
        case 32:
            K = typeof ar == "number" ? T.pause : T.play;
            break
        }
        if (K) {
            o(aI);
            K()
        }
    }
    function d(aM) {
        at(false);
        var aL = T.getCurrent();
        var aI = (aL.player == "inline" ? "html" : aL.player);
        if (typeof T[aI] != "function") {
            throw "unknown player " + aI
        }
        if (aM) {
            T.player.remove();
            T.revertOptions();
            T.applyOptions(aL.options || {})
        }
        T.player = new T[aI](aL, T.playerId);
        if (T.gallery.length > 1) {
            var aJ = T.gallery[T.current + 1] || T.gallery[0];
            if (aJ.player == "img") {
                var S = new Image();
                S.src = aJ.content
            }
            var aK = T.gallery[T.current - 1] || T.gallery[T.gallery.length - 1];
            if (aK.player == "img") {
                var K = new Image();
                K.src = aK.content
            }
        }
        T.skin.onLoad(aM, Y)
    }
    function Y() {
        if (!C) {
            return
        }
        if (typeof T.player.ready != "undefined") {
            var K = setInterval(function () {
                if (C) {
                    if (T.player.ready) {
                        clearInterval(K);
                        K = null;
                        T.skin.onReady(f)
                    }
                } else {
                    clearInterval(K);
                    K = null
                }
            }, 10)
        } else {
            T.skin.onReady(f)
        }
    }
    function f() {
        if (!C) {
            return
        }
        T.player.append(T.skin.body, T.dimensions);
        T.skin.onShow(L)
    }
    function L() {
        if (!C) {
            return
        }
        if (T.player.onLoad) {
            T.player.onLoad()
        }
        T.options.onFinish(T.getCurrent());
        if (!T.isPaused()) {
            T.play()
        }
        at(true)
    }
    if (!Array.prototype.indexOf) {
        Array.prototype.indexOf = function (S, aI) {
            var K = this.length >>> 0;
            aI = aI || 0;
            if (aI < 0) {
                aI += K
            }
            for (; aI < K; ++aI) {
                if (aI in this && this[aI] === S) {
                    return aI
                }
            }
            return -1
        }
    }
    function ay() {
        return (new Date).getTime()
    }
    function aE(K, aI) {
        for (var S in aI) {
            K[S] = aI[S]
        }
        return K
    }
    function aH(aJ, aK) {
        var S = 0,
            K = aJ.length;
        for (var aI = aJ[0]; S < K && aK.call(aI, S, aI) !== false; aI = aJ[++S]) {}
    }
    function t(S, K) {
        return S.replace(/\{(\w+?)\}/g, function (aI, aJ) {
            return K[aJ]
        })
    }
    function al() {}
    function af(K) {
        return document.getElementById(K)
    }
    function E(K) {
        K.parentNode.removeChild(K)
    }
    var i = true,
        z = true;

    function e() {
        var K = document.body,
            S = document.createElement("div");
        i = typeof S.style.opacity === "string";
        S.style.position = "fixed";
        S.style.margin = 0;
        S.style.top = "20px";
        K.appendChild(S, K.firstChild);
        z = S.offsetTop == 20;
        K.removeChild(S)
    }
    T.getStyle = (function () {
        var K = /opacity=([^)]*)/,
            S = document.defaultView && document.defaultView.getComputedStyle;
        return function (aL, aK) {
            var aJ;
            if (!i && aK == "opacity" && aL.currentStyle) {
                aJ = K.test(aL.currentStyle.filter || "") ? (parseFloat(RegExp.$1) / 100) + "" : "";
                return aJ === "" ? "1" : aJ
            }
            if (S) {
                var aI = S(aL, null);
                if (aI) {
                    aJ = aI[aK]
                }
                if (aK == "opacity" && aJ == "") {
                    aJ = "1"
                }
            } else {
                aJ = aL.currentStyle[aK]
            }
            return aJ
        }
    })();
    T.appendHTML = function (aI, S) {
        if (aI.insertAdjacentHTML) {
            aI.insertAdjacentHTML("BeforeEnd", S)
        } else {
            if (aI.lastChild) {
                var K = aI.ownerDocument.createRange();
                K.setStartAfter(aI.lastChild);
                var aJ = K.createContextualFragment(S);
                aI.appendChild(aJ)
            } else {
                aI.innerHTML = S
            }
        }
    };
    T.getWindowSize = function (K) {
        if (document.compatMode === "CSS1Compat") {
            return document.documentElement["client" + K]
        }
        return document.body["client" + K]
    };
    T.setOpacity = function (aI, K) {
        var S = aI.style;
        if (i) {
            S.opacity = (K == 1 ? "" : K)
        } else {
            S.zoom = 1;
            if (K == 1) {
                if (typeof S.filter == "string" && (/alpha/i).test(S.filter)) {
                    S.filter = S.filter.replace(/\s*[\w\.]*alpha\([^\)]*\);?/gi, "")
                }
            } else {
                S.filter = (S.filter || "").replace(/\s*[\w\.]*alpha\([^\)]*\)/gi, "") + " alpha(opacity=" + (K * 100) + ")"
            }
        }
    };
    T.clearOpacity = function (K) {
        T.setOpacity(K, 1)
    };

    function p(S) {
        var K = S.target ? S.target : S.srcElement;
        return K.nodeType == 3 ? K.parentNode : K
    }
    function X(S) {
        var K = S.pageX || (S.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)),
            aI = S.pageY || (S.clientY + (document.documentElement.scrollTop || document.body.scrollTop));
        return [K, aI]
    }
    function o(K) {
        K.preventDefault()
    }
    function x(K) {
        return K.which ? K.which : K.keyCode
    }
    function H(aJ, aI, S) {
        if (aJ.addEventListener) {
            aJ.addEventListener(aI, S, false)
        } else {
            if (aJ.nodeType === 3 || aJ.nodeType === 8) {
                return
            }
            if (aJ.setInterval && (aJ !== aw && !aJ.frameElement)) {
                aJ = aw
            }
            if (!S.__guid) {
                S.__guid = H.guid++
            }
            if (!aJ.events) {
                aJ.events = {}
            }
            var K = aJ.events[aI];
            if (!K) {
                K = aJ.events[aI] = {};
                if (aJ["on" + aI]) {
                    K[0] = aJ["on" + aI]
                }
            }
            K[S.__guid] = S;
            aJ["on" + aI] = H.handleEvent
        }
    }
    H.guid = 1;
    H.handleEvent = function (aJ) {
        var K = true;
        aJ = aJ || H.fixEvent(((this.ownerDocument || this.document || this).parentWindow || aw).event);
        var S = this.events[aJ.type];
        for (var aI in S) {
            this.__handleEvent = S[aI];
            if (this.__handleEvent(aJ) === false) {
                K = false
            }
        }
        return K
    };
    H.preventDefault = function () {
        this.returnValue = false
    };
    H.stopPropagation = function () {
        this.cancelBubble = true
    };
    H.fixEvent = function (K) {
        K.preventDefault = H.preventDefault;
        K.stopPropagation = H.stopPropagation;
        return K
    };

    function O(aI, S, K) {
        if (aI.removeEventListener) {
            aI.removeEventListener(S, K, false)
        } else {
            if (aI.events && aI.events[S]) {
                delete aI.events[S][K.__guid]
            }
        }
    }
    var A = false,
        an;
    if (document.addEventListener) {
        an = function () {
            document.removeEventListener("DOMContentLoaded", an, false);
            T.load()
        }
    } else {
        if (document.attachEvent) {
            an = function () {
                if (document.readyState === "complete") {
                    document.detachEvent("onreadystatechange", an);
                    T.load()
                }
            }
        }
    }
    function h() {
        if (A) {
            return
        }
        try {
            document.documentElement.doScroll("left")
        } catch (K) {
            setTimeout(h, 1);
            return
        }
        T.load()
    }
    function R() {
        if (document.readyState === "complete") {
            return T.load()
        }
        if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded", an, false);
            aw.addEventListener("load", T.load, false)
        } else {
            if (document.attachEvent) {
                document.attachEvent("onreadystatechange", an);
                aw.attachEvent("onload", T.load);
                var K = false;
                try {
                    K = aw.frameElement === null
                } catch (S) {}
                if (document.documentElement.doScroll && K) {
                    h()
                }
            }
        }
    }
    T.load = function () {
        if (A) {
            return
        }
        if (!document.body) {
            return setTimeout(T.load, 13)
        }
        A = true;
        e();
        T.onReady();
        if (!T.options.skipSetup) {
            T.setup()
        }
        T.skin.init()
    };
    T.plugins = {};
    if (navigator.plugins && navigator.plugins.length) {
        var y = [];
        aH(navigator.plugins, function (K, S) {
            y.push(S.name)
        });
        y = y.join(",");
        var ak = y.indexOf("Flip4Mac") > -1;
        T.plugins = {
            fla: y.indexOf("Shockwave Flash") > -1,
            qt: y.indexOf("QuickTime") > -1,
            wmp: !ak && y.indexOf("Windows Media") > -1,
            f4m: ak
        }
    } else {
        var q = function (K) {
            var S;
            try {
                S = new ActiveXObject(K)
            } catch (aI) {}
            return !!S
        };
        T.plugins = {
            fla: q("ShockwaveFlash.ShockwaveFlash"),
            qt: q("QuickTime.QuickTime"),
            wmp: q("wmplayer.ocx"),
            f4m: false
        }
    }
    var Z = /^(light|shadow)box/i,
        ao = "shadowboxCacheKey",
        c = 1;
    T.cache = {};
    T.select = function (S) {
        var aI = [];
        if (!S) {
            var K;
            aH(document.getElementsByTagName("a"), function (aL, aM) {
                K = aM.getAttribute("rel");
                if (K && Z.test(K)) {
                    aI.push(aM)
                }
            })
        } else {
            var aK = S.length;
            if (aK) {
                if (typeof S == "string") {
                    if (T.find) {
                        aI = T.find(S)
                    }
                } else {
                    if (aK == 2 && typeof S[0] == "string" && S[1].nodeType) {
                        if (T.find) {
                            aI = T.find(S[0], S[1])
                        }
                    } else {
                        for (var aJ = 0; aJ < aK; ++aJ) {
                            aI[aJ] = S[aJ]
                        }
                    }
                }
            } else {
                aI.push(S)
            }
        }
        return aI
    };
    T.setup = function (K, S) {
        aH(T.select(K), function (aI, aJ) {
            T.addCache(aJ, S)
        })
    };
    T.teardown = function (K) {
        aH(T.select(K), function (S, aI) {
            T.removeCache(aI)
        })
    };
    T.addCache = function (aI, K) {
        var S = aI[ao];
        if (S == l) {
            S = c++;
            aI[ao] = S;
            H(aI, "click", w)
        }
        T.cache[S] = T.makeObject(aI, K)
    };
    T.removeCache = function (K) {
        O(K, "click", w);
        delete T.cache[K[ao]];
        K[ao] = null
    };
    T.getCache = function (S) {
        var K = S[ao];
        return (K in T.cache && T.cache[K])
    };
    T.clearCache = function () {
        for (var K in T.cache) {
            T.removeCache(T.cache[K].link)
        }
        T.cache = {}
    };

    function w(K) {
        T.open(this);
        if (T.gallery.length) {
            o(K)
        }
    }
/*
 * Sizzle CSS Selector Engine - v1.0
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 *
 * Modified for inclusion in Shadowbox.js
 */
    T.find = (function () {
        var aR = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
            aS = 0,
            aU = Object.prototype.toString,
            aM = false,
            aL = true;
        [0, 0].sort(function () {
            aL = false;
            return 0
        });
        var aI = function (a3, aY, a6, a7) {
            a6 = a6 || [];
            var a9 = aY = aY || document;
            if (aY.nodeType !== 1 && aY.nodeType !== 9) {
                return []
            }
            if (!a3 || typeof a3 !== "string") {
                return a6
            }
            var a4 = [],
                a0, bb, be, aZ, a2 = true,
                a1 = aJ(aY),
                a8 = a3;
            while ((aR.exec(""), a0 = aR.exec(a8)) !== null) {
                a8 = a0[3];
                a4.push(a0[1]);
                if (a0[2]) {
                    aZ = a0[3];
                    break
                }
            }
            if (a4.length > 1 && aN.exec(a3)) {
                if (a4.length === 2 && aO.relative[a4[0]]) {
                    bb = aV(a4[0] + a4[1], aY)
                } else {
                    bb = aO.relative[a4[0]] ? [aY] : aI(a4.shift(), aY);
                    while (a4.length) {
                        a3 = a4.shift();
                        if (aO.relative[a3]) {
                            a3 += a4.shift()
                        }
                        bb = aV(a3, bb)
                    }
                }
            } else {
                if (!a7 && a4.length > 1 && aY.nodeType === 9 && !a1 && aO.match.ID.test(a4[0]) && !aO.match.ID.test(a4[a4.length - 1])) {
                    var ba = aI.find(a4.shift(), aY, a1);
                    aY = ba.expr ? aI.filter(ba.expr, ba.set)[0] : ba.set[0]
                }
                if (aY) {
                    var ba = a7 ? {
                        expr: a4.pop(),
                        set: aQ(a7)
                    } : aI.find(a4.pop(), a4.length === 1 && (a4[0] === "~" || a4[0] === "+") && aY.parentNode ? aY.parentNode : aY, a1);
                    bb = ba.expr ? aI.filter(ba.expr, ba.set) : ba.set;
                    if (a4.length > 0) {
                        be = aQ(bb)
                    } else {
                        a2 = false
                    }
                    while (a4.length) {
                        var bd = a4.pop(),
                            bc = bd;
                        if (!aO.relative[bd]) {
                            bd = ""
                        } else {
                            bc = a4.pop()
                        }
                        if (bc == null) {
                            bc = aY
                        }
                        aO.relative[bd](be, bc, a1)
                    }
                } else {
                    be = a4 = []
                }
            }
            if (!be) {
                be = bb
            }
            if (!be) {
                throw "Syntax error, unrecognized expression: " + (bd || a3)
            }
            if (aU.call(be) === "[object Array]") {
                if (!a2) {
                    a6.push.apply(a6, be)
                } else {
                    if (aY && aY.nodeType === 1) {
                        for (var a5 = 0; be[a5] != null; a5++) {
                            if (be[a5] && (be[a5] === true || be[a5].nodeType === 1 && aP(aY, be[a5]))) {
                                a6.push(bb[a5])
                            }
                        }
                    } else {
                        for (var a5 = 0; be[a5] != null; a5++) {
                            if (be[a5] && be[a5].nodeType === 1) {
                                a6.push(bb[a5])
                            }
                        }
                    }
                }
            } else {
                aQ(be, a6)
            }
            if (aZ) {
                aI(aZ, a9, a6, a7);
                aI.uniqueSort(a6)
            }
            return a6
        };
        aI.uniqueSort = function (aZ) {
            if (aT) {
                aM = aL;
                aZ.sort(aT);
                if (aM) {
                    for (var aY = 1; aY < aZ.length; aY++) {
                        if (aZ[aY] === aZ[aY - 1]) {
                            aZ.splice(aY--, 1)
                        }
                    }
                }
            }
            return aZ
        };
        aI.matches = function (aY, aZ) {
            return aI(aY, null, null, aZ)
        };
        aI.find = function (a5, aY, a6) {
            var a4, a2;
            if (!a5) {
                return []
            }
            for (var a1 = 0, a0 = aO.order.length; a1 < a0; a1++) {
                var a3 = aO.order[a1],
                    a2;
                if ((a2 = aO.leftMatch[a3].exec(a5))) {
                    var aZ = a2[1];
                    a2.splice(1, 1);
                    if (aZ.substr(aZ.length - 1) !== "\\") {
                        a2[1] = (a2[1] || "").replace(/\\/g, "");
                        a4 = aO.find[a3](a2, aY, a6);
                        if (a4 != null) {
                            a5 = a5.replace(aO.match[a3], "");
                            break
                        }
                    }
                }
            }
            if (!a4) {
                a4 = aY.getElementsByTagName("*")
            }
            return {
                set: a4,
                expr: a5
            }
        };
        aI.filter = function (a8, a7, bb, a1) {
            var a0 = a8,
                bd = [],
                a5 = a7,
                a3, aY, a4 = a7 && a7[0] && aJ(a7[0]);
            while (a8 && a7.length) {
                for (var a6 in aO.filter) {
                    if ((a3 = aO.match[a6].exec(a8)) != null) {
                        var aZ = aO.filter[a6],
                            bc, ba;
                        aY = false;
                        if (a5 === bd) {
                            bd = []
                        }
                        if (aO.preFilter[a6]) {
                            a3 = aO.preFilter[a6](a3, a5, bb, bd, a1, a4);
                            if (!a3) {
                                aY = bc = true
                            } else {
                                if (a3 === true) {
                                    continue
                                }
                            }
                        }
                        if (a3) {
                            for (var a2 = 0;
                            (ba = a5[a2]) != null; a2++) {
                                if (ba) {
                                    bc = aZ(ba, a3, a2, a5);
                                    var a9 = a1 ^ !! bc;
                                    if (bb && bc != null) {
                                        if (a9) {
                                            aY = true
                                        } else {
                                            a5[a2] = false
                                        }
                                    } else {
                                        if (a9) {
                                            bd.push(ba);
                                            aY = true
                                        }
                                    }
                                }
                            }
                        }
                        if (bc !== l) {
                            if (!bb) {
                                a5 = bd
                            }
                            a8 = a8.replace(aO.match[a6], "");
                            if (!aY) {
                                return []
                            }
                            break
                        }
                    }
                }
                if (a8 === a0) {
                    if (aY == null) {
                        throw "Syntax error, unrecognized expression: " + a8
                    } else {
                        break
                    }
                }
                a0 = a8
            }
            return a5
        };
        var aO = aI.selectors = {
            order: ["ID", "NAME", "TAG"],
            match: {
                ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
            },
            leftMatch: {},
            attrMap: {
                "class": "className",
                "for": "htmlFor"
            },
            attrHandle: {
                href: function (aY) {
                    return aY.getAttribute("href")
                }
            },
            relative: {
                "+": function (a4, aZ) {
                    var a1 = typeof aZ === "string",
                        a3 = a1 && !/\W/.test(aZ),
                        a5 = a1 && !a3;
                    if (a3) {
                        aZ = aZ.toLowerCase()
                    }
                    for (var a0 = 0, aY = a4.length, a2; a0 < aY; a0++) {
                        if ((a2 = a4[a0])) {
                            while ((a2 = a2.previousSibling) && a2.nodeType !== 1) {}
                            a4[a0] = a5 || a2 && a2.nodeName.toLowerCase() === aZ ? a2 || false : a2 === aZ
                        }
                    }
                    if (a5) {
                        aI.filter(aZ, a4, true)
                    }
                },
                ">": function (a4, aZ) {
                    var a2 = typeof aZ === "string";
                    if (a2 && !/\W/.test(aZ)) {
                        aZ = aZ.toLowerCase();
                        for (var a0 = 0, aY = a4.length; a0 < aY; a0++) {
                            var a3 = a4[a0];
                            if (a3) {
                                var a1 = a3.parentNode;
                                a4[a0] = a1.nodeName.toLowerCase() === aZ ? a1 : false
                            }
                        }
                    } else {
                        for (var a0 = 0, aY = a4.length; a0 < aY; a0++) {
                            var a3 = a4[a0];
                            if (a3) {
                                a4[a0] = a2 ? a3.parentNode : a3.parentNode === aZ
                            }
                        }
                        if (a2) {
                            aI.filter(aZ, a4, true)
                        }
                    }
                },
                "": function (a1, aZ, a3) {
                    var a0 = aS++,
                        aY = aW;
                    if (typeof aZ === "string" && !/\W/.test(aZ)) {
                        var a2 = aZ = aZ.toLowerCase();
                        aY = K
                    }
                    aY("parentNode", aZ, a0, a1, a2, a3)
                },
                "~": function (a1, aZ, a3) {
                    var a0 = aS++,
                        aY = aW;
                    if (typeof aZ === "string" && !/\W/.test(aZ)) {
                        var a2 = aZ = aZ.toLowerCase();
                        aY = K
                    }
                    aY("previousSibling", aZ, a0, a1, a2, a3)
                }
            },
            find: {
                ID: function (aZ, a0, a1) {
                    if (typeof a0.getElementById !== "undefined" && !a1) {
                        var aY = a0.getElementById(aZ[1]);
                        return aY ? [aY] : []
                    }
                },
                NAME: function (a0, a3) {
                    if (typeof a3.getElementsByName !== "undefined") {
                        var aZ = [],
                            a2 = a3.getElementsByName(a0[1]);
                        for (var a1 = 0, aY = a2.length; a1 < aY; a1++) {
                            if (a2[a1].getAttribute("name") === a0[1]) {
                                aZ.push(a2[a1])
                            }
                        }
                        return aZ.length === 0 ? null : aZ
                    }
                },
                TAG: function (aY, aZ) {
                    return aZ.getElementsByTagName(aY[1])
                }
            },
            preFilter: {
                CLASS: function (a1, aZ, a0, aY, a4, a5) {
                    a1 = " " + a1[1].replace(/\\/g, "") + " ";
                    if (a5) {
                        return a1
                    }
                    for (var a2 = 0, a3;
                    (a3 = aZ[a2]) != null; a2++) {
                        if (a3) {
                            if (a4 ^ (a3.className && (" " + a3.className + " ").replace(/[\t\n]/g, " ").indexOf(a1) >= 0)) {
                                if (!a0) {
                                    aY.push(a3)
                                }
                            } else {
                                if (a0) {
                                    aZ[a2] = false
                                }
                            }
                        }
                    }
                    return false
                },
                ID: function (aY) {
                    return aY[1].replace(/\\/g, "")
                },
                TAG: function (aZ, aY) {
                    return aZ[1].toLowerCase()
                },
                CHILD: function (aY) {
                    if (aY[1] === "nth") {
                        var aZ = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(aY[2] === "even" && "2n" || aY[2] === "odd" && "2n+1" || !/\D/.test(aY[2]) && "0n+" + aY[2] || aY[2]);
                        aY[2] = (aZ[1] + (aZ[2] || 1)) - 0;
                        aY[3] = aZ[3] - 0
                    }
                    aY[0] = aS++;
                    return aY
                },
                ATTR: function (a2, aZ, a0, aY, a3, a4) {
                    var a1 = a2[1].replace(/\\/g, "");
                    if (!a4 && aO.attrMap[a1]) {
                        a2[1] = aO.attrMap[a1]
                    }
                    if (a2[2] === "~=") {
                        a2[4] = " " + a2[4] + " "
                    }
                    return a2
                },
                PSEUDO: function (a2, aZ, a0, aY, a3) {
                    if (a2[1] === "not") {
                        if ((aR.exec(a2[3]) || "").length > 1 || /^\w/.test(a2[3])) {
                            a2[3] = aI(a2[3], null, null, aZ)
                        } else {
                            var a1 = aI.filter(a2[3], aZ, a0, true ^ a3);
                            if (!a0) {
                                aY.push.apply(aY, a1)
                            }
                            return false
                        }
                    } else {
                        if (aO.match.POS.test(a2[0]) || aO.match.CHILD.test(a2[0])) {
                            return true
                        }
                    }
                    return a2
                },
                POS: function (aY) {
                    aY.unshift(true);
                    return aY
                }
            },
            filters: {
                enabled: function (aY) {
                    return aY.disabled === false && aY.type !== "hidden"
                },
                disabled: function (aY) {
                    return aY.disabled === true
                },
                checked: function (aY) {
                    return aY.checked === true
                },
                selected: function (aY) {
                    aY.parentNode.selectedIndex;
                    return aY.selected === true
                },
                parent: function (aY) {
                    return !!aY.firstChild
                },
                empty: function (aY) {
                    return !aY.firstChild
                },
                has: function (a0, aZ, aY) {
                    return !!aI(aY[3], a0).length
                },
                header: function (aY) {
                    return /h\d/i.test(aY.nodeName)
                },
                text: function (aY) {
                    return "text" === aY.type
                },
                radio: function (aY) {
                    return "radio" === aY.type
                },
                checkbox: function (aY) {
                    return "checkbox" === aY.type
                },
                file: function (aY) {
                    return "file" === aY.type
                },
                password: function (aY) {
                    return "password" === aY.type
                },
                submit: function (aY) {
                    return "submit" === aY.type
                },
                image: function (aY) {
                    return "image" === aY.type
                },
                reset: function (aY) {
                    return "reset" === aY.type
                },
                button: function (aY) {
                    return "button" === aY.type || aY.nodeName.toLowerCase() === "button"
                },
                input: function (aY) {
                    return /input|select|textarea|button/i.test(aY.nodeName)
                }
            },
            setFilters: {
                first: function (aZ, aY) {
                    return aY === 0
                },
                last: function (a0, aZ, aY, a1) {
                    return aZ === a1.length - 1
                },
                even: function (aZ, aY) {
                    return aY % 2 === 0
                },
                odd: function (aZ, aY) {
                    return aY % 2 === 1
                },
                lt: function (a0, aZ, aY) {
                    return aZ < aY[3] - 0
                },
                gt: function (a0, aZ, aY) {
                    return aZ > aY[3] - 0
                },
                nth: function (a0, aZ, aY) {
                    return aY[3] - 0 === aZ
                },
                eq: function (a0, aZ, aY) {
                    return aY[3] - 0 === aZ
                }
            },
            filter: {
                PSEUDO: function (a4, a0, a1, a5) {
                    var aZ = a0[1],
                        a2 = aO.filters[aZ];
                    if (a2) {
                        return a2(a4, a1, a0, a5)
                    } else {
                        if (aZ === "contains") {
                            return (a4.textContent || a4.innerText || S([a4]) || "").indexOf(a0[3]) >= 0
                        } else {
                            if (aZ === "not") {
                                var a3 = a0[3];
                                for (var a1 = 0, aY = a3.length; a1 < aY; a1++) {
                                    if (a3[a1] === a4) {
                                        return false
                                    }
                                }
                                return true
                            } else {
                                throw "Syntax error, unrecognized expression: " + aZ
                            }
                        }
                    }
                },
                CHILD: function (aY, a1) {
                    var a4 = a1[1],
                        aZ = aY;
                    switch (a4) {
                    case "only":
                    case "first":
                        while ((aZ = aZ.previousSibling)) {
                            if (aZ.nodeType === 1) {
                                return false
                            }
                        }
                        if (a4 === "first") {
                            return true
                        }
                        aZ = aY;
                    case "last":
                        while ((aZ = aZ.nextSibling)) {
                            if (aZ.nodeType === 1) {
                                return false
                            }
                        }
                        return true;
                    case "nth":
                        var a0 = a1[2],
                            a7 = a1[3];
                        if (a0 === 1 && a7 === 0) {
                            return true
                        }
                        var a3 = a1[0],
                            a6 = aY.parentNode;
                        if (a6 && (a6.sizcache !== a3 || !aY.nodeIndex)) {
                            var a2 = 0;
                            for (aZ = a6.firstChild; aZ; aZ = aZ.nextSibling) {
                                if (aZ.nodeType === 1) {
                                    aZ.nodeIndex = ++a2
                                }
                            }
                            a6.sizcache = a3
                        }
                        var a5 = aY.nodeIndex - a7;
                        if (a0 === 0) {
                            return a5 === 0
                        } else {
                            return (a5 % a0 === 0 && a5 / a0 >= 0)
                        }
                    }
                },
                ID: function (aZ, aY) {
                    return aZ.nodeType === 1 && aZ.getAttribute("id") === aY
                },
                TAG: function (aZ, aY) {
                    return (aY === "*" && aZ.nodeType === 1) || aZ.nodeName.toLowerCase() === aY
                },
                CLASS: function (aZ, aY) {
                    return (" " + (aZ.className || aZ.getAttribute("class")) + " ").indexOf(aY) > -1
                },
                ATTR: function (a3, a1) {
                    var a0 = a1[1],
                        aY = aO.attrHandle[a0] ? aO.attrHandle[a0](a3) : a3[a0] != null ? a3[a0] : a3.getAttribute(a0),
                        a4 = aY + "",
                        a2 = a1[2],
                        aZ = a1[4];
                    return aY == null ? a2 === "!=" : a2 === "=" ? a4 === aZ : a2 === "*=" ? a4.indexOf(aZ) >= 0 : a2 === "~=" ? (" " + a4 + " ").indexOf(aZ) >= 0 : !aZ ? a4 && aY !== false : a2 === "!=" ? a4 !== aZ : a2 === "^=" ? a4.indexOf(aZ) === 0 : a2 === "$=" ? a4.substr(a4.length - aZ.length) === aZ : a2 === "|=" ? a4 === aZ || a4.substr(0, aZ.length + 1) === aZ + "-" : false
                },
                POS: function (a2, aZ, a0, a3) {
                    var aY = aZ[2],
                        a1 = aO.setFilters[aY];
                    if (a1) {
                        return a1(a2, a0, aZ, a3)
                    }
                }
            }
        };
        var aN = aO.match.POS;
        for (var aK in aO.match) {
            aO.match[aK] = new RegExp(aO.match[aK].source + /(?![^\[]*\])(?![^\(]*\))/.source);
            aO.leftMatch[aK] = new RegExp(/(^(?:.|\r|\n)*?)/.source + aO.match[aK].source)
        }
        var aQ = function (aZ, aY) {
            aZ = Array.prototype.slice.call(aZ, 0);
            if (aY) {
                aY.push.apply(aY, aZ);
                return aY
            }
            return aZ
        };
        try {
            Array.prototype.slice.call(document.documentElement.childNodes, 0)
        } catch (aX) {
            aQ = function (a2, a1) {
                var aZ = a1 || [];
                if (aU.call(a2) === "[object Array]") {
                    Array.prototype.push.apply(aZ, a2)
                } else {
                    if (typeof a2.length === "number") {
                        for (var a0 = 0, aY = a2.length; a0 < aY; a0++) {
                            aZ.push(a2[a0])
                        }
                    } else {
                        for (var a0 = 0; a2[a0]; a0++) {
                            aZ.push(a2[a0])
                        }
                    }
                }
                return aZ
            }
        }
        var aT;
        if (document.documentElement.compareDocumentPosition) {
            aT = function (aZ, aY) {
                if (!aZ.compareDocumentPosition || !aY.compareDocumentPosition) {
                    if (aZ == aY) {
                        aM = true
                    }
                    return aZ.compareDocumentPosition ? -1 : 1
                }
                var a0 = aZ.compareDocumentPosition(aY) & 4 ? -1 : aZ === aY ? 0 : 1;
                if (a0 === 0) {
                    aM = true
                }
                return a0
            }
        } else {
            if ("sourceIndex" in document.documentElement) {
                aT = function (aZ, aY) {
                    if (!aZ.sourceIndex || !aY.sourceIndex) {
                        if (aZ == aY) {
                            aM = true
                        }
                        return aZ.sourceIndex ? -1 : 1
                    }
                    var a0 = aZ.sourceIndex - aY.sourceIndex;
                    if (a0 === 0) {
                        aM = true
                    }
                    return a0
                }
            } else {
                if (document.createRange) {
                    aT = function (a1, aZ) {
                        if (!a1.ownerDocument || !aZ.ownerDocument) {
                            if (a1 == aZ) {
                                aM = true
                            }
                            return a1.ownerDocument ? -1 : 1
                        }
                        var a0 = a1.ownerDocument.createRange(),
                            aY = aZ.ownerDocument.createRange();
                        a0.setStart(a1, 0);
                        a0.setEnd(a1, 0);
                        aY.setStart(aZ, 0);
                        aY.setEnd(aZ, 0);
                        var a2 = a0.compareBoundaryPoints(Range.START_TO_END, aY);
                        if (a2 === 0) {
                            aM = true
                        }
                        return a2
                    }
                }
            }
        }
        function S(aY) {
            var aZ = "",
                a1;
            for (var a0 = 0; aY[a0]; a0++) {
                a1 = aY[a0];
                if (a1.nodeType === 3 || a1.nodeType === 4) {
                    aZ += a1.nodeValue
                } else {
                    if (a1.nodeType !== 8) {
                        aZ += S(a1.childNodes)
                    }
                }
            }
            return aZ
        }(function () {
            var aZ = document.createElement("div"),
                a0 = "script" + (new Date).getTime();
            aZ.innerHTML = "<a name='" + a0 + "'/>";
            var aY = document.documentElement;
            aY.insertBefore(aZ, aY.firstChild);
            if (document.getElementById(a0)) {
                aO.find.ID = function (a2, a3, a4) {
                    if (typeof a3.getElementById !== "undefined" && !a4) {
                        var a1 = a3.getElementById(a2[1]);
                        return a1 ? a1.id === a2[1] || typeof a1.getAttributeNode !== "undefined" && a1.getAttributeNode("id").nodeValue === a2[1] ? [a1] : l : []
                    }
                };
                aO.filter.ID = function (a3, a1) {
                    var a2 = typeof a3.getAttributeNode !== "undefined" && a3.getAttributeNode("id");
                    return a3.nodeType === 1 && a2 && a2.nodeValue === a1
                }
            }
            aY.removeChild(aZ);
            aY = aZ = null
        })();
        (function () {
            var aY = document.createElement("div");
            aY.appendChild(document.createComment(""));
            if (aY.getElementsByTagName("*").length > 0) {
                aO.find.TAG = function (aZ, a3) {
                    var a2 = a3.getElementsByTagName(aZ[1]);
                    if (aZ[1] === "*") {
                        var a1 = [];
                        for (var a0 = 0; a2[a0]; a0++) {
                            if (a2[a0].nodeType === 1) {
                                a1.push(a2[a0])
                            }
                        }
                        a2 = a1
                    }
                    return a2
                }
            }
            aY.innerHTML = "<a href='#'></a>";
            if (aY.firstChild && typeof aY.firstChild.getAttribute !== "undefined" && aY.firstChild.getAttribute("href") !== "#") {
                aO.attrHandle.href = function (aZ) {
                    return aZ.getAttribute("href", 2)
                }
            }
            aY = null
        })();
        if (document.querySelectorAll) {
            (function () {
                var aY = aI,
                    a0 = document.createElement("div");
                a0.innerHTML = "<p class='TEST'></p>";
                if (a0.querySelectorAll && a0.querySelectorAll(".TEST").length === 0) {
                    return
                }
                aI = function (a4, a3, a1, a2) {
                    a3 = a3 || document;
                    if (!a2 && a3.nodeType === 9 && !aJ(a3)) {
                        try {
                            return aQ(a3.querySelectorAll(a4), a1)
                        } catch (a5) {}
                    }
                    return aY(a4, a3, a1, a2)
                };
                for (var aZ in aY) {
                    aI[aZ] = aY[aZ]
                }
                a0 = null
            })()
        }(function () {
            var aY = document.createElement("div");
            aY.innerHTML = "<div class='test e'></div><div class='test'></div>";
            if (!aY.getElementsByClassName || aY.getElementsByClassName("e").length === 0) {
                return
            }
            aY.lastChild.className = "e";
            if (aY.getElementsByClassName("e").length === 1) {
                return
            }
            aO.order.splice(1, 0, "CLASS");
            aO.find.CLASS = function (aZ, a0, a1) {
                if (typeof a0.getElementsByClassName !== "undefined" && !a1) {
                    return a0.getElementsByClassName(aZ[1])
                }
            };
            aY = null
        })();

        function K(aZ, a4, a3, a7, a5, a6) {
            for (var a1 = 0, a0 = a7.length; a1 < a0; a1++) {
                var aY = a7[a1];
                if (aY) {
                    aY = aY[aZ];
                    var a2 = false;
                    while (aY) {
                        if (aY.sizcache === a3) {
                            a2 = a7[aY.sizset];
                            break
                        }
                        if (aY.nodeType === 1 && !a6) {
                            aY.sizcache = a3;
                            aY.sizset = a1
                        }
                        if (aY.nodeName.toLowerCase() === a4) {
                            a2 = aY;
                            break
                        }
                        aY = aY[aZ]
                    }
                    a7[a1] = a2
                }
            }
        }
        function aW(aZ, a4, a3, a7, a5, a6) {
            for (var a1 = 0, a0 = a7.length; a1 < a0; a1++) {
                var aY = a7[a1];
                if (aY) {
                    aY = aY[aZ];
                    var a2 = false;
                    while (aY) {
                        if (aY.sizcache === a3) {
                            a2 = a7[aY.sizset];
                            break
                        }
                        if (aY.nodeType === 1) {
                            if (!a6) {
                                aY.sizcache = a3;
                                aY.sizset = a1
                            }
                            if (typeof a4 !== "string") {
                                if (aY === a4) {
                                    a2 = true;
                                    break
                                }
                            } else {
                                if (aI.filter(a4, [aY]).length > 0) {
                                    a2 = aY;
                                    break
                                }
                            }
                        }
                        aY = aY[aZ]
                    }
                    a7[a1] = a2
                }
            }
        }
        var aP = document.compareDocumentPosition ?
        function (aZ, aY) {
            return aZ.compareDocumentPosition(aY) & 16
        } : function (aZ, aY) {
            return aZ !== aY && (aZ.contains ? aZ.contains(aY) : true)
        };
        var aJ = function (aY) {
            var aZ = (aY ? aY.ownerDocument || aY : 0).documentElement;
            return aZ ? aZ.nodeName !== "HTML" : false
        };
        var aV = function (aY, a5) {
            var a1 = [],
                a2 = "",
                a3, a0 = a5.nodeType ? [a5] : a5;
            while ((a3 = aO.match.PSEUDO.exec(aY))) {
                a2 += a3[0];
                aY = aY.replace(aO.match.PSEUDO, "")
            }
            aY = aO.relative[aY] ? aY + "*" : aY;
            for (var a4 = 0, aZ = a0.length; a4 < aZ; a4++) {
                aI(aY, a0[a4], a1)
            }
            return aI.filter(a2, a1)
        };
        return aI
    })();
    T.lang = {
        code: "en",
        of: "of",
        loading: "loading",
        cancel: "Cancel",
        next: "Next",
        previous: "Previous",
        play: "Play",
        pause: "Pause",
        close: "Close",
        errors: {
            single: 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',
            shared: 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',
            either: 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
        }
    };
    var F, av = "sb-drag-proxy",
        G, k, ai;

    function az() {
        G = {
            x: 0,
            y: 0,
            startX: null,
            startY: null
        }
    }
    function aC() {
        var K = T.dimensions;
        aE(k.style, {
            height: K.innerHeight + "px",
            width: K.innerWidth + "px"
        })
    }
    function Q() {
        az();
        var K = ["position:absolute", "cursor:" + (T.isGecko ? "-moz-grab" : "move"), "background-color:" + (T.isIE ? "#fff;filter:alpha(opacity=0)" : "transparent")].join(";");
        T.appendHTML(T.skin.body, '<div id="' + av + '" style="' + K + '"></div>');
        k = af(av);
        aC();
        H(k, "mousedown", N)
    }
    function D() {
        if (k) {
            O(k, "mousedown", N);
            E(k);
            k = null
        }
        ai = null
    }
    function N(S) {
        o(S);
        var K = X(S);
        G.startX = K[0];
        G.startY = K[1];
        ai = af(T.player.id);
        H(document, "mousemove", J);
        H(document, "mouseup", j);
        if (T.isGecko) {
            k.style.cursor = "-moz-grabbing"
        }
    }
    function J(aK) {
        var K = T.player,
            aL = T.dimensions,
            aJ = X(aK);
        var aI = aJ[0] - G.startX;
        G.startX += aI;
        G.x = Math.max(Math.min(0, G.x + aI), aL.innerWidth - K.width);
        var S = aJ[1] - G.startY;
        G.startY += S;
        G.y = Math.max(Math.min(0, G.y + S), aL.innerHeight - K.height);
        aE(ai.style, {
            left: G.x + "px",
            top: G.y + "px"
        })
    }
    function j() {
        O(document, "mousemove", J);
        O(document, "mouseup", j);
        if (T.isGecko) {
            k.style.cursor = "-moz-grab"
        }
    }
    T.img = function (S, aI) {
        this.obj = S;
        this.id = aI;
        this.ready = false;
        var K = this;
        F = new Image();
        F.onload = function () {
            K.height = S.height ? parseInt(S.height, 10) : F.height;
            K.width = S.width ? parseInt(S.width, 10) : F.width;
            K.ready = true;
            F.onload = null;
            F = null
        };
        F.src = S.content
    };
    T.img.ext = ["bmp", "gif", "jpg", "jpeg", "png"];
    T.img.prototype = {
        append: function (S, aK) {
            var aI = document.createElement("img");
            aI.id = this.id;
            aI.src = this.obj.content;
            aI.style.position = "absolute";
            var K, aJ;
            if (aK.oversized && T.options.handleOversize == "resize") {
                K = aK.innerHeight;
                aJ = aK.innerWidth
            } else {
                K = this.height;
                aJ = this.width
            }
            aI.setAttribute("height", K);
            aI.setAttribute("width", aJ);
            S.appendChild(aI)
        },
        remove: function () {
            var K = af(this.id);
            if (K) {
                E(K)
            }
            D();
            if (F) {
                F.onload = null;
                F = null
            }
        },
        onLoad: function () {
            var K = T.dimensions;
            if (K.oversized && T.options.handleOversize == "drag") {
                Q()
            }
        },
        onWindowResize: function () {
            var aJ = T.dimensions;
            switch (T.options.handleOversize) {
            case "resize":
                var K = af(this.id);
                K.height = aJ.innerHeight;
                K.width = aJ.innerWidth;
                break;
            case "drag":
                if (ai) {
                    var aI = parseInt(T.getStyle(ai, "top")),
                        S = parseInt(T.getStyle(ai, "left"));
                    if (aI + this.height < aJ.innerHeight) {
                        ai.style.top = aJ.innerHeight - this.height + "px"
                    }
                    if (S + this.width < aJ.innerWidth) {
                        ai.style.left = aJ.innerWidth - this.width + "px"
                    }
                    aC()
                }
                break
            }
        }
    };
    var a = 16;
    T.qt = function (K, S) {
        this.obj = K;
        this.id = S;
        this.height = K.height ? parseInt(K.height, 10) : 300;
        if (T.options.showMovieControls) {
            this.height += a
        }
        this.width = K.width ? parseInt(K.width, 10) : 300
    };
    T.qt.ext = ["dv", "mov", "moov", "movie", "mp4", "avi", "mpg", "mpeg"];
    T.qt.prototype = {
        append: function (aN, aO) {
            var S = T.options,
                aI = String(S.autoplayMovies),
                aP = String(S.showMovieControls);
            var aM = "<object",
                aK = {
                    id: this.id,
                    name: this.id,
                    height: this.height,
                    width: this.width,
                    kioskmode: "true"
                };
            if (T.isIE) {
                aK.classid = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
                aK.codebase = "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"
            } else {
                aK.type = "video/quicktime";
                aK.data = this.obj.content
            }
            for (var aJ in aK) {
                aM += " " + aJ + '="' + aK[aJ] + '"'
            }
            aM += ">";
            var aL = {
                src: this.obj.content,
                scale: "aspect",
                controller: aP,
                autoplay: aI
            };
            for (var K in aL) {
                aM += '<param name="' + K + '" value="' + aL[K] + '">'
            }
            aM += "</object>";
            aN.innerHTML = aM
        },
        remove: function () {
            try {
                document[this.id].Stop()
            } catch (S) {}
            var K = af(this.id);
            if (K) {
                E(K)
            }
        }
    };
    var u = (T.isIE ? 70 : 45);
    T.wmp = function (K, S) {
        this.obj = K;
        this.id = S;
        this.height = K.height ? parseInt(K.height, 10) : 300;
        if (T.options.showMovieControls) {
            this.height += u
        }
        this.width = K.width ? parseInt(K.width, 10) : 300
    };
    T.wmp.ext = ["asf", "avi", "mpg", "mpeg", "wm", "wmv"];
    T.wmp.prototype = {
        append: function (K, aM) {
            var aI = T.options,
                aJ = aI.autoplayMovies ? 1 : 0;
            var S = '<object id="' + this.id + '" name="' + this.id + '" height="' + this.height + '" width="' + this.width + '"',
                aL = {
                    autostart: aI.autoplayMovies ? 1 : 0
                };
            if (T.isIE) {
                S += ' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"';
                aL.url = this.obj.content;
                aL.uimode = aI.showMovieControls ? "full" : "none"
            } else {
                S += ' type="video/x-ms-wmv"';
                S += ' data="' + this.obj.content + '"';
                aL.showcontrols = aI.showMovieControls ? 1 : 0
            }
            S += ">";
            for (var aK in aL) {
                S += '<param name="' + aK + '" value="' + aL[aK] + '">'
            }
            S += "</object>";
            K.innerHTML = S
        },
        remove: function () {
            if (T.isIE) {
                try {
                    aw[this.id].controls.stop();
                    aw[this.id].URL = "movie" + ay() + ".wmv";
                    aw[this.id] = function () {}
                } catch (S) {}
            }
            var K = af(this.id);
            if (K) {
                setTimeout(function () {
                    E(K)
                }, 10)
            }
        }
    };
    var aq = false,
        aa = [],
        r = ["sb-nav-close", "sb-nav-next", "sb-nav-play", "sb-nav-pause", "sb-nav-previous"],
        ac, ag, ab, n = true;

    function P(aI, aS, aP, aN, aT) {
        var K = (aS == "opacity"),
            aO = K ? T.setOpacity : function (aU, aV) {
                aU.style[aS] = "" + aV + "px"
            };
        if (aN == 0 || (!K && !T.options.animate) || (K && !T.options.animateFade)) {
            aO(aI, aP);
            if (aT) {
                aT()
            }
            return
        }
        var aQ = parseFloat(T.getStyle(aI, aS)) || 0;
        var aR = aP - aQ;
        if (aR == 0) {
            if (aT) {
                aT()
            }
            return
        }
        aN *= 1000;
        var aJ = ay(),
            aM = T.ease,
            aL = aJ + aN,
            aK;
        var S = setInterval(function () {
            aK = ay();
            if (aK >= aL) {
                clearInterval(S);
                S = null;
                aO(aI, aP);
                if (aT) {
                    aT()
                }
            } else {
                aO(aI, aQ + aM((aK - aJ) / aN) * aR)
            }
        }, 10)
    }
    function aD() {
        ac.style.height = T.getWindowSize("Height") + "px";
        ac.style.width = T.getWindowSize("Width") + "px"
    }
    function aF() {
        ac.style.top = document.documentElement.scrollTop + "px";
        ac.style.left = document.documentElement.scrollLeft + "px"
    }
    function aA(K) {
        if (K) {
            aH(aa, function (S, aI) {
                aI[0].style.visibility = aI[1] || ""
            })
        } else {
            aa = [];
            aH(T.options.troubleElements, function (aI, S) {
                aH(document.getElementsByTagName(S), function (aJ, aK) {
                    aa.push([aK, aK.style.visibility]);
                    aK.style.visibility = "hidden"
                })
            })
        }
    }
    function s(aI, K) {
        var S = af("sb-nav-" + aI);
        if (S) {
            S.style.display = K ? "" : "none"
        }
    }
    function aj(K, aL) {
        var aK = af("sb-loading"),
            aI = T.getCurrent().player,
            aJ = (aI == "img" || aI == "html");
        if (K) {
            T.setOpacity(aK, 0);
            aK.style.display = "block";
            var S = function () {
                T.clearOpacity(aK);
                if (aL) {
                    aL()
                }
            };
            if (aJ) {
                P(aK, "opacity", 1, T.options.fadeDuration, S)
            } else {
                S()
            }
        } else {
            var S = function () {
                aK.style.display = "none";
                T.clearOpacity(aK);
                if (aL) {
                    aL()
                }
            };
            if (aJ) {
                P(aK, "opacity", 0, T.options.fadeDuration, S)
            } else {
                S()
            }
        }
    }
    function v(aQ) {
        var aL = T.getCurrent();
        af("sb-title-inner").innerHTML = aL.title || "";
        var aR, aN, S, aS, aO;
        if (T.options.displayNav) {
            aR = true;
            var aP = T.gallery.length;
            if (aP > 1) {
                if (T.options.continuous) {
                    aN = aO = true
                } else {
                    aN = (aP - 1) > T.current;
                    aO = T.current > 0
                }
            }
            if (T.options.slideshowDelay > 0 && T.hasNext()) {
                aS = !T.isPaused();
                S = !aS
            }
        } else {
            aR = aN = S = aS = aO = false
        }
        s("close", aR);
        s("next", aN);
        s("play", S);
        s("pause", aS);
        s("previous", aO);
        var K = "";
        if (T.options.displayCounter && T.gallery.length > 1) {
            var aP = T.gallery.length;
            if (T.options.counterType == "skip") {
                var aK = 0,
                    aJ = aP,
                    aI = parseInt(T.options.counterLimit) || 0;
                if (aI < aP && aI > 2) {
                    var aM = Math.floor(aI / 2);
                    aK = T.current - aM;
                    if (aK < 0) {
                        aK += aP
                    }
                    aJ = T.current + (aI - aM);
                    if (aJ > aP) {
                        aJ -= aP
                    }
                }
                while (aK != aJ) {
                    if (aK == aP) {
                        aK = 0
                    }
                    K += '<a onclick="Shadowbox.change(' + aK + ');"';
                    if (aK == T.current) {
                        K += ' class="sb-counter-current"'
                    }
                    K += ">" + (++aK) + "</a>"
                }
            } else {
                K = [T.current + 1, T.lang.of, aP].join(" ")
            }
        }
        af("sb-counter").innerHTML = K;
        aQ()
    }
    function W(aJ) {
        var K = af("sb-title-inner"),
            aI = af("sb-info-inner"),
            S = 0.35;
        K.style.visibility = aI.style.visibility = "";
        if (K.innerHTML != "") {
            P(K, "marginTop", 0, S)
        }
        P(aI, "marginTop", 0, S, aJ)
    }
    function ax(aI, aO) {
        var aM = af("sb-title"),
            K = af("sb-info"),
            aJ = aM.offsetHeight,
            aK = K.offsetHeight,
            aL = af("sb-title-inner"),
            aN = af("sb-info-inner"),
            S = (aI ? 0.35 : 0);
        P(aL, "marginTop", aJ, S);
        P(aN, "marginTop", aK * -1, S, function () {
            aL.style.visibility = aN.style.visibility = "hidden";
            aO()
        })
    }
    function ae(K, aJ, S, aL) {
        var aK = af("sb-wrapper-inner"),
            aI = (S ? T.options.resizeDuration : 0);
        P(ab, "top", aJ, aI);
        P(aK, "height", K, aI, aL)
    }
    function au(K, aJ, S, aK) {
        var aI = (S ? T.options.resizeDuration : 0);
        P(ab, "left", aJ, aI);
        P(ab, "width", K, aI, aK)
    }
    function am(aO, aI) {
        var aK = af("sb-body-inner"),
            aO = parseInt(aO),
            aI = parseInt(aI),
            S = ab.offsetHeight - aK.offsetHeight,
            K = ab.offsetWidth - aK.offsetWidth,
            aM = ag.offsetHeight,
            aN = ag.offsetWidth,
            aL = parseInt(T.options.viewportPadding) || 20,
            aJ = (T.player && T.options.handleOversize != "drag");
        return T.setDimensions(aO, aI, aM, aN, S, K, aL, aJ)
    }
    var V = {};
    V.markup = '<div id="sb-container"><div id="sb-overlay"></div><div id="sb-wrapper"><div id="sb-title"><div id="sb-title-inner"></div></div><div id="sb-wrapper-inner"><div id="sb-body"><div id="sb-body-inner"></div><div id="sb-loading"><div id="sb-loading-inner"><span>{loading}</span></div></div></div></div><div id="sb-info"><div id="sb-info-inner"><div id="sb-counter"></div><div id="sb-nav"><a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a><a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a></div></div></div></div></div>';
    V.options = {
        animSequence: "sync",
        counterLimit: 10,
        counterType: "default",
        displayCounter: true,
        displayNav: true,
        fadeDuration: 0.35,
        initialHeight: 160,
        initialWidth: 320,
        modal: false,
        overlayColor: "#000",
        overlayOpacity: 0.5,
        resizeDuration: 0.35,
        showOverlay: true,
        troubleElements: ["select", "object", "embed", "canvas"]
    };
    V.init = function () {
        T.appendHTML(document.body, t(V.markup, T.lang));
        V.body = af("sb-body-inner");
        ac = af("sb-container");
        ag = af("sb-overlay");
        ab = af("sb-wrapper");
        if (!z) {
            ac.style.position = "absolute"
        }
        if (!i) {
            var aI, K, S = /url\("(.*\.png)"\)/;
            aH(r, function (aK, aL) {
                aI = af(aL);
                if (aI) {
                    K = T.getStyle(aI, "backgroundImage").match(S);
                    if (K) {
                        aI.style.backgroundImage = "none";
                        aI.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src=" + K[1] + ",sizingMethod=scale);"
                    }
                }
            })
        }
        var aJ;
        H(aw, "resize", function () {
            if (aJ) {
                clearTimeout(aJ);
                aJ = null
            }
            if (C) {
                aJ = setTimeout(V.onWindowResize, 10)
            }
        })
    };
    V.onOpen = function (K, aI) {
        n = false;
        ac.style.display = "block";
        aD();
        var S = am(T.options.initialHeight, T.options.initialWidth);
        ae(S.innerHeight, S.top);
        au(S.width, S.left);
        if (T.options.showOverlay) {
            ag.style.backgroundColor = T.options.overlayColor;
            T.setOpacity(ag, 0);
            if (!T.options.modal) {
                H(ag, "click", T.close)
            }
            aq = true
        }
        if (!z) {
            aF();
            H(aw, "scroll", aF)
        }
        aA();
        ac.style.visibility = "visible";
        if (aq) {
            P(ag, "opacity", T.options.overlayOpacity, T.options.fadeDuration, aI)
        } else {
            aI()
        }
    };
    V.onLoad = function (S, K) {
        aj(true);
        while (V.body.firstChild) {
            E(V.body.firstChild)
        }
        ax(S, function () {
            if (!C) {
                return
            }
            if (!S) {
                ab.style.visibility = "visible"
            }
            v(K)
        })
    };
    V.onReady = function (aJ) {
        if (!C) {
            return
        }
        var S = T.player,
            aI = am(S.height, S.width);
        var K = function () {
            W(aJ)
        };
        switch (T.options.animSequence) {
        case "hw":
            ae(aI.innerHeight, aI.top, true, function () {
                au(aI.width, aI.left, true, K)
            });
            break;
        case "wh":
            au(aI.width, aI.left, true, function () {
                ae(aI.innerHeight, aI.top, true, K)
            });
            break;
        default:
            au(aI.width, aI.left, true);
            ae(aI.innerHeight, aI.top, true, K)
        }
    };
    V.onShow = function (K) {
        aj(false, K);
        n = true
    };
    V.onClose = function () {
        if (!z) {
            O(aw, "scroll", aF)
        }
        O(ag, "click", T.close);
        ab.style.visibility = "hidden";
        var K = function () {
            ac.style.visibility = "hidden";
            ac.style.display = "none";
            aA(true)
        };
        if (aq) {
            P(ag, "opacity", 0, T.options.fadeDuration, K)
        } else {
            K()
        }
    };
    V.onPlay = function () {
        s("play", false);
        s("pause", true)
    };
    V.onPause = function () {
        s("pause", false);
        s("play", true)
    };
    V.onWindowResize = function () {
        if (!n) {
            return
        }
        aD();
        var K = T.player,
            S = am(K.height, K.width);
        au(S.width, S.left);
        ae(S.innerHeight, S.top);
        if (K.onWindowResize) {
            K.onWindowResize()
        }
    };
    T.skin = V;
    aw.Shadowbox = T
})(window);
