/*
 * Shadowbox.js, version 3.0.3
 * http://shadowbox-js.com/
 *
 * Copyright 2007-2010, Michael J. I. Jackson
 * Date: 2010-03-12 02:29:05 +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(K) {
        return K.target
    }
    function X(K) {
        return [K.pageX, K.pageY]
    }
    function o(K) {
        K.preventDefault()
    }
    function x(K) {
        return K.keyCode
    }
    function H(aI, S, K) {
        jQuery(aI).bind(S, K)
    }
    function O(aI, S, K) {
        jQuery(aI).unbind(S, K)
    }
    jQuery.fn.shadowbox = function (K) {
        return this.each(function () {
            var aI = jQuery(this);
            var aJ = jQuery.extend({}, K || {}, jQuery.metadata ? aI.metadata() : jQuery.meta ? aI.data() : {});
            var S = this.className || "";
            aJ.width = parseInt((S.match(/w:(\d+)/) || [])[1]) || aJ.width;
            aJ.height = parseInt((S.match(/h:(\d+)/) || [])[1]) || aJ.height;
            Shadowbox.setup(aI, aJ)
        })
    };
    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: "Back",
    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
        }
    }
};
T.iframe = function (S, aI) {
    this.obj = S;
    this.id = aI;
    var K = af("sb-overlay");
    this.height = S.height ? parseInt(S.height, 10) : K.offsetHeight;
    this.width = S.width ? parseInt(S.width, 10) : K.offsetWidth
};
T.iframe.prototype = {
    append: function (K, aI) {
        var S = '<iframe id="' + this.id + '" name="' + this.id + '" height="100%" width="100%" frameborder="0" marginwidth="0" marginheight="0" style="visibility:hidden" onload="this.style.visibility=\'visible\'" scrolling="auto"';
        if (T.isIE) {
            S += ' allowtransparency="true"';
            if (T.isIE6) {
                S += " src=\"javascript:false;document.write('');\""
            }
        }
        S += "></iframe>";
        K.innerHTML = S
    },
    remove: function () {
        var K = af(this.id);
        if (K) {
            E(K);
            if (T.isGecko) {
                delete aw.frames[this.id]
            }
        }
    },
    onLoad: function () {
        var K = T.isIE ? af(this.id).contentWindow : aw.frames[this.id];
        K.location.href = this.obj.content
    }
};
T.html = function (K, S) {
    this.obj = K;
    this.id = S;
    this.height = K.height ? parseInt(K.height, 10) : 300;
    this.width = K.width ? parseInt(K.width, 10) : 500
};
T.html.prototype = {
    append: function (K, S) {
        var aI = document.createElement("div");
        aI.id = this.id;
        aI.className = "html";
        aI.innerHTML = this.obj.content;
        K.appendChild(aI)
    },
    remove: function () {
        var K = af(this.id);
        if (K) {
            E(K)
        }
    }
};
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="lightbox-navigation"><a id="lightbox-prev" href="#" onclick="Shadowbox.previous();"></a><a id="lightbox-next" href="#" onclick="Shadowbox.next();"></a></div><div id="sb-loading">{loading}</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-play" title="{play}" onclick="Shadowbox.play()"></a><a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a><a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()" onselectstart="return false;">Next</a><span id="slash">/</span><a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()" onselectstart="return false;">Back</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);