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

