var swfobject = function () {
    var D = "undefined",
        r = "object",
        S = "Shockwave Flash",
        W = "ShockwaveFlash.ShockwaveFlash",
        q = "application/x-shockwave-flash",
        R = "SWFObjectExprInst",
        x = "onreadystatechange",
        O = window,
        j = document,
        t = navigator,
        T = false,
        U = [h],
        o = [],
        N = [],
        I = [],
        l, Q, E, B, J = false,
        a = false,
        n, G, m = true,
        M = function () {
            var aa = typeof j.getElementById != D && typeof j.getElementsByTagName != D && typeof j.createElement != D,
                ah = t.userAgent.toLowerCase(),
                Y = t.platform.toLowerCase(),
                ae = Y ? /win/.test(Y) : /win/.test(ah),
                ac = Y ? /mac/.test(Y) : /mac/.test(ah),
                af = /webkit/.test(ah) ? parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
                X = !+"\v1",
                ag = [0, 0, 0],
                ab = null;
            if (typeof t.plugins != D && typeof t.plugins[S] == r) {
                    ab = t.plugins[S].description;
                    if (ab && !(typeof t.mimeTypes != D && t.mimeTypes[q] && !t.mimeTypes[q].enabledPlugin)) {
                        T = true;
                        X = false;
                        ab = ab.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
                        ag[0] = parseInt(ab.replace(/^(.*)\..*$/, "$1"), 10);
                        ag[1] = parseInt(ab.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
                        ag[2] = /[a-zA-Z]/.test(ab) ? parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0
                    }
                } else {
                    if (typeof O.ActiveXObject != D) {
                        try {
                            var ad = new ActiveXObject(W);
                            if (ad) {
                                ab = ad.GetVariable("$version");
                                if (ab) {
                                    X = true;
                                    ab = ab.split(" ")[1].split(",");
                                    ag = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
                                }
                            }
                        } catch (Z) {}
                    }
                }
            return {
                    w3: aa,
                    pv: ag,
                    wk: af,
                    ie: X,
                    win: ae,
                    mac: ac
                }
        }(),
        k = function () {
            if (!M.w3) {
                return
            }
            if ((typeof j.readyState != D && j.readyState == "complete") || (typeof j.readyState == D && (j.getElementsByTagName("body")[0] || j.body))) {
                f()
            }
            if (!J) {
                if (typeof j.addEventListener != D) {
                    j.addEventListener("DOMContentLoaded", f, false)
                }
                if (M.ie && M.win) {
                    j.attachEvent(x, function () {
                        if (j.readyState == "complete") {
                            j.detachEvent(x, arguments.callee);
                            f()
                        }
                    });
                    if (O == top) {
                        (function () {
                            if (J) {
                                return
                            }
                            try {
                                j.documentElement.doScroll("left")
                            } catch (X) {
                                setTimeout(arguments.callee, 0);
                                return
                            }
                            f()
                        })()
                    }
                }
                if (M.wk) {
                    (function () {
                        if (J) {
                            return
                        }
                        if (!/loaded|complete/.test(j.readyState)) {
                            setTimeout(arguments.callee, 0);
                            return
                        }
                        f()
                    })()
                }
                s(f)
            }
        }();

    function f() {
            if (J) {
                return
            }
            try {
                var Z = j.getElementsByTagName("body")[0].appendChild(C("span"));
                Z.parentNode.removeChild(Z)
            } catch (aa) {
                return
            }
            J = true;
            var X = U.length;
            for (var Y = 0; Y < X; Y++) {
                U[Y]()
            }
        }
    function K(X) {
            if (J) {
                X()
            } else {
                U[U.length] = X
            }
        }
    function s(Y) {
            if (typeof O.addEventListener != D) {
                O.addEventListener("load", Y, false)
            } else {
                if (typeof j.addEventListener != D) {
                    j.addEventListener("load", Y, false)
                } else {
                    if (typeof O.attachEvent != D) {
                        i(O, "onload", Y)
                    } else {
                        if (typeof O.onload == "function") {
                            var X = O.onload;
                            O.onload = function () {
                                X();
                                Y()
                            }
                        } else {
                            O.onload = Y
                        }
                    }
                }
            }
        }
    function h() {
            if (T) {
                V()
            } else {
                H()
            }
        }
    function V() {
            var X = j.getElementsByTagName("body")[0];
            var aa = C(r);
            aa.setAttribute("type", q);
            var Z = X.appendChild(aa);
            if (Z) {
                var Y = 0;
                (function () {
                    if (typeof Z.GetVariable != D) {
                        var ab = Z.GetVariable("$version");
                        if (ab) {
                            ab = ab.split(" ")[1].split(",");
                            M.pv = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
                        }
                    } else {
                        if (Y < 10) {
                            Y++;
                            setTimeout(arguments.callee, 10);
                            return
                        }
                    }
                    X.removeChild(aa);
                    Z = null;
                    H()
                })()
            } else {
                H()
            }
        }
    function H() {
            var ag = o.length;
            if (ag > 0) {
                for (var af = 0; af < ag; af++) {
                    var Y = o[af].id;
                    var ab = o[af].callbackFn;
                    var aa = {
                        success: false,
                        id: Y
                    };
                    if (M.pv[0] > 0) {
                        var ae = c(Y);
                        if (ae) {
                            if (F(o[af].swfVersion) && !(M.wk && M.wk < 312)) {
                                w(Y, true);
                                if (ab) {
                                    aa.success = true;
                                    aa.ref = z(Y);
                                    ab(aa)
                                }
                            } else {
                                if (o[af].expressInstall && A()) {
                                    var ai = {};
                                    ai.data = o[af].expressInstall;
                                    ai.width = ae.getAttribute("width") || "0";
                                    ai.height = ae.getAttribute("height") || "0";
                                    if (ae.getAttribute("class")) {
                                        ai.styleclass = ae.getAttribute("class")
                                    }
                                    if (ae.getAttribute("align")) {
                                        ai.align = ae.getAttribute("align")
                                    }
                                    var ah = {};
                                    var X = ae.getElementsByTagName("param");
                                    var ac = X.length;
                                    for (var ad = 0; ad < ac; ad++) {
                                        if (X[ad].getAttribute("name").toLowerCase() != "movie") {
                                            ah[X[ad].getAttribute("name")] = X[ad].getAttribute("value")
                                        }
                                    }
                                    P(ai, ah, Y, ab)
                                } else {
                                    p(ae);
                                    if (ab) {
                                        ab(aa)
                                    }
                                }
                            }
                        }
                    } else {
                        w(Y, true);
                        if (ab) {
                            var Z = z(Y);
                            if (Z && typeof Z.SetVariable != D) {
                                aa.success = true;
                                aa.ref = Z
                            }
                            ab(aa)
                        }
                    }
                }
            }
        }
    function z(aa) {
            var X = null;
            var Y = c(aa);
            if (Y && Y.nodeName == "OBJECT") {
                if (typeof Y.SetVariable != D) {
                    X = Y
                } else {
                    var Z = Y.getElementsByTagName(r)[0];
                    if (Z) {
                        X = Z
                    }
                }
            }
            return X
        }
    function A() {
            return !a && F("6.0.65") && (M.win || M.mac) && !(M.wk && M.wk < 312)
        }
    function P(aa, ab, X, Z) {
            a = true;
            E = Z || null;
            B = {
                success: false,
                id: X
            };
            var ae = c(X);
            if (ae) {
                if (ae.nodeName == "OBJECT") {
                    l = g(ae);
                    Q = null
                } else {
                    l = ae;
                    Q = X
                }
                aa.id = R;
                if (typeof aa.width == D || (!/%$/.test(aa.width) && parseInt(aa.width, 10) < 310)) {
                    aa.width = "310"
                }
                if (typeof aa.height == D || (!/%$/.test(aa.height) && parseInt(aa.height, 10) < 137)) {
                    aa.height = "137"
                }
                j.title = j.title.slice(0, 47) + " - Flash Player Installation";
                var ad = M.ie && M.win ? "ActiveX" : "PlugIn",
                    ac = "MMredirectURL=" + O.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + ad + "&MMdoctitle=" + j.title;
                if (typeof ab.flashvars != D) {
                        ab.flashvars += "&" + ac
                    } else {
                        ab.flashvars = ac
                    }
                if (M.ie && M.win && ae.readyState != 4) {
                        var Y = C("div");
                        X += "SWFObjectNew";
                        Y.setAttribute("id", X);
                        ae.parentNode.insertBefore(Y, ae);
                        ae.style.display = "none";
                        (function () {
                            if (ae.readyState == 4) {
                                ae.parentNode.removeChild(ae)
                            } else {
                                setTimeout(arguments.callee, 10)
                            }
                        })()
                    }
                u(aa, ab, X)
            }
        }
    function p(Y) {
            if (M.ie && M.win && Y.readyState != 4) {
                var X = C("div");
                Y.parentNode.insertBefore(X, Y);
                X.parentNode.replaceChild(g(Y), X);
                Y.style.display = "none";
                (function () {
                    if (Y.readyState == 4) {
                        Y.parentNode.removeChild(Y)
                    } else {
                        setTimeout(arguments.callee, 10)
                    }
                })()
            } else {
                Y.parentNode.replaceChild(g(Y), Y)
            }
        }
    function g(ab) {
            var aa = C("div");
            if (M.win && M.ie) {
                aa.innerHTML = ab.innerHTML
            } else {
                var Y = ab.getElementsByTagName(r)[0];
                if (Y) {
                    var ad = Y.childNodes;
                    if (ad) {
                        var X = ad.length;
                        for (var Z = 0; Z < X; Z++) {
                            if (!(ad[Z].nodeType == 1 && ad[Z].nodeName == "PARAM") && !(ad[Z].nodeType == 8)) {
                                aa.appendChild(ad[Z].cloneNode(true))
                            }
                        }
                    }
                }
            }
            return aa
        }
    function u(ai, ag, Y) {
            var X, aa = c(Y);
            if (M.wk && M.wk < 312) {
                return X
            }
            if (aa) {
                if (typeof ai.id == D) {
                    ai.id = Y
                }
                if (M.ie && M.win) {
                    var ah = "";
                    for (var ae in ai) {
                        if (ai[ae] != Object.prototype[ae]) {
                            if (ae.toLowerCase() == "data") {
                                ag.movie = ai[ae]
                            } else {
                                if (ae.toLowerCase() == "styleclass") {
                                    ah += ' class="' + ai[ae] + '"'
                                } else {
                                    if (ae.toLowerCase() != "classid") {
                                        ah += " " + ae + '="' + ai[ae] + '"'
                                    }
                                }
                            }
                        }
                    }
                    var af = "";
                    for (var ad in ag) {
                        if (ag[ad] != Object.prototype[ad]) {
                            af += '<param name="' + ad + '" value="' + ag[ad] + '" />'
                        }
                    }
                    aa.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + ah + ">" + af + "</object>";
                    N[N.length] = ai.id;
                    X = c(ai.id)
                } else {
                    var Z = C(r);
                    Z.setAttribute("type", q);
                    for (var ac in ai) {
                        if (ai[ac] != Object.prototype[ac]) {
                            if (ac.toLowerCase() == "styleclass") {
                                Z.setAttribute("class", ai[ac])
                            } else {
                                if (ac.toLowerCase() != "classid") {
                                    Z.setAttribute(ac, ai[ac])
                                }
                            }
                        }
                    }
                    for (var ab in ag) {
                        if (ag[ab] != Object.prototype[ab] && ab.toLowerCase() != "movie") {
                            e(Z, ab, ag[ab])
                        }
                    }
                    aa.parentNode.replaceChild(Z, aa);
                    X = Z
                }
            }
            return X
        }
    function e(Z, X, Y) {
            var aa = C("param");
            aa.setAttribute("name", X);
            aa.setAttribute("value", Y);
            Z.appendChild(aa)
        }
    function y(Y) {
            var X = c(Y);
            if (X && X.nodeName == "OBJECT") {
                if (M.ie && M.win) {
                    X.style.display = "none";
                    (function () {
                        if (X.readyState == 4) {
                            b(Y)
                        } else {
                            setTimeout(arguments.callee, 10)
                        }
                    })()
                } else {
                    X.parentNode.removeChild(X)
                }
            }
        }
    function b(Z) {
            var Y = c(Z);
            if (Y) {
                for (var X in Y) {
                    if (typeof Y[X] == "function") {
                        Y[X] = null
                    }
                }
                Y.parentNode.removeChild(Y)
            }
        }
    function c(Z) {
            var X = null;
            try {
                X = j.getElementById(Z)
            } catch (Y) {}
            return X
        }
    function C(X) {
            return j.createElement(X)
        }
    function i(Z, X, Y) {
            Z.attachEvent(X, Y);
            I[I.length] = [Z, X, Y]
        }
    function F(Z) {
            var Y = M.pv,
                X = Z.split(".");
            X[0] = parseInt(X[0], 10);
            X[1] = parseInt(X[1], 10) || 0;
            X[2] = parseInt(X[2], 10) || 0;
            return (Y[0] > X[0] || (Y[0] == X[0] && Y[1] > X[1]) || (Y[0] == X[0] && Y[1] == X[1] && Y[2] >= X[2])) ? true : false
        }
    function v(ac, Y, ad, ab) {
            if (M.ie && M.mac) {
                return
            }
            var aa = j.getElementsByTagName("head")[0];
            if (!aa) {
                return
            }
            var X = (ad && typeof ad == "string") ? ad : "screen";
            if (ab) {
                n = null;
                G = null
            }
            if (!n || G != X) {
                var Z = C("style");
                Z.setAttribute("type", "text/css");
                Z.setAttribute("media", X);
                n = aa.appendChild(Z);
                if (M.ie && M.win && typeof j.styleSheets != D && j.styleSheets.length > 0) {
                    n = j.styleSheets[j.styleSheets.length - 1]
                }
                G = X
            }
            if (M.ie && M.win) {
                if (n && typeof n.addRule == r) {
                    n.addRule(ac, Y)
                }
            } else {
                if (n && typeof j.createTextNode != D) {
                    n.appendChild(j.createTextNode(ac + " {" + Y + "}"))
                }
            }
        }
    function w(Z, X) {
            if (!m) {
                return
            }
            var Y = X ? "visible" : "hidden";
            if (J && c(Z)) {
                c(Z).style.visibility = Y
            } else {
                v("#" + Z, "visibility:" + Y)
            }
        }
    function L(Y) {
            var Z = /[\\\"<>\.;]/;
            var X = Z.exec(Y) != null;
            return X && typeof encodeURIComponent != D ? encodeURIComponent(Y) : Y
        }
    var d = function () {
            if (M.ie && M.win) {
                window.attachEvent("onunload", function () {
                    var ac = I.length;
                    for (var ab = 0; ab < ac; ab++) {
                        I[ab][0].detachEvent(I[ab][1], I[ab][2])
                    }
                    var Z = N.length;
                    for (var aa = 0; aa < Z; aa++) {
                        y(N[aa])
                    }
                    for (var Y in M) {
                        M[Y] = null
                    }
                    M = null;
                    for (var X in swfobject) {
                        swfobject[X] = null
                    }
                    swfobject = null
                })
            }
        }();
    return {
            registerObject: function (ab, X, aa, Z) {
                if (M.w3 && ab && X) {
                    var Y = {};
                    Y.id = ab;
                    Y.swfVersion = X;
                    Y.expressInstall = aa;
                    Y.callbackFn = Z;
                    o[o.length] = Y;
                    w(ab, false)
                } else {
                    if (Z) {
                        Z({
                            success: false,
                            id: ab
                        })
                    }
                }
            },
            getObjectById: function (X) {
                if (M.w3) {
                    return z(X)
                }
            },
            embedSWF: function (ab, ah, ae, ag, Y, aa, Z, ad, af, ac) {
                var X = {
                    success: false,
                    id: ah
                };
                if (M.w3 && !(M.wk && M.wk < 312) && ab && ah && ae && ag && Y) {
                    w(ah, false);
                    K(function () {
                        ae += "";
                        ag += "";
                        var aj = {};
                        if (af && typeof af === r) {
                            for (var al in af) {
                                aj[al] = af[al]
                            }
                        }
                        aj.data = ab;
                        aj.width = ae;
                        aj.height = ag;
                        var am = {};
                        if (ad && typeof ad === r) {
                            for (var ak in ad) {
                                am[ak] = ad[ak]
                            }
                        }
                        if (Z && typeof Z === r) {
                            for (var ai in Z) {
                                if (typeof am.flashvars != D) {
                                    am.flashvars += "&" + ai + "=" + Z[ai]
                                } else {
                                    am.flashvars = ai + "=" + Z[ai]
                                }
                            }
                        }
                        if (F(Y)) {
                            var an = u(aj, am, ah);
                            if (aj.id == ah) {
                                w(ah, true)
                            }
                            X.success = true;
                            X.ref = an
                        } else {
                            if (aa && A()) {
                                aj.data = aa;
                                P(aj, am, ah, ac);
                                return
                            } else {
                                w(ah, true)
                            }
                        }
                        if (ac) {
                            ac(X)
                        }
                    })
                } else {
                    if (ac) {
                        ac(X)
                    }
                }
            },
            switchOffAutoHideShow: function () {
                m = false
            },
            ua: M,
            getFlashPlayerVersion: function () {
                return {
                    major: M.pv[0],
                    minor: M.pv[1],
                    release: M.pv[2]
                }
            },
            hasFlashPlayerVersion: F,
            createSWF: function (Z, Y, X) {
                if (M.w3) {
                    return u(Z, Y, X)
                } else {
                    return undefined
                }
            },
            showExpressInstall: function (Z, aa, X, Y) {
                if (M.w3 && A()) {
                    P(Z, aa, X, Y)
                }
            },
            removeSWF: function (X) {
                if (M.w3) {
                    y(X)
                }
            },
            createCSS: function (aa, Z, Y, X) {
                if (M.w3) {
                    v(aa, Z, Y, X)
                }
            },
            addDomLoadEvent: K,
            addLoadEvent: s,
            getQueryParamValue: function (aa) {
                var Z = j.location.search || j.location.hash;
                if (Z) {
                    if (/\?/.test(Z)) {
                        Z = Z.split("?")[1]
                    }
                    if (aa == null) {
                        return L(Z)
                    }
                    var Y = Z.split("&");
                    for (var X = 0; X < Y.length; X++) {
                        if (Y[X].substring(0, Y[X].indexOf("=")) == aa) {
                            return L(Y[X].substring((Y[X].indexOf("=") + 1)))
                        }
                    }
                }
                return ""
            },
            expressInstallCallback: function () {
                if (a) {
                    var X = c(R);
                    if (X && l) {
                        X.parentNode.replaceChild(l, X);
                        if (Q) {
                            w(Q, true);
                            if (M.ie && M.win) {
                                l.style.display = "block"
                            }
                        }
                        if (E) {
                            E(B)
                        }
                    }
                    a = false
                }
            }
        }
}();;
var ZeroClipboard = {
    version: "1.0.4",
    clients: {},
    moviePath: 'ZeroClipboard.swf',
    nextId: 1,
    $: function (thingy) {
        if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
        if (!thingy.addClass) {
            thingy.hide = function () {
                this.style.display = 'none';
            };
            thingy.show = function () {
                this.style.display = '';
            };
            thingy.addClass = function (name) {
                this.removeClass(name);
                this.className += ' ' + name;
            };
            thingy.removeClass = function (name) {
                this.className = this.className.replace(new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
            };
            thingy.hasClass = function (name) {
                return !!this.className.match(new RegExp("\\s*" + name + "\\s*"));
            }
        }
        return thingy;
    },
    setMoviePath: function (path) {
        this.moviePath = path;
    },
    dispatch: function (id, eventName, args) {
        var client = this.clients[id];
        if (client) {
            client.receiveEvent(eventName, args);
        }
    },
    register: function (id, client) {
        this.clients[id] = client;
    },
    getDOMObjectPosition: function (obj) {
        var info = {
            left: 0,
            top: 0,
            width: obj.width ? obj.width : obj.offsetWidth,
            height: obj.height ? obj.height : obj.offsetHeight
        };
        while (obj) {
            info.left += obj.offsetLeft;
            info.top += obj.offsetTop;
            obj = obj.offsetParent;
        }
        return info;
    },
    Client: function (elem) {
        this.handlers = {};
        this.id = ZeroClipboard.nextId++;
        this.movieId = 'ZeroClipboardMovie_' + this.id;
        ZeroClipboard.register(this.id, this);
        if (elem) this.glue(elem);
    }
};
ZeroClipboard.Client.prototype = {
    id: 0,
    ready: false,
    movie: null,
    clipText: '',
    handCursorEnabled: true,
    cssEffects: true,
    handlers: null,
    glue: function (elem) {
        this.domElement = ZeroClipboard.$(elem);
        var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
        this.domElement.innerHTML = this.getHTML(box.width, box.height);
    },
    getHTML: function (width, height) {
        var html = '';
        var flashvars = 'id=' + this.id + '&width=' + width + '&height=' + height;
        if (navigator.userAgent.match(/MSIE/)) {
            var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
            html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + protocol + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + width + '" height="' + height + '" id="' + this.movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard.moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + flashvars + '"/><param name="wmode" value="transparent"/></object>';
        }
        else {
            html += '<embed id="' + this.movieId + '" src="' + ZeroClipboard.moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + width + '" height="' + height + '" name="' + this.movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + flashvars + '" wmode="transparent" />';
        }
        return html;
    },
    hide: function () {
        if (this.div) {
            this.div.style.left = '-2000px';
        }
    },
    show: function () {
        this.reposition();
    },
    destroy: function () {
        if (this.domElement && this.div) {
            this.hide();
            this.div.innerHTML = '';
            var body = document.getElementsByTagName('body')[0];
            try {
                body.removeChild(this.div);
            } catch (e) {;
            }
            this.domElement = null;
            this.div = null;
        }
    },
    reposition: function (elem) {
        if (elem) {
            this.domElement = ZeroClipboard.$(elem);
            if (!this.domElement) this.hide();
        }
        if (this.domElement && this.div) {
            var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
            var style = this.div.style;
            style.left = '' + box.left + 'px';
            style.top = '' + box.top + 'px';
        }
    },
    setText: function (newText) {
        this.clipText = newText;
        if (this.ready) this.movie.setText(newText);
    },
    addEventListener: function (eventName, func) {
        eventName = eventName.toString().toLowerCase().replace(/^on/, '');
        if (!this.handlers[eventName]) this.handlers[eventName] = [];
        this.handlers[eventName].push(func);
    },
    setHandCursor: function (enabled) {
        this.handCursorEnabled = enabled;
        if (this.ready) this.movie.setHandCursor(enabled);
    },
    setCSSEffects: function (enabled) {
        this.cssEffects = !! enabled;
    },
    receiveEvent: function (eventName, args) {
        eventName = eventName.toString().toLowerCase().replace(/^on/, '');
        switch (eventName) {
        case 'load':
            this.movie = document.getElementById(this.movieId);
            if (!this.movie) {
                var self = this;
                setTimeout(function () {
                    self.receiveEvent('load', null);
                }, 1);
                return;
            }
            if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
                var self = this;
                setTimeout(function () {
                    self.receiveEvent('load', null);
                }, 100);
                this.ready = true;
                return;
            }
            this.ready = true;
            this.movie.setText(this.clipText);
            this.movie.setHandCursor(this.handCursorEnabled);
            break;
        case 'mouseover':
            if (this.domElement && this.cssEffects) {
                this.domElement.addClass('hover');
                if (this.recoverActive) this.domElement.addClass('active');
            }
            break;
        case 'mouseout':
            if (this.domElement && this.cssEffects) {
                this.recoverActive = false;
                if (this.domElement.hasClass('active')) {
                    this.domElement.removeClass('active');
                    this.recoverActive = true;
                }
                this.domElement.removeClass('hover');
            }
            break;
        case 'mousedown':
            if (this.domElement && this.cssEffects) {
                this.domElement.addClass('active');
            }
            break;
        case 'mouseup':
            if (this.domElement && this.cssEffects) {
                this.domElement.removeClass('active');
                this.recoverActive = false;
            }
            break;
        }
        if (this.handlers[eventName]) {
            for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
                var func = this.handlers[eventName][idx];
                if (typeof(func) == 'function') {
                    func(this, args);
                }
                else if ((typeof(func) == 'object') && (func.length == 2)) {
                    func[0][func[1]](this, args);
                }
                else if (typeof(func) == 'string') {
                    window[func](this, args);
                }
            }
        }
    }
};;;
jQuery.ui || (function ($) {
    var _remove = $.fn.remove,
        isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);
    $.ui = {
            version: "1.7.2",
            plugin: {
                add: function (module, option, set) {
                    var proto = $.ui[module].prototype;
                    for (var i in set) {
                        proto.plugins[i] = proto.plugins[i] || [];
                        proto.plugins[i].push([option, set[i]]);
                    }
                },
                call: function (instance, name, args) {
                    var set = instance.plugins[name];
                    if (!set || !instance.element[0].parentNode) {
                        return;
                    }
                    for (var i = 0; i < set.length; i++) {
                        if (instance.options[set[i][0]]) {
                            set[i][1].apply(instance.element, args);
                        }
                    }
                }
            },
            contains: function (a, b) {
                return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b);
            },
            hasScroll: function (el, a) {
                if ($(el).css('overflow') == 'hidden') {
                    return false;
                }
                var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
                    has = false;
                if (el[scroll] > 0) {
                        return true;
                    }
                el[scroll] = 1;
                has = (el[scroll] > 0);
                el[scroll] = 0;
                return has;
            },
            isOverAxis: function (x, reference, size) {
                return (x > reference) && (x < (reference + size));
            },
            isOver: function (y, x, top, left, height, width) {
                return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
            },
            keyCode: {
                BACKSPACE: 8,
                CAPS_LOCK: 20,
                COMMA: 188,
                CONTROL: 17,
                DELETE: 46,
                DOWN: 40,
                END: 35,
                ENTER: 13,
                ESCAPE: 27,
                HOME: 36,
                INSERT: 45,
                LEFT: 37,
                NUMPAD_ADD: 107,
                NUMPAD_DECIMAL: 110,
                NUMPAD_DIVIDE: 111,
                NUMPAD_ENTER: 108,
                NUMPAD_MULTIPLY: 106,
                NUMPAD_SUBTRACT: 109,
                PAGE_DOWN: 34,
                PAGE_UP: 33,
                PERIOD: 190,
                RIGHT: 39,
                SHIFT: 16,
                SPACE: 32,
                TAB: 9,
                UP: 38
            }
        };
    if (isFF2) {
            var attr = $.attr,
                removeAttr = $.fn.removeAttr,
                ariaNS = "http://www.w3.org/2005/07/aaa",
                ariaState = /^aria-/,
                ariaRole = /^wairole:/;
            $.attr = function (elem, name, value) {
                    var set = value !== undefined;
                    return (name == 'role' ? (set ? attr.call(this, elem, name, "wairole:" + value) : (attr.apply(this, arguments) || "").replace(ariaRole, "")) : (ariaState.test(name) ? (set ? elem.setAttributeNS(ariaNS, name.replace(ariaState, "aaa:"), value) : attr.call(this, elem, name.replace(ariaState, "aaa:"))) : attr.apply(this, arguments)));
                };
            $.fn.removeAttr = function (name) {
                    return (ariaState.test(name) ? this.each(function () {
                        this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
                    }) : removeAttr.call(this, name));
                };
        }
    $.fn.extend({
            remove: function () {
                $("*", this).add(this).each(function () {
                    $(this).triggerHandler("remove");
                });
                return _remove.apply(this, arguments);
            },
            enableSelection: function () {
                return this.attr('unselectable', 'off').css('MozUserSelect', '').unbind('selectstart.ui');
            },
            disableSelection: function () {
                return this.attr('unselectable', 'on').css('MozUserSelect', 'none').bind('selectstart.ui', function () {
                    return false;
                });
            },
            scrollParent: function () {
                var scrollParent;
                if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
                    scrollParent = this.parents().filter(function () {
                        return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));
                    }).eq(0);
                } else {
                    scrollParent = this.parents().filter(function () {
                        return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));
                    }).eq(0);
                }
                return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
            }
        });
    $.extend($.expr[':'], {
            data: function (elem, i, match) {
                return !!$.data(elem, match[3]);
            },
            focusable: function (element) {
                var nodeName = element.nodeName.toLowerCase(),
                    tabIndex = $.attr(element, 'tabindex');
                return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : 'a' == nodeName || 'area' == nodeName ? element.href || !isNaN(tabIndex) : !isNaN(tabIndex)) && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
            },
            tabbable: function (element) {
                var tabIndex = $.attr(element, 'tabindex');
                return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
            }
        });

    function getter(namespace, plugin, method, args) {
            function getMethods(type) {
                var methods = $[namespace][plugin][type] || [];
                return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
            }
            var methods = getMethods('getter');
            if (args.length == 1 && typeof args[0] == 'string') {
                methods = methods.concat(getMethods('getterSetter'));
            }
            return ($.inArray(method, methods) != -1);
        }
    $.widget = function (name, prototype) {
            var namespace = name.split(".")[0];
            name = name.split(".")[1];
            $.fn[name] = function (options) {
                var isMethodCall = (typeof options == 'string'),
                    args = Array.prototype.slice.call(arguments, 1);
                if (isMethodCall && options.substring(0, 1) == '_') {
                        return this;
                    }
                if (isMethodCall && getter(namespace, name, options, args)) {
                        var instance = $.data(this[0], name);
                        return (instance ? instance[options].apply(instance, args) : undefined);
                    }
                return this.each(function () {
                        var instance = $.data(this, name);
                        (!instance && !isMethodCall && $.data(this, name, new $[namespace][name](this, options))._init());
                        (instance && isMethodCall && $.isFunction(instance[options]) && instance[options].apply(instance, args));
                    });
            };
            $[namespace] = $[namespace] || {};
            $[namespace][name] = function (element, options) {
                var self = this;
                this.namespace = namespace;
                this.widgetName = name;
                this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
                this.widgetBaseClass = namespace + '-' + name;
                this.options = $.extend({}, $.widget.defaults, $[namespace][name].defaults, $.metadata && $.metadata.get(element)[name], options);
                this.element = $(element).bind('setData.' + name, function (event, key, value) {
                    if (event.target == element) {
                        return self._setData(key, value);
                    }
                }).bind('getData.' + name, function (event, key) {
                    if (event.target == element) {
                        return self._getData(key);
                    }
                }).bind('remove', function () {
                    return self.destroy();
                });
            };
            $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
            $[namespace][name].getterSetter = 'option';
        };
    $.widget.prototype = {
            _init: function () {},
            destroy: function () {
                this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled').removeAttr('aria-disabled');
            },
            option: function (key, value) {
                var options = key,
                    self = this;
                if (typeof key == "string") {
                        if (value === undefined) {
                            return this._getData(key);
                        }
                        options = {};
                        options[key] = value;
                    }
                $.each(options, function (key, value) {
                        self._setData(key, value);
                    });
            },
            _getData: function (key) {
                return this.options[key];
            },
            _setData: function (key, value) {
                this.options[key] = value;
                if (key == 'disabled') {
                    this.element[value ? 'addClass' : 'removeClass'](this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled').attr("aria-disabled", value);
                }
            },
            enable: function () {
                this._setData('disabled', false);
            },
            disable: function () {
                this._setData('disabled', true);
            },
            _trigger: function (type, event, data) {
                var callback = this.options[type],
                    eventName = (type == this.widgetEventPrefix ? type : this.widgetEventPrefix + type);
                event = $.Event(event);
                event.type = eventName;
                if (event.originalEvent) {
                        for (var i = $.event.props.length, prop; i;) {
                            prop = $.event.props[--i];
                            event[prop] = event.originalEvent[prop];
                        }
                    }
                this.element.trigger(event, data);
                return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false || event.isDefaultPrevented());
            }
        };
    $.widget.defaults = {
            disabled: false
        };
    $.ui.mouse = {
            _mouseInit: function () {
                var self = this;
                this.element.bind('mousedown.' + this.widgetName, function (event) {
                    return self._mouseDown(event);
                }).bind('click.' + this.widgetName, function (event) {
                    if (self._preventClickEvent) {
                        self._preventClickEvent = false;
                        event.stopImmediatePropagation();
                        return false;
                    }
                });
                if ($.browser.msie) {
                    this._mouseUnselectable = this.element.attr('unselectable');
                    this.element.attr('unselectable', 'on');
                }
                this.started = false;
            },
            _mouseDestroy: function () {
                this.element.unbind('.' + this.widgetName);
                ($.browser.msie && this.element.attr('unselectable', this._mouseUnselectable));
            },
            _mouseDown: function (event) {
                event.originalEvent = event.originalEvent || {};
                if (event.originalEvent.mouseHandled) {
                    return;
                }(this._mouseStarted && this._mouseUp(event));
                this._mouseDownEvent = event;
                var self = this,
                    btnIsLeft = (event.which == 1),
                    elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
                if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
                        return true;
                    }
                this.mouseDelayMet = !this.options.delay;
                if (!this.mouseDelayMet) {
                        this._mouseDelayTimer = setTimeout(function () {
                            self.mouseDelayMet = true;
                        }, this.options.delay);
                    }
                if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
                        this._mouseStarted = (this._mouseStart(event) !== false);
                        if (!this._mouseStarted) {
                            event.preventDefault();
                            return true;
                        }
                    }
                this._mouseMoveDelegate = function (event) {
                        return self._mouseMove(event);
                    };
                this._mouseUpDelegate = function (event) {
                        return self._mouseUp(event);
                    };
                $(document).bind('mousemove.' + this.widgetName, this._mouseMoveDelegate).bind('mouseup.' + this.widgetName, this._mouseUpDelegate);
                    ($.browser.safari || event.preventDefault());
                event.originalEvent.mouseHandled = true;
                return true;
            },
            _mouseMove: function (event) {
                if ($.browser.msie && !event.button) {
                    return this._mouseUp(event);
                }
                if (this._mouseStarted) {
                    this._mouseDrag(event);
                    return event.preventDefault();
                }
                if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
                    this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false);
                    (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
                }
                return !this._mouseStarted;
            },
            _mouseUp: function (event) {
                $(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);
                if (this._mouseStarted) {
                    this._mouseStarted = false;
                    this._preventClickEvent = (event.target == this._mouseDownEvent.target);
                    this._mouseStop(event);
                }
                return false;
            },
            _mouseDistanceMet: function (event) {
                return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance);
            },
            _mouseDelayMet: function (event) {
                return this.mouseDelayMet;
            },
            _mouseStart: function (event) {},
            _mouseDrag: function (event) {},
            _mouseStop: function (event) {},
            _mouseCapture: function (event) {
                return true;
            }
        };
    $.ui.mouse.defaults = {
            cancel: null,
            distance: 1,
            delay: 0
        };
})(jQuery);;
(function ($) {
    $.widget("ui.draggable", $.extend({}, $.ui.mouse, {
        _init: function () {
            if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position"))) this.element[0].style.position = 'relative';
            (this.options.addClasses && this.element.addClass("ui-draggable"));
            (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
            this._mouseInit();
        },
        destroy: function () {
            if (!this.element.data('draggable')) return;
            this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable" + " ui-draggable-dragging" + " ui-draggable-disabled");
            this._mouseDestroy();
        },
        _mouseCapture: function (event) {
            var o = this.options;
            if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) return false;
            this.handle = this._getHandle(event);
            if (!this.handle) return false;
            return true;
        },
        _mouseStart: function (event) {
            var o = this.options;
            this.helper = this._createHelper(event);
            this._cacheHelperProportions();
            if ($.ui.ddmanager) $.ui.ddmanager.current = this;
            this._cacheMargins();
            this.cssPosition = this.helper.css("position");
            this.scrollParent = this.helper.scrollParent();
            this.offset = this.element.offset();
            this.offset = {
                top: this.offset.top - this.margins.top,
                left: this.offset.left - this.margins.left
            };
            $.extend(this.offset, {
                click: {
                    left: event.pageX - this.offset.left,
                    top: event.pageY - this.offset.top
                },
                parent: this._getParentOffset(),
                relative: this._getRelativeOffset()
            });
            this.originalPosition = this._generatePosition(event);
            this.originalPageX = event.pageX;
            this.originalPageY = event.pageY;
            if (o.cursorAt) this._adjustOffsetFromHelper(o.cursorAt);
            if (o.containment) this._setContainment();
            this._trigger("start", event);
            this._cacheHelperProportions();
            if ($.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, event);
            this.helper.addClass("ui-draggable-dragging");
            this._mouseDrag(event, true);
            return true;
        },
        _mouseDrag: function (event, noPropagation) {
            this.position = this._generatePosition(event);
            this.positionAbs = this._convertPositionTo("absolute");
            if (!noPropagation) {
                var ui = this._uiHash();
                this._trigger('drag', event, ui);
                this.position = ui.position;
            }
            if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + 'px';
            if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + 'px';
            if ($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
            return false;
        },
        _mouseStop: function (event) {
            var dropped = false;
            if ($.ui.ddmanager && !this.options.dropBehaviour) dropped = $.ui.ddmanager.drop(this, event);
            if (this.dropped) {
                dropped = this.dropped;
                this.dropped = false;
            }
            if ((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
                var self = this;
                $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () {
                    self._trigger("stop", event);
                    self._clear();
                });
            } else {
                this._trigger("stop", event);
                this._clear();
            }
            return false;
        },
        _getHandle: function (event) {
            var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
            $(this.options.handle, this.element).find("*").andSelf().each(function () {
                if (this == event.target) handle = true;
            });
            return handle;
        },
        _createHelper: function (event) {
            var o = this.options;
            var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
            if (!helper.parents('body').length) helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
            if (helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) helper.css("position", "absolute");
            return helper;
        },
        _adjustOffsetFromHelper: function (obj) {
            if (obj.left != undefined) this.offset.click.left = obj.left + this.margins.left;
            if (obj.right != undefined) this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
            if (obj.top != undefined) this.offset.click.top = obj.top + this.margins.top;
            if (obj.bottom != undefined) this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
        },
        _getParentOffset: function () {
            this.offsetParent = this.helper.offsetParent();
            var po = this.offsetParent.offset();
            if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
                po.left += this.scrollParent.scrollLeft();
                po.top += this.scrollParent.scrollTop();
            }
            if ((this.offsetParent[0] == document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) po = {
                top: 0,
                left: 0
            };
            return {
                top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
                left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
            };
        },
        _getRelativeOffset: function () {
            if (this.cssPosition == "relative") {
                var p = this.element.position();
                return {
                    top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
                    left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
                };
            } else {
                return {
                    top: 0,
                    left: 0
                };
            }
        },
        _cacheMargins: function () {
            this.margins = {
                left: (parseInt(this.element.css("marginLeft"), 10) || 0),
                top: (parseInt(this.element.css("marginTop"), 10) || 0)
            };
        },
        _cacheHelperProportions: function () {
            this.helperProportions = {
                width: this.helper.outerWidth(),
                height: this.helper.outerHeight()
            };
        },
        _setContainment: function () {
            var o = this.options;
            if (o.containment == 'parent') o.containment = this.helper[0].parentNode;
            if (o.containment == 'document' || o.containment == 'window') this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
            if (!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
                var ce = $(o.containment)[0];
                if (!ce) return;
                var co = $(o.containment).offset();
                var over = ($(ce).css("overflow") != 'hidden');
                this.containment = [co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top];
            } else if (o.containment.constructor == Array) {
                this.containment = o.containment;
            }
        },
        _convertPositionTo: function (d, pos) {
            if (!pos) pos = this.position;
            var mod = d == "absolute" ? 1 : -1;
            var o = this.options,
                scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
                scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
            return {
                    top: (pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)),
                    left: (pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod))
                };
        },
        _generatePosition: function (event) {
            var o = this.options,
                scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
                scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
            if (this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
                    this.offset.relative = this._getRelativeOffset();
                }
            var pageX = event.pageX;
            var pageY = event.pageY;
            if (this.originalPosition) {
                    if (this.containment) {
                        if (event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
                        if (event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
                        if (event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
                        if (event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
                    }
                    if (o.grid) {
                        var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
                        pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
                        var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
                        pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
                    }
                }
            return {
                    top: (pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))),
                    left: (pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())))
                };
        },
        _clear: function () {
            this.helper.removeClass("ui-draggable-dragging");
            if (this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
            this.helper = null;
            this.cancelHelperRemoval = false;
        },
        _trigger: function (type, event, ui) {
            ui = ui || this._uiHash();
            $.ui.plugin.call(this, type, [event, ui]);
            if (type == "drag") this.positionAbs = this._convertPositionTo("absolute");
            return $.widget.prototype._trigger.call(this, type, event, ui);
        },
        plugins: {},
        _uiHash: function (event) {
            return {
                helper: this.helper,
                position: this.position,
                absolutePosition: this.positionAbs,
                offset: this.positionAbs
            };
        }
    }));
    $.extend($.ui.draggable, {
        version: "1.7.2",
        eventPrefix: "drag",
        defaults: {
            addClasses: true,
            appendTo: "parent",
            axis: false,
            cancel: ":input,option",
            connectToSortable: false,
            containment: false,
            cursor: "auto",
            cursorAt: false,
            delay: 0,
            distance: 1,
            grid: false,
            handle: false,
            helper: "original",
            iframeFix: false,
            opacity: false,
            refreshPositions: false,
            revert: false,
            revertDuration: 500,
            scope: "default",
            scroll: true,
            scrollSensitivity: 20,
            scrollSpeed: 20,
            snap: false,
            snapMode: "both",
            snapTolerance: 20,
            stack: false,
            zIndex: false
        }
    });
    $.ui.plugin.add("draggable", "connectToSortable", {
        start: function (event, ui) {
            var inst = $(this).data("draggable"),
                o = inst.options,
                uiSortable = $.extend({}, ui, {
                    item: inst.element
                });
            inst.sortables = [];
            $(o.connectToSortable).each(function () {
                    var sortable = $.data(this, 'sortable');
                    if (sortable && !sortable.options.disabled) {
                        inst.sortables.push({
                            instance: sortable,
                            shouldRevert: sortable.options.revert
                        });
                        sortable._refreshItems();
                        sortable._trigger("activate", event, uiSortable);
                    }
                });
        },
        stop: function (event, ui) {
            var inst = $(this).data("draggable"),
                uiSortable = $.extend({}, ui, {
                    item: inst.element
                });
            $.each(inst.sortables, function () {
                    if (this.instance.isOver) {
                        this.instance.isOver = 0;
                        inst.cancelHelperRemoval = true;
                        this.instance.cancelHelperRemoval = false;
                        if (this.shouldRevert) this.instance.options.revert = true;
                        this.instance._mouseStop(event);
                        this.instance.options.helper = this.instance.options._helper;
                        if (inst.options.helper == 'original') this.instance.currentItem.css({
                            top: 'auto',
                            left: 'auto'
                        });
                    } else {
                        this.instance.cancelHelperRemoval = false;
                        this.instance._trigger("deactivate", event, uiSortable);
                    }
                });
        },
        drag: function (event, ui) {
            var inst = $(this).data("draggable"),
                self = this;
            var checkPos = function (o) {
                    var dyClick = this.offset.click.top,
                        dxClick = this.offset.click.left;
                    var helperTop = this.positionAbs.top,
                        helperLeft = this.positionAbs.left;
                    var itemHeight = o.height,
                        itemWidth = o.width;
                    var itemTop = o.top,
                        itemLeft = o.left;
                    return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
                };
            $.each(inst.sortables, function (i) {
                    this.instance.positionAbs = inst.positionAbs;
                    this.instance.helperProportions = inst.helperProportions;
                    this.instance.offset.click = inst.offset.click;
                    if (this.instance._intersectsWith(this.instance.containerCache)) {
                        if (!this.instance.isOver) {
                            this.instance.isOver = 1;
                            this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
                            this.instance.options._helper = this.instance.options.helper;
                            this.instance.options.helper = function () {
                                return ui.helper[0];
                            };
                            event.target = this.instance.currentItem[0];
                            this.instance._mouseCapture(event, true);
                            this.instance._mouseStart(event, true, true);
                            this.instance.offset.click.top = inst.offset.click.top;
                            this.instance.offset.click.left = inst.offset.click.left;
                            this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
                            this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
                            inst._trigger("toSortable", event);
                            inst.dropped = this.instance.element;
                            inst.currentItem = inst.element;
                            this.instance.fromOutside = inst;
                        }
                        if (this.instance.currentItem) this.instance._mouseDrag(event);
                    } else {
                        if (this.instance.isOver) {
                            this.instance.isOver = 0;
                            this.instance.cancelHelperRemoval = true;
                            this.instance.options.revert = false;
                            this.instance._trigger('out', event, this.instance._uiHash(this.instance));
                            this.instance._mouseStop(event, true);
                            this.instance.options.helper = this.instance.options._helper;
                            this.instance.currentItem.remove();
                            if (this.instance.placeholder) this.instance.placeholder.remove();
                            inst._trigger("fromSortable", event);
                            inst.dropped = false;
                        }
                    };
                });
        }
    });
    $.ui.plugin.add("draggable", "cursor", {
        start: function (event, ui) {
            var t = $('body'),
                o = $(this).data('draggable').options;
            if (t.css("cursor")) o._cursor = t.css("cursor");
            t.css("cursor", o.cursor);
        },
        stop: function (event, ui) {
            var o = $(this).data('draggable').options;
            if (o._cursor) $('body').css("cursor", o._cursor);
        }
    });
    $.ui.plugin.add("draggable", "iframeFix", {
        start: function (event, ui) {
            var o = $(this).data('draggable').options;
            $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function () {
                $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({
                    width: this.offsetWidth + "px",
                    height: this.offsetHeight + "px",
                    position: "absolute",
                    opacity: "0.001",
                    zIndex: 1000
                }).css($(this).offset()).appendTo("body");
            });
        },
        stop: function (event, ui) {
            $("div.ui-draggable-iframeFix").each(function () {
                this.parentNode.removeChild(this);
            });
        }
    });
    $.ui.plugin.add("draggable", "opacity", {
        start: function (event, ui) {
            var t = $(ui.helper),
                o = $(this).data('draggable').options;
            if (t.css("opacity")) o._opacity = t.css("opacity");
            t.css('opacity', o.opacity);
        },
        stop: function (event, ui) {
            var o = $(this).data('draggable').options;
            if (o._opacity) $(ui.helper).css('opacity', o._opacity);
        }
    });
    $.ui.plugin.add("draggable", "scroll", {
        start: function (event, ui) {
            var i = $(this).data("draggable");
            if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
        },
        drag: function (event, ui) {
            var i = $(this).data("draggable"),
                o = i.options,
                scrolled = false;
            if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
                    if (!o.axis || o.axis != 'x') {
                        if ((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
                        else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
                    }
                    if (!o.axis || o.axis != 'y') {
                        if ((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
                        else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
                    }
                } else {
                    if (!o.axis || o.axis != 'x') {
                        if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
                        else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
                    }
                    if (!o.axis || o.axis != 'y') {
                        if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
                        else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
                    }
                }
            if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(i, event);
        }
    });
    $.ui.plugin.add("draggable", "snap", {
        start: function (event, ui) {
            var i = $(this).data("draggable"),
                o = i.options;
            i.snapElements = [];
            $(o.snap.constructor != String ? (o.snap.items || ':data(draggable)') : o.snap).each(function () {
                    var $t = $(this);
                    var $o = $t.offset();
                    if (this != i.element[0]) i.snapElements.push({
                        item: this,
                        width: $t.outerWidth(),
                        height: $t.outerHeight(),
                        top: $o.top,
                        left: $o.left
                    });
                });
        },
        drag: function (event, ui) {
            var inst = $(this).data("draggable"),
                o = inst.options;
            var d = o.snapTolerance;
            var x1 = ui.offset.left,
                x2 = x1 + inst.helperProportions.width,
                y1 = ui.offset.top,
                y2 = y1 + inst.helperProportions.height;
            for (var i = inst.snapElements.length - 1; i >= 0; i--) {
                    var l = inst.snapElements[i].left,
                        r = l + inst.snapElements[i].width,
                        t = inst.snapElements[i].top,
                        b = t + inst.snapElements[i].height;
                    if (!((l - d < x1 && x1 < r + d && t - d < y1 && y1 < b + d) || (l - d < x1 && x1 < r + d && t - d < y2 && y2 < b + d) || (l - d < x2 && x2 < r + d && t - d < y1 && y1 < b + d) || (l - d < x2 && x2 < r + d && t - d < y2 && y2 < b + d))) {
                            if (inst.snapElements[i].snapping)(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), {
                                snapItem: inst.snapElements[i].item
                            })));
                            inst.snapElements[i].snapping = false;
                            continue;
                        }
                    if (o.snapMode != 'inner') {
                            var ts = Math.abs(t - y2) <= d;
                            var bs = Math.abs(b - y1) <= d;
                            var ls = Math.abs(l - x2) <= d;
                            var rs = Math.abs(r - x1) <= d;
                            if (ts) ui.position.top = inst._convertPositionTo("relative", {
                                top: t - inst.helperProportions.height,
                                left: 0
                            }).top - inst.margins.top;
                            if (bs) ui.position.top = inst._convertPositionTo("relative", {
                                top: b,
                                left: 0
                            }).top - inst.margins.top;
                            if (ls) ui.position.left = inst._convertPositionTo("relative", {
                                top: 0,
                                left: l - inst.helperProportions.width
                            }).left - inst.margins.left;
                            if (rs) ui.position.left = inst._convertPositionTo("relative", {
                                top: 0,
                                left: r
                            }).left - inst.margins.left;
                        }
                    var first = (ts || bs || ls || rs);
                    if (o.snapMode != 'outer') {
                            var ts = Math.abs(t - y1) <= d;
                            var bs = Math.abs(b - y2) <= d;
                            var ls = Math.abs(l - x1) <= d;
                            var rs = Math.abs(r - x2) <= d;
                            if (ts) ui.position.top = inst._convertPositionTo("relative", {
                                top: t,
                                left: 0
                            }).top - inst.margins.top;
                            if (bs) ui.position.top = inst._convertPositionTo("relative", {
                                top: b - inst.helperProportions.height,
                                left: 0
                            }).top - inst.margins.top;
                            if (ls) ui.position.left = inst._convertPositionTo("relative", {
                                top: 0,
                                left: l
                            }).left - inst.margins.left;
                            if (rs) ui.position.left = inst._convertPositionTo("relative", {
                                top: 0,
                                left: r - inst.helperProportions.width
                            }).left - inst.margins.left;
                        }
                    if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), {
                            snapItem: inst.snapElements[i].item
                        })));
                    inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
                };
        }
    });
    $.ui.plugin.add("draggable", "stack", {
        start: function (event, ui) {
            var o = $(this).data("draggable").options;
            var group = $.makeArray($(o.stack.group)).sort(function (a, b) {
                return (parseInt($(a).css("zIndex"), 10) || o.stack.min) - (parseInt($(b).css("zIndex"), 10) || o.stack.min);
            });
            $(group).each(function (i) {
                this.style.zIndex = o.stack.min + i;
            });
            this[0].style.zIndex = o.stack.min + group.length;
        }
    });
    $.ui.plugin.add("draggable", "zIndex", {
        start: function (event, ui) {
            var t = $(ui.helper),
                o = $(this).data("draggable").options;
            if (t.css("zIndex")) o._zIndex = t.css("zIndex");
            t.css('zIndex', o.zIndex);
        },
        stop: function (event, ui) {
            var o = $(this).data("draggable").options;
            if (o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
        }
    });
})(jQuery);;
var ytplayer;
Player = function (options) {
    this.playerId;
    this.element = options.element;
    this.wrapper = options.wrapper;
    this.player = options.player;
    this.volume = options.volume;
    this.controls = options.controls;
    this.loading = options.loading;
    this.width = options.width;
    this.height = options.height;
    this.buffer = options.buffer;
    this.bar = options.bar;
    this.helper = new PlayerHelpers();
    this.build = function () {
        this.playerId = this.helper.getPlayerId(this.element);
        $(this.loading).slideDown();
        $(this.controls).fadeOut();
    }
    this.playerFinally = function () {
        _this = this;
        progressBar = setInterval(function () {
            _this.progress()
        }, 1000);
        _this.buildDragProgressBar();
        $(this.volume).click(function () {
            _this.setVolume();
        })
        $(this.wrapper).mouseenter(function () {
            _this.helper.controlsAppear(_this.controls);
        });
        $(this.wrapper).mouseleave(function () {
            _this.helper.controlsDisappear(_this.controls);
        });
    }
    this.play = function () {
        if (ytplayer) {
            ytplayer.playVideo();
            $(this.element).removeClass("isPaused").addClass("isPlaying");
        }
    }
    this.mute = function () {
        if (ytplayer) {
            ytplayer.mute();
            $(this.volume).addClass("isMuted").removeClass("isNotMuted");
        }
    }
    this.unMute = function () {
        if (ytplayer) {
            ytplayer.unMute();
            $(this.volume).removeClass("isMuted").addClass("isNotMuted");
        }
    }
    this.pause = function () {
        if (ytplayer) {
            ytplayer.pauseVideo();
            $(this.element).removeClass("isPlaying").addClass("isPaused");
        }
    }
    this.setVolume = function () {
        if (ytplayer) {
            if (ytplayer.isMuted()) {
                this.unMute();
            } else {
                this.mute();
            }
        }
    }
    this.progress = function () {
        if (ytplayer) {
            var buffer = this.helper.getBuffer();
            var progress = this.helper.getProgress();
            $(this.buffer).css("left", (parseInt(buffer) + 'px'));
            $(this.bar).css("width", (parseInt(progress) + 'px'));
        }
    }
    this.buildDragProgressBar = function () {
        _this = this;
        $(this.buffer).draggable({
            axis: 'x',
            containment: _this.bar,
            start: function () {
                clearInterval(progressBar);
            },
            stop: function () {
                var value = _this.helper.getValueToSeek(this);
                ytplayer.seekTo(value, false);
                progressBar = setInterval(function () {
                    _this.progress()
                }, 1000);
            }
        });
    }
    this.construct = function () {
        if ($(this.element).hasClass("toBegin")) {
            this.build();
            var params = {
                quality: "high",
                wmode: "transparent",
                allowscriptaccess: "always"
            };
            var attributes = {
                id: "playerVideo"
            };
            swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=" + this.playerId, this.player, this.width, this.height, "8", "misc/swfobject/expressInstall.swf", null, params, attributes);
            $(this.element).removeClass("toBegin").addClass("isPlaying");
        } else {
            if ($(this.element).hasClass("isPlaying")) this.pause();
            else this.play();
        }
        this.playerFinally();
    }
}
PlayerHelpers = function () {
    this.bufferValue;
    this.getPlayerId = function (element) {
        playerId = $(element).attr("rel").split("v=")[1];
        return playerId;
    }
    this.controlsAppear = function (controls) {
        $(controls).fadeIn();
    }
    this.controlsDisappear = function (controls) {
        $(controls).fadeOut();
    }
    this.getBuffer = function () {
        if (ytplayer) {
            return (ytplayer.getCurrentTime() / ytplayer.getDuration() * 180);
        }
    }
    this.getProgress = function () {
        if (ytplayer) {
            return (ytplayer.getVideoBytesLoaded() / ytplayer.getVideoBytesTotal() * 180);
        }
    }
    this.getValueToSeek = function (element) {
        if (ytplayer) {
            return parseInt($(element).css('left').split('px')[0] * ytplayer.getDuration() / 180);
        }
    }
}

function onYouTubePlayerReady(playerId) {
    ytplayer = document.getElementById("playerVideo");
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
    ytplayer.loadVideoById(playerId, 0);
}

function onytplayerStateChange(newState) {
    $("#loadingVideo").fadeOut();
    if (newState == 1) {
        duration();
        currentTime = setInterval("timer()", 1000);
    }
}

function duration() {
    if (ytplayer) {
        var seg = ytplayer.getDuration();
        var seg2 = (new String(Math.round(seg % 60)).length == 1) ? "0" + Math.round(seg % 60) : Math.round(seg % 60);
        var min = parseInt(seg / 60) + ":" + seg2;
        $(".timer_total").html(min);
    }
}

function timer() {
    if (ytplayer) {
        var seg = ytplayer.getCurrentTime();
        var seg2 = (new String(Math.round(seg % 60)).length == 1) ? "0" + Math.round(seg % 60) : Math.round(seg % 60);
        var min = parseInt(seg / 60) + ":" + seg2;
        $(".timer_now").html(min);
    } else {
        clearInterval(currentTime);
    }
};
