//*----------------------------------------------------------------------------*/
//*   (c)Copyright 2008 Yahoo! Inc. All Rights Reserved                        */
//*                                                                            */
//*     Code licensed under the BSD License:                                   */
//*                                                                            */
//*     http://developer.yahoo.net/yui/license.txt                             */
//*                                                                            */
//*     version: 2.5.2                                                         */
//*                                                                            */
//*----------------------------------------------------------------------------*/

if (typeof TOOLTIP == "undefined" || !TOOLTIP)
{
    var TOOLTIP = {};
}

TOOLTIP.namespace = function()
{
    var A = arguments, E = null, C, B, D;

    for (C = 0; C < A.length; C = C + 1)
    {
        D = A[C].split(".");
        E = TOOLTIP;

        for (B = (D[0] == "TOOLTIP") ? 1 : 0; B < D.length; B = B + 1)
        {
            E[D[B]] = E[D[B]] || {};

            E = E[D[B]];
        }
    }
    return E;
};

TOOLTIP.log = function(D, A, C)
{
    var B = TOOLTIP.widget.Logger;

    if (B && B.log)
    {
        return B.log(D, A, C);
    }
    else
    {
        return false;
    }
};

TOOLTIP.register = function(A, E, D)
{
    var I = TOOLTIP.env.modules;

    if (!I[A])
    {
        I[A] = {versions: [],builds: []};
    }

    var B = I[A], H = D.version, G = D.build, F = TOOLTIP.env.listeners;
    B.name = A;
    B.version = H;
    B.build = G;
    B.versions.push(H);
    B.builds.push(G);
    B.mainClass = E;

    for (var C = 0; C < F.length; C = C + 1)
    {
        F[C](B);
    }

    if (E)
    {
        E.VERSION = H;
        E.BUILD = G;
    }
    else
    {
        TOOLTIP.log("mainClass is undefined for module " + A, "warn");
    }
};

TOOLTIP.env = TOOLTIP.env ||    { modules: [], listeners: [] };

TOOLTIP.env.getVersion = function(A)
{
    return TOOLTIP.env.modules[A] || null;
};

TOOLTIP.env.ua = function()
{
    var C =  { ie: 0, opera: 0, gecko: 0, webkit: 0, mobile: null, air: 0 };

    var B = navigator.userAgent, A;

    if ((/KHTML/).test(B))
    {
        C.webkit = 1;
    }
    A = B.match(/AppleWebKit\/([^\s]*)/);

    if (A && A[1])
    {
        C.webkit = parseFloat(A[1]);

        if (/ Mobile\//.test(B))
        {
            C.mobile = "Apple";
        }
        else
        {
            A = B.match(/NokiaN[^\/]*/);

            if (A)
            {
                C.mobile = A[0];
            }
        }
        A = B.match(/AdobeAIR\/([^\s]*)/);

        if (A)
        {
            C.air = A[0];
        }
    }

    if (!C.webkit)
    {
        A = B.match(/Opera[\s\/]([^\s]*)/);

        if (A && A[1])
        {
            C.opera = parseFloat(A[1]);
            A = B.match(/Opera Mini[^;]*/);

            if (A)
            {
                C.mobile = A[0];
            }
        }
        else
        {
            A = B.match(/MSIE\s([^;]*)/);

            if (A && A[1])
            {
                C.ie = parseFloat(A[1]);
            }
            else
            {
                A = B.match(/Gecko\/([^\s]*)/);

                if (A)
                {
                    C.gecko = 1;
                    A = B.match(/rv:([^\s\)]*)/);

                    if (A && A[1])
                    {
                        C.gecko = parseFloat(A[1]);
                    }
                }
            }
        }
    }
    return C;
}();
(function()
{
    TOOLTIP.namespace("util", "widget", "example");

    if ("undefined" !== typeof TOOLTIP_config)
    {
        var B = TOOLTIP_config.listener, A = TOOLTIP.env.listeners, D = true, C;

        if (B)
        {
            for (C = 0; C < A.length; C = C + 1)
            {
                if (A[C] == B)
                {
                    D = false;
                    break;
                }
            }

            if (D)
            {
                A.push(B);
            }
        }
    }
})();

TOOLTIP.lang = TOOLTIP.lang || {};

(function()
{
    var A = TOOLTIP.lang, C = ["toString", "valueOf"], B =
        {
        isArray: function(D)
        {
            if (D)
            {
                return A.isNumber(D.length) && A.isFunction(D.splice);
            }
            return false;
        },
        isBoolean: function(D)
        {
            return typeof D === "boolean";
        },
        isFunction: function(D)
        {
            return typeof D === "function";
        },
        isNull: function(D)
        {
            return D === null;
        },
        isNumber: function(D)
        {
            return typeof D === "number" && isFinite(D);
        },
        isObject: function(D)
        {
            return(D && ( typeof D === "object" || A.isFunction(D))) || false;
        },
        isString: function(D)
        {
            return typeof D === "string";
        },
        isUndefined: function(D)
        {
            return typeof D === "undefined";
        },
        _IEEnumFix: (TOOLTIP.env.ua.ie) ? function(F, E)
        {
            for (var D = 0; D < C.length; D = D + 1)
            {
                var H = C[D], G = E[H];

                if (A.isFunction(G) && G != Object.prototype[H])
                {
                    F[H] = G;
                }
            }
        }: function()
        {
        },
        extend: function(H, I, G)
        {
            if (!I || !H)
            {
                throw new Error("extend failed, please check that " + "all dependencies are included.");
            }
            var E = function()
            {
 };

            E.prototype = I.prototype;
            H.prototype = new E();
            H.prototype.constructor = H;
            H.superclass = I.prototype;

            if (I.prototype.constructor == Object.prototype.constructor)
            {
                I.prototype.constructor = I;
            }

            if (G)
            {
                for (var D in G)
                {
                    if (A.hasOwnProperty(G, D))
                    {
                        H.prototype[D] = G[D];
                    }
                }
                A._IEEnumFix(H.prototype, G);
            }
        },
        augmentObject: function(H, G)
        {
            if (!G || !H)
            {
                throw new Error("Absorb failed, verify dependencies.");
            }
            var D = arguments, F, I, E = D[2];

            if (E && E !== true)
            {
                for (F = 2; F < D.length; F = F + 1)
                {
                    H[D[F]] = G[D[F]];
                }
            }
            else
            {
                for (I in G)
                {
                    if (E || !(I in H))
                    {
                        H[I] = G[I];
                    }
                }
                A._IEEnumFix(H, G);
            }
        },
        augmentProto: function(G, F)
        {
            if (!F || !G)
            {
                throw new Error("Augment failed, verify dependencies.");
            }
            var D = [G.prototype, F.prototype];

            for (var E = 2; E < arguments.length; E = E + 1)
            {
                D.push(arguments[E]);
            }
            A.augmentObject.apply(this, D);
        },
        dump: function(D, I)
        {
            var F, H, K = [], L = "{...}", E = "f(){...}", J = ", ", G = " => ";

            if (!A.isObject(D))
            {
                return D + "";
            }
            else
            {
                if (D instanceof Date || ("nodeType" in D && "tagName" in D))
                {
                    return D;
                }
                else
                {
                    if (A.isFunction(D))
                    {
                        return E;
                    }
                }
            }
            I = (A.isNumber(I)) ? I : 3;

            if (A.isArray(D))
            {
                K.push("[");

                for (F = 0, H = D.length; F < H; F = F + 1)
                {
                    if (A.isObject(D[F]))
                    {
                        K.push((I > 0) ? A.dump(D[F], I - 1) : L);
                    }
                    else
                    {
                        K.push(D[F]);
                    }
                    K.push(J);
                }

                if (K.length > 1)
                {
                    K.pop();
                }
                K.push("]");
            }
            else
            {
                K.push("{");

                for (F in D)
                {
                    if (A.hasOwnProperty(D, F))
                    {
                        K.push(F + G);

                        if (A.isObject(D[F]))
                        {
                            K.push((I > 0) ? A.dump(D[F], I - 1) : L);
                        }
                        else
                        {
                            K.push(D[F]);
                        }
                        K.push(J);
                    }
                }

                if (K.length > 1)
                {
                    K.pop();
                }
                K.push("}");
            }
            return K.join("");
        },
        substitute: function(S, E, L)
        {
            var I, H, G, O, P, R, N = [], F, J = "dump", M = " ", D = "{", Q = "}";

            for (;;)
            {
                I = S.lastIndexOf(D);

                if (I < 0)
                {
                    break;
                }
                H = S.indexOf(Q, I);

                if (I + 1 >= H)
                {
                    break;
                }
                F = S.substring(I + 1, H);
                O = F;
                R = null;
                G = O.indexOf(M);

                if (G > -1)
                {
                    R = O.substring(G + 1);
                    O = O.substring(0, G);
                }
                P = E[O];

                if (L)
                {
                    P = L(O, P, R);
                }

                if (A.isObject(P))
                {
                    if (A.isArray(P))
                    {
                        P = A.dump(P, parseInt(R, 10));
                    }
                    else
                    {
                        R = R || "";
                        var K = R.indexOf(J);

                        if (K > -1)
                        {
                            R = R.substring(4);
                        }

                        if (P.toString === Object.prototype.toString || K > -1)
                        {
                            P = A.dump(P, parseInt(R, 10));
                        }
                        else
                        {
                            P = P.toString();
                        }
                    }
                }
                else
                {
                    if (!A.isString(P) && !A.isNumber(P))
                    {
                        P = "~-" + N.length + "-~";
                        N[N.length] = F;
                    }
                }
                S = S.substring(0, I) + P + S.substring(H + 1);
            }

            for (I = N.length - 1; I >= 0; I = I - 1)
            {
                S = S.replace(new RegExp("~-" + I + "-~"), "{" + N[I] + "}", "g");
            }
            return S;
        },
        trim: function(D)
        {
            try
            {
                return D.replace(/^\s+|\s+$/g, "");
            }
            catch (E)
            {
                return D;
            }
        },
        merge: function()
        {
            var G = {}, E = arguments;

            for (var F = 0, D = E.length; F < D; F = F + 1)
            {
                A.augmentObject(G, E[F], true);
            }
            return G;
        },
        later: function(K, E, L, G, H)
        {
            K = K || 0;
            E = E || {};

            var F = L, J = G, I, D;

            if (A.isString(L))
            {
                F = E[L];
            }

            if (!F)
            {
                throw new TypeError("method undefined");
            }

            if (!A.isArray(J))
            {
                J = [G];
            }
            I = function()
            {
                F.apply(E, J);
 };
            D = (H) ? setInterval(I, K) : setTimeout(I, K);
            return {
            interval: H,
            cancel: function()
            {
                if (this.interval)
                {
                    clearInterval(D);
                }
                else
                {
                    clearTimeout(D);
                }
            }
 };
        },
        isValue: function(D)
        {
            return(A.isObject(D) || A.isString(D) || A.isNumber(D) || A.isBoolean(D));
        }
 };
    A.hasOwnProperty = (Object.prototype.hasOwnProperty) ? function(D, E)
    {
        return D && D.hasOwnProperty(E);
    }: function(D, E)
    {
        return !A.isUndefined(D[E]) && D.constructor.prototype[E] !== D[E];
 };
    B.augmentObject(A, B, true);
    TOOLTIP.util.Lang = A;
    A.augment = A.augmentProto;
    TOOLTIP.augment = A.augmentProto;
    TOOLTIP.extend = A.extend;
})();

TOOLTIP.register("TOOLTIP", TOOLTIP, { version: "2.5.2", build: "1076" });

(function()
{
    var B = TOOLTIP.util, K, I, J = {}, F = {}, M = window.document;

    TOOLTIP.env._id_counter = TOOLTIP.env._id_counter || 0;
    var C = TOOLTIP.env.ua.opera, L = TOOLTIP.env.ua.webkit, A = TOOLTIP.env.ua.gecko, G = TOOLTIP.env.ua.ie;
    var E =        {        HYPHEN: /(-[a-z])/i, ROOT_TAG: /^body|html$/i, OP_SCROLL: /^(?:inline|table-row)$/i};

    var N = function(P)
    {
        if (!E.HYPHEN.test(P))
        {
            return P;
        }

        if (J[P])
        {
            return J[P];
        }
        var Q = P;

        while (E.HYPHEN.exec(Q))
        {
            Q = Q.replace(RegExp.$1, RegExp.$1.substr(1).toUpperCase());
        }
        J[P] = Q;
        return Q;
 };
    var O = function(Q)
    {
        var P = F[Q];

        if (!P)
        {
            P = new RegExp("(?:^|\\s+)" + Q + "(?:\\s+|$)");
            F[Q] = P;
        }
        return P;
 };

    if (M.defaultView && M.defaultView.getComputedStyle)
    {
        K = function(P, S)
        {
            var R = null;

            if (S == "float")
            {
                S = "cssFloat";
            }
            var Q = P.ownerDocument.defaultView.getComputedStyle(P, "");

            if (Q)
            {
                R = Q[N(S)];
            }
            return P.style[S] || R;
 };
    }
    else
    {
        if (M.documentElement.currentStyle && G)
        {
            K = function(P, R)
            {
                switch (N(R))
                {
                    case "opacity":
                        var T = 100;

                        try
                        {
                            T = P.filters["DXImageTransform.Microsoft.Alpha"].opacity;
                        }
                        catch (S)
                        {
                            try
                            {
                                T = P.filters("alpha").opacity;
                            }
                            catch (S)
                            {
                            }
                        }
                        return T / 100;

                    case "float": R = "styleFloat";

                    default:
                        var Q = P.currentStyle ? P.currentStyle[R] : null;
                        return(P.style[R] || Q);
                }
 };
        }
        else
        {
            K = function(P, Q)
            {
                return P.style[Q];
 };
        }
    }

    if (G)
    {
        I = function(P, Q, R)
        {
            switch (Q)
            {
                case "opacity":
                    if (TOOLTIP.lang.isString(P.style.filter))
                    {
                        P.style.filter = "alpha(opacity=" + R * 100 + ")";

                        if (!P.currentStyle || !P.currentStyle.hasLayout)
                        {
                            P.style.zoom = 1;
                        }
                    }
                    break;

                case "float": Q = "styleFloat";

                default: P.style[Q] = R;
            }
 };
    }
    else
    {
        I = function(P, Q, R)
        {
            if (Q == "float")
            {
                Q = "cssFloat";
            }
            P.style[Q] = R;
 };
    }
    var D = function(P, Q)
    {
        return P && P.nodeType == 1 && (!Q || Q(P));
 };
    TOOLTIP.util.Dom =
        {
        get: function(R)
        {
            if (R && (R.nodeType || R.item))
            {
                return R;
            }

            if (TOOLTIP.lang.isString(R) || !R)
            {
                return M.getElementById(R);
            }

            if (R.length !== undefined)
            {
                var S = [];

                for (var Q = 0, P = R.length; Q < P; ++Q)
                {
                    S[S.length] = B.Dom.get(R[Q]);
                }
                return S;
            }
            return R;
        },
        getStyle: function(P, R)
        {
            R = N(R);
            var Q = function(S)
            {
                return K(S, R);
 };
            return B.Dom.batch(P, Q, B.Dom, true);
        },
        setStyle: function(P, R, S)
        {
            R = N(R);
            var Q = function(T)
            {
                I(T, R, S);
 };
            B.Dom.batch(P, Q, B.Dom, true);
        },
        getXY: function(P)
        {
            var Q = function(R)
            {
                if ((R.parentNode === null || R.offsetParent === null || this.getStyle(R, "display") == "none")
                    && R != R.ownerDocument.body)
                {
                    return false;
                }
                return H(R);
 };
            return B.Dom.batch(P, Q, B.Dom, true);
        },
        getX: function(P)
        {
            var Q = function(R)
            {
                return B.Dom.getXY(R)[0];
 };
            return B.Dom.batch(P, Q, B.Dom, true);
        },
        getY: function(P)
        {
            var Q = function(R)
            {
                return B.Dom.getXY(R)[1];
 };
            return B.Dom.batch(P, Q, B.Dom, true);
        },
        setXY: function(P, S, R)
        {
            var Q = function(V)
            {
                var U = this.getStyle(V, "position");

                if (U == "static")
                {
                    this.setStyle(V, "position", "relative");
                    U = "relative";
                }
                var X = this.getXY(V);

                if (X === false)
                {
                    return false;
                }
                var W = [parseInt(this.getStyle(V, "left"), 10), parseInt(this.getStyle(V, "top"), 10)];

                if (isNaN(W[0]))
                {
                    W[0] = (U == "relative") ? 0 : V.offsetLeft;
                }

                if (isNaN(W[1]))
                {
                    W[1] = (U == "relative") ? 0 : V.offsetTop;
                }

                if (S[0] !== null)
                {
                    V.style.left = S[0] - X[0] + W[0] + "px";
                }

                if (S[1] !== null)
                {
                    V.style.top = S[1] - X[1] + W[1] + "px";
                }

                if (!R)
                {
                    var T = this.getXY(V);

                    if ((S[0] !== null && T[0] != S[0]) || (S[1] !== null && T[1] != S[1]))
                    {
                        this.setXY(V, S, true);
                    }
                }
        };
            B.Dom.batch(P, Q, B.Dom, true);
        },
        setX: function(Q, P)
        {
            B.Dom.setXY(Q, [ P, null ]);
        },
        setY: function(P, Q)
        {
            B.Dom.setXY(P, [ null, Q ]);
        },
        getRegion: function(P)
        {
            var Q = function(R)
            {
                if ((R.parentNode === null || R.offsetParent === null || this.getStyle(R, "display") == "none") && R != R.ownerDocument.body)
                {
                    return false;
                }
                var S = B.Region.getRegion(R);
                return S;
        };
            return B.Dom.batch(P, Q, B.Dom, true);
        },
        getClientWidth: function()
        {
            return B.Dom.getViewportWidth();
        },
        getClientHeight: function()
        {
            return B.Dom.getViewportHeight();
        },
        getElementsByClassName: function(T, X, U, V)
        {
            X = X || "*";
            U = (U) ? B.Dom.get(U) : null || M;

            if (!U)
            {
                return [];
            }
            var Q = [], P = U.getElementsByTagName(X), W = O(T);

            for (var R = 0, S = P.length; R < S; ++R)
            {
                if (W.test(P[R].className))
                {
                    Q[Q.length] = P[R];

                    if (V)
                    {
                        V.call(P[R], P[R]);
                    }
                }
            }
            return Q;
        },
        hasClass: function(R, Q)
        {
            var P = O(Q);
            var S = function(T)
            {
                return P.test(T.className);
 };
            return B.Dom.batch(R, S, B.Dom, true);
        },
        addClass: function(Q, P)
        {
            var R = function(S)
            {
                if (this.hasClass(S, P))
                {
                    return false;
                }
                S.className = TOOLTIP.lang.trim(
                    [
                    S.className,
                    P
                    ].join(" "));

                return true;
 };
            return B.Dom.batch(Q, R, B.Dom, true);
        },
        removeClass: function(R, Q)
        {
            var P = O(Q);
            var S = function(T)
            {
                if (!Q || !this.hasClass(T, Q))
                {
                    return false;
                }
                var U = T.className;
                T.className = U.replace(P, " ");

                if (this.hasClass(T, Q))
                {
                    this.removeClass(T, Q);
                }
                T.className = TOOLTIP.lang.trim(T.className);
                return true;
 };
            return B.Dom.batch(R, S, B.Dom, true);
        },
        replaceClass: function(S, Q, P)
        {
            if (!P || Q === P)
            {
                return false;
            }
            var R = O(Q);
            var T = function(U)
            {
                if (!this.hasClass(U, Q))
                {
                    this.addClass(U, P);
                    return true;
                }
                U.className = U.className.replace(R, " " + P + " ");

                if (this.hasClass(U, Q))
                {
                    this.replaceClass(U, Q, P);
                }
                U.className = TOOLTIP.lang.trim(U.className);
                return true;
 };
            return B.Dom.batch(S, T, B.Dom, true);
        },
        generateId: function(P, R)
        {
            R = R || "yui-gen";
            var Q = function(S)
            {
                if (S && S.id)
                {
                    return S.id;
                }
                var T = R + TOOLTIP.env._id_counter++;

                if (S)
                {
                    S.id = T;
                }
                return T;
 };
            return B.Dom.batch(P, Q, B.Dom, true) || Q.apply(B.Dom, arguments);
        },
        isAncestor: function(P, Q)
        {
            P = B.Dom.get(P);
            Q = B.Dom.get(Q);

            if (!P || !Q)
            {
                return false;
            }

            if (P.contains && Q.nodeType && !L)
            {
                return P.contains(Q);
            }
            else
            {
                if (P.compareDocumentPosition && Q.nodeType)
                {
                    return ! !(P.compareDocumentPosition(Q) & 16);
                }
                else
                {
                    if (Q.nodeType)
                    {
                        return ! !this.getAncestorBy(Q, function(R)
                        {
                            return R == P;
                        });
                    }
                }
            }
            return false;
        },
        inDocument: function(P)
        {
            return this.isAncestor(M.documentElement, P);
        },
        getElementsBy: function(W, Q, R, T)
        {
            Q = Q || "*";
            R = (R) ? B.Dom.get(R) : null || M;

            if (!R)
            {
                return [];
            }
            var S = [], V = R.getElementsByTagName(Q);

            for (var U = 0, P = V.length; U < P; ++U)
            {
                if (W(V[U]))
                {
                    S[S.length] = V[U];

                    if (T)
                    {
                        T(V[U]);
                    }
                }
            }
            return S;
        },
        batch: function(T, W, V, R)
        {
            T = (T && (T.tagName || T.item)) ? T : B.Dom.get(T);

            if (!T || !W)
            {
                return false;
            }
            var S = (R) ? V : window;

            if (T.tagName || T.length === undefined)
            {
                return W.call(S, T, V);
            }
            var U = [];

            for (var Q = 0, P = T.length; Q < P; ++Q)
            {
                U[U.length] = W.call(S, T[Q], V);
            }
            return U;
        },
        getDocumentHeight: function()
        {
            var Q = (M.compatMode != "CSS1Compat") ? M.body.scrollHeight : M.documentElement.scrollHeight;
            var P = Math.max(Q, B.Dom.getViewportHeight());
            return P;
        },
        getDocumentWidth: function()
        {
            var Q = (M.compatMode != "CSS1Compat") ? M.body.scrollWidth : M.documentElement.scrollWidth;
            var P = Math.max(Q, B.Dom.getViewportWidth());
            return P;
        },
        getViewportHeight: function()
        {
            var P = self.innerHeight;
            var Q = M.compatMode;

            if ((Q || G) && !C)
            {
                P = (Q == "CSS1Compat") ? M.documentElement.clientHeight : M.body.clientHeight;
            }
            return P;
        },
        getViewportWidth: function()
        {
            var P = self.innerWidth;
            var Q = M.compatMode;

            if (Q || G)
            {
                P = (Q == "CSS1Compat") ? M.documentElement.clientWidth : M.body.clientWidth;
            }
            return P;
        },
        getAncestorBy: function(P, Q)
        {
            while (P = P.parentNode)
            {
                if (D(P, Q))
                {
                    return P;
                }
            }
            return null;
        },
        getAncestorByClassName: function(Q, P)
        {
            Q = B.Dom.get(Q);

            if (!Q)
            {
                return null;
            }
            var R = function(S)
            {
                return B.Dom.hasClass(S, P);
 };
            return B.Dom.getAncestorBy(Q, R);
        },
        getAncestorByTagName: function(Q, P)
        {
            Q = B.Dom.get(Q);

            if (!Q)
            {
                return null;
            }
            var R = function(S)
            {
                return S.tagName && S.tagName.toUpperCase() == P.toUpperCase();
 };
            return B.Dom.getAncestorBy(Q, R);
        },
        getPreviousSiblingBy: function(P, Q)
        {
            while (P)
            {
                P = P.previousSibling;

                if (D(P, Q))
                {
                    return P;
                }
            }
            return null;
        },
        getPreviousSibling: function(P)
        {
            P = B.Dom.get(P);

            if (!P)
            {
                return null;
            }
            return B.Dom.getPreviousSiblingBy(P);
        },
        getNextSiblingBy: function(P, Q)
        {
            while (P)
            {
                P = P.nextSibling;

                if (D(P, Q))
                {
                    return P;
                }
            }
            return null;
        },
        getNextSibling: function(P)
        {
            P = B.Dom.get(P);

            if (!P)
            {
                return null;
            }
            return B.Dom.getNextSiblingBy(P);
        },
        getFirstChildBy: function(P, R)
        {
            var Q = (D(P.firstChild, R)) ? P.firstChild : null;
            return Q || B.Dom.getNextSiblingBy(P.firstChild, R);
        },
        getFirstChild: function(P, Q)
        {
            P = B.Dom.get(P);

            if (!P)
            {
                return null;
            }
            return B.Dom.getFirstChildBy(P);
        },
        getLastChildBy: function(P, R)
        {
            if (!P)
            {
                return null;
            }
            var Q = (D(P.lastChild, R)) ? P.lastChild : null;
            return Q || B.Dom.getPreviousSiblingBy(P.lastChild, R);
        },
        getLastChild: function(P)
        {
            P = B.Dom.get(P);
            return B.Dom.getLastChildBy(P);
        },
        getChildrenBy: function(Q, S)
        {
            var R = B.Dom.getFirstChildBy(Q, S);
            var P = R ? [R] : [];
            B.Dom.getNextSiblingBy(R, function(T)
            {
                if (!S || S(T))
                {
                    P[P.length] = T;
                }
                return false;
            });
            return P;
        },
        getChildren: function(P)
        {
            P = B.Dom.get(P);

            if (!P)
            {
            }

            return B.Dom.getChildrenBy(P);
        },
        getDocumentScrollLeft: function(P)
        {
            P = P || M;
            return Math.max(P.documentElement.scrollLeft, P.body.scrollLeft);
        },
        getDocumentScrollTop: function(P)
        {
            P = P || M;
            return Math.max(P.documentElement.scrollTop, P.body.scrollTop);
        },
        insertBefore: function(Q, P)
        {
            Q = B.Dom.get(Q);
            P = B.Dom.get(P);

            if (!Q || !P || !P.parentNode)
            {
                return null;
            }
            return P.parentNode.insertBefore(Q, P);
        },
        insertAfter: function(Q, P)
        {
            Q = B.Dom.get(Q);
            P = B.Dom.get(P);

            if (!Q || !P || !P.parentNode)
            {
                return null;
            }

            if (P.nextSibling)
            {
                return P.parentNode.insertBefore(Q, P.nextSibling);
            }
            else
            {
                return P.parentNode.appendChild(Q);
            }
        },
        getClientRegion: function()
        {
            var R = B.Dom.getDocumentScrollTop(), Q = B.Dom.getDocumentScrollLeft(), S = B.Dom.getViewportWidth() + Q,
                P = B.Dom.getViewportHeight() + R;
            return new B.Region(R, S, P, Q);
        }
 };
    var H = function()
    {
        if (M.documentElement.getBoundingClientRect)
        {
            return function(Q)
            {
                var R = Q.getBoundingClientRect();
                var P = Q.ownerDocument;
                return [
                R.left + B.Dom.getDocumentScrollLeft(P),
                R.top + B.Dom.getDocumentScrollTop(P)
                ];
 };
        }
        else
        {
            return function(R)
            {
                var S = [R.offsetLeft, R.offsetTop];
                var Q = R.offsetParent;
                var P = (L && B.Dom.getStyle(R, "position") == "absolute" && R.offsetParent == R.ownerDocument.body);

                if (Q != R)
                {
                    while (Q)
                    {
                        S[0] += Q.offsetLeft;
                        S[1] += Q.offsetTop;

                        if (!P && L && B.Dom.getStyle(Q, "position") == "absolute")
                        {
                            P = true;
                        }
                        Q = Q.offsetParent;
                    }
                }

                if (P)
                {
                    S[0] -= R.ownerDocument.body.offsetLeft;
                    S[1] -= R.ownerDocument.body.offsetTop;
                }
                Q = R.parentNode;

                while (Q.tagName && !E.ROOT_TAG.test(Q.tagName))
                {
                    if (Q.scrollTop || Q.scrollLeft)
                    {
                        if (!E.OP_SCROLL.test(B.Dom.getStyle(Q, "display")))
                        {
                            if (!C || B.Dom.getStyle(Q, "overflow") !== "visible")
                            {
                                S[0] -= Q.scrollLeft;
                                S[1] -= Q.scrollTop;
                            }
                        }
                    }
                    Q = Q.parentNode;
                }
                return S;
 };
        }
    }();
})();
TOOLTIP.util.Region = function(C, D, A, B)
{
    this.top = C;
    this[1] = C;
    this.right = D;
    this.bottom = A;
    this.left = B;
    this[0] = B;
};
TOOLTIP.util.Region.prototype.contains = function(A)
{
    return(A.left >= this.left && A.right <= this.right && A.top >= this.top && A.bottom <= this.bottom);
};

TOOLTIP.util.Region.prototype.getArea = function()
{
    return((this.bottom - this.top) * (this.right - this.left));
};

TOOLTIP.util.Region.prototype.intersect = function(E)
{
    var C = Math.max(this.top, E.top);
    var D = Math.min(this.right, E.right);
    var A = Math.min(this.bottom, E.bottom);
    var B = Math.max(this.left, E.left);

    if (A >= C && D >= B)
    {
        return new TOOLTIP.util.Region(C, D, A, B);
    }
    else
    {
        return null;
    }
};

TOOLTIP.util.Region.prototype.union = function(E)
{
    var C = Math.min(this.top, E.top);
    var D = Math.max(this.right, E.right);
    var A = Math.max(this.bottom, E.bottom);
    var B = Math.min(this.left, E.left);
    return new TOOLTIP.util.Region(C, D, A, B);
};

TOOLTIP.util.Region.prototype.toString = function()
{
    return("Region {" + "top: " + this.top + ", right: " + this.right + ", bottom: " + this.bottom + ", left: "
        + this.left + "}");
};

TOOLTIP.util.Region.getRegion = function(D)
{
    var F = TOOLTIP.util.Dom.getXY(D);
    var C = F[1];
    var E = F[0] + D.offsetWidth;
    var A = F[1] + D.offsetHeight;
    var B = F[0];
    return new TOOLTIP.util.Region(C, E, A, B);
};

TOOLTIP.util.Point = function(A, B)
{
    if (TOOLTIP.lang.isArray(A))
    {
        B = A[1];
        A = A[0];
    }
    this.x = this.right = this.left = this[0] = A;
    this.y = this.top = this.bottom = this[1] = B;
};

TOOLTIP.util.Point.prototype = new TOOLTIP.util.Region();
TOOLTIP.register("dom", TOOLTIP.util.Dom,
    {
    version: "2.5.2",
    build: "1076"
    });

TOOLTIP.util.CustomEvent = function(D, B, C, A)
{
    this.type = D;
    this.scope = B || window;
    this.silent = C;
    this.signature = A || TOOLTIP.util.CustomEvent.LIST;
    this.subscribers = [];

    if (!this.silent)
    {
    }
    var E = "_YUICEOnSubscribe";

    if (D !== E)
    {
        this.subscribeEvent = new TOOLTIP.util.CustomEvent(E, this, true);
    }
    this.lastError = null;
};
TOOLTIP.util.CustomEvent.LIST = 0;
TOOLTIP.util.CustomEvent.FLAT = 1;
TOOLTIP.util.CustomEvent.prototype =
    {
    subscribe: function(B, C, A)
    {
        if (!B)
        {
            throw new Error("Invalid callback for subscriber to '" + this.type + "'");
        }

        if (this.subscribeEvent)
        {
            this.subscribeEvent.fire(B, C, A);
        }
        this.subscribers.push(new TOOLTIP.util.Subscriber(B, C, A));
    },
    unsubscribe: function(D, F)
    {
        if (!D)
        {
            return this.unsubscribeAll();
        }
        var E = false;

        for (var B = 0, A = this.subscribers.length; B < A; ++B)
        {
            var C = this.subscribers[B];

            if (C && C.contains(D, F))
            {
                this._delete(B);
                E = true;
            }
        }
        return E;
    },
    fire: function()
    {
        this.lastError = null;
        var K = [], E = this.subscribers.length;

        if (!E && this.silent)
        {
            return true;
        }
        var I = [].slice.call(arguments, 0), G = true, D, J = false;

        if (!this.silent)
        {
        }
        var C = this.subscribers.slice(), A = TOOLTIP.util.Event.throwErrors;

        for (D = 0; D < E; ++D)
        {
            var M = C[D];

            if (!M)
            {
                J = true;
            }
            else
            {
                if (!this.silent)
                {
                }
                var L = M.getScope(this.scope);

                if (this.signature == TOOLTIP.util.CustomEvent.FLAT)
                {
                    var B = null;

                    if (I.length > 0)
                    {
                        B = I[0];
                    }

                    try
                    {
                        G = M.fn.call(L, B, M.obj);
                    }
                    catch (F)
                    {
                        this.lastError = F;

                        if (A)
                        {
                            throw F;
                        }
                    }
                }
                else
                {
                    try
                    {
                        G = M.fn.call(L, this.type, I, M.obj);
                    }
                    catch (H)
                    {
                        this.lastError = H;

                        if (A)
                        {
                            throw H;
                        }
                    }
                }

                if (false === G)
                {
                    if (!this.silent)
                    {
                    }
                    break;
                }
            }
        }
        return(G !== false);
    },
    unsubscribeAll: function()
    {
        for (var A = this.subscribers.length - 1; A > -1; A--)
        {
            this._delete(A);
        }
        this.subscribers = [];
        return A;
    },
    _delete: function(A)
    {
        var B = this.subscribers[A];

        if (B)
        {
            delete B.fn;
            delete B.obj;
        }
        this.subscribers.splice(A, 1);
    },
    toString: function()
    {
        return "CustomEvent: " + "'" + this.type + "', " + "scope: " + this.scope;
    }
 };

TOOLTIP.util.Subscriber = function(B, C, A)
{
    this.fn = B;
    this.obj = TOOLTIP.lang.isUndefined(C) ? null : C;
    this.override = A;
};

TOOLTIP.util.Subscriber.prototype.getScope = function(A)
{
    if (this.override)
    {
        if (this.override === true)
        {
            return this.obj;
        }
        else
        {
            return this.override;
        }
    }
    return A;
};

TOOLTIP.util.Subscriber.prototype.contains = function(A, B)
{
    if (B)
    {
        return(this.fn == A && this.obj == B);
    }
    else
    {
        return(this.fn == A);
    }
};

TOOLTIP.util.Subscriber.prototype.toString = function()
{
    return "Subscriber { obj: " + this.obj + ", override: " + (this.override || "no") + " }";
};

if (!TOOLTIP.util.Event)
{
    TOOLTIP.util.Event = function()
    {
        var H = false;
        var I = [];
        var J = [];
        var G = [];
        var E = [];
        var C = 0;
        var F = [];
        var B = [];
        var A = 0;
        var D =            {    63232: 38, 63233: 40, 63234: 37, 63235: 39, 63276: 33, 63277: 34, 25: 9 };

        return {
        POLL_RETRYS: 2000,
        POLL_INTERVAL: 20,
        EL: 0,
        TYPE: 1,
        FN: 2,
        WFN: 3,
        UNLOAD_OBJ: 3,
        ADJ_SCOPE: 4,
        OBJ: 5,
        OVERRIDE: 6,
        lastError: null,
        isSafari: TOOLTIP.env.ua.webkit,
        webkit: TOOLTIP.env.ua.webkit,
        isIE: TOOLTIP.env.ua.ie,
        _interval: null,
        _dri: null,
        DOMReady: false,
        throwErrors: false,
        startInterval: function()
        {
            if (!this._interval)
            {
                var K = this;
                var L = function()
                {
                    K._tryPreloadAttach();
 };
                this._interval = setInterval(L,this.POLL_INTERVAL);
            }
        },
        onAvailable: function(P, M, Q, O, N)
        {
            var K = (TOOLTIP.lang.isString(P)) ? [P] : P;

            for (var L = 0; L < K.length; L = L + 1)
            {
                F.push(
                    {
                    id: K[L],
                    fn: M,
                    obj: Q,
                    override: O,
                    checkReady: N
                    });
            }

            C = this.POLL_RETRYS;
            this.startInterval();
        },
        onContentReady: function(M, K, N, L)
        {
            this.onAvailable(M, K, N, L, true);
        },
        onDOMReady: function(K, M, L)
        {
            if (this.DOMReady)
            {
                setTimeout(function()
                {
                    var N = window;

                    if (L)
                    {
                        if (L === true)
                        {
                            N = M;
                        }
                        else
                        {
                            N = L;
                        }
                    }
                    K.call(N, "DOMReady", [], M);
                }, 0);
            }
            else
            {
                this.DOMReadyEvent.subscribe(K, M, L);
            }
        },
        addListener: function(M, K, V, Q, L)
        {
            if (!V || !V.call)
            {
                return false;
            }

            if (this._isValidCollection(M))
            {
                var W = true;

                for (var R = 0, T = M.length; R < T; ++R)
                {
                    W = this.on(M[R], K, V, Q, L) && W;
                }
                return W;
            }
            else
            {
                if (TOOLTIP.lang.isString(M))
                {
                    var P = this.getEl(M);

                    if (P)
                    {
                        M = P;
                    }
                    else
                    {
                        this.onAvailable(M, function()
                        {
                            TOOLTIP.util.Event.on(M, K, V, Q, L);
                        });
                        return true;
                    }
                }
            }

            if (!M)
            {
                return false;
            }

            if ("unload" == K && Q !== this)
            {
                J[J.length] =                    [   M, K, V, Q, L                    ];

                return true;
            }
            var Y = M;

            if (L)
            {
                if (L === true)
                {
                    Y = Q;
                }
                else
                {
                    Y = L;
                }
            }
            var N = function(Z)
            {
                return V.call(Y, TOOLTIP.util.Event.getEvent(Z, M), Q);
 };
            var X = [M, K, V, N, Y, Q, L];
            var S = I.length;
            I[S] = X;

            if (this.useLegacyEvent(M, K))
            {
                var O = this.getLegacyIndex(M, K);

                if (O == -1 || M != G[O][0])
                {
                    O = G.length;
                    B[M.id + K] = O;
                    G[O] =
                        [
                        M,
                        K,
                        M["on" + K]
                        ];

                    E[O] = [];
                    M["on" + K] = function(Z)
                    {
                        TOOLTIP.util.Event.fireLegacyEvent(TOOLTIP.util.Event.getEvent(Z), O);
 };
                }
                E[O].push(X);
            }
            else
            {
                try
                {
                    this._simpleAdd(M, K, N, false);
                }
                catch (U)
                {
                    this.lastError = U;
                    this.removeListener(M, K, V);
                    return false;
                }
            }
            return true;
        },
        fireLegacyEvent: function(O, M)
        {
            var Q = true, K, S, R, T, P;
            S = E[M].slice();

            for (var L = 0, N = S.length; L < N; ++L)
            {
                R = S[L];

                if (R && R[this.WFN])
                {
                    T = R[this.ADJ_SCOPE];
                    P = R[this.WFN].call(T, O);
                    Q = (Q && P);
                }
            }
            K = G[M];

            if (K && K[2])
            {
                K[2](O);
            }
            return Q;
        },
        getLegacyIndex: function(L, M)
        {
            var K = this.generateId(L) + M;

            if (typeof B[K] == "undefined")
            {
                return -1;
            }
            else
            {
                return B[K];
            }
        },
        useLegacyEvent: function(L, M)
        {
            if (this.webkit && ("click" == M || "dblclick" == M))
            {
                var K = parseInt(this.webkit, 10);

                if (!isNaN(K) && K < 418)
                {
                    return true;
                }
            }
            return false;
        },
        removeListener: function(L, K, T)
        {
            var O, R, V;

            if (typeof L == "string")
            {
                L = this.getEl(L);
            }
            else
            {
                if (this._isValidCollection(L))
                {
                    var U = true;

                    for (O = L.length - 1; O > -1; O--)
                    {
                        U = (this.removeListener(L[O], K, T) && U);
                    }
                    return U;
                }
            }

            if (!T || !T.call)
            {
                return this.purgeElement(L, false, K);
            }

            if ("unload" == K)
            {
                for (O = J.length - 1; O > -1; O--)
                {
                    V = J[O];

                    if (V && V[0] == L && V[1] == K && V[2] == T)
                    {
                        J.splice(O, 1);
                        return true;
                    }
                }
                return false;
            }
            var P = null;
            var Q = arguments[3];

            if ("undefined" === typeof Q)
            {
                Q = this._getCacheIndex(L, K, T);
            }

            if (Q >= 0)
            {
                P = I[Q];
            }

            if (!L || !P)
            {
                return false;
            }

            if (this.useLegacyEvent(L, K))
            {
                var N = this.getLegacyIndex(L, K);
                var M = E[N];

                if (M)
                {
                    for (O = 0, R = M.length; O < R; ++O)
                    {
                        V = M[O];

                        if (V && V[this.EL] == L && V[this.TYPE] == K && V[this.FN] == T)
                        {
                            M.splice(O, 1);
                            break;
                        }
                    }
                }
            }
            else
            {
                try
                {
                    this._simpleRemove(L, K, P[this.WFN], false);
                }
                catch (S)
                {
                    this.lastError = S;
                    return false;
                }
            }
            delete I[Q][this.WFN];
            delete I[Q][this.FN];
            I.splice(Q, 1);
            return true;
        },
        getTarget: function(M, L)
        {
            var K = M.target || M.srcElement;
            return this.resolveTextNode(K);
        },
        resolveTextNode: function(L)
        {
            try
            {
                if (L && 3 == L.nodeType)
                {
                    return L.parentNode;
                }
            }
            catch (K)
            {
            }
            return L;
        },
        getPageX: function(L)
        {
            var K = L.pageX;

            if (!K && 0 !== K)
            {
                K = L.clientX || 0;

                if (this.isIE)
                {
                    K += this._getScrollLeft();
                }
            }
            return K;
        },
        getPageY: function(K)
        {
            var L = K.pageY;

            if (!L && 0 !== L)
            {
                L = K.clientY || 0;

                if (this.isIE)
                {
                    L += this._getScrollTop();
                }
            }
            return L;
        },
        getXY: function(K)
        {
            return [
            this.getPageX(K),
            this.getPageY(K)
            ];
        },
        getRelatedTarget: function(L)
        {
            var K = L.relatedTarget;

            if (!K)
            {
                if (L.type == "mouseout")
                {
                    K = L.toElement;
                }
                else
                {
                    if (L.type == "mouseover")
                    {
                        K = L.fromElement;
                    }
                }
            }
            return this.resolveTextNode(K);
        },
        getTime: function(M)
        {
            if (!M.time)
            {
                var L = new Date().getTime();

                try
                {
                    M.time = L;
                }
                catch (K)
                {
                    this.lastError = K;
                    return L;
                }
            }
            return M.time;
        },
        stopEvent: function(K)
        {
            this.stopPropagation(K);
            this.preventDefault(K);
        },
        stopPropagation: function(K)
        {
            if (K.stopPropagation)
            {
                K.stopPropagation();
            }
            else
            {
                K.cancelBubble = true;
            }
        },
        preventDefault: function(K)
        {
            if (K.preventDefault)
            {
                K.preventDefault();
            }
            else
            {
                K.returnValue = false;
            }
        },
        getEvent: function(M, K)
        {
            var L = M || window.event;

            if (!L)
            {
                var N = this.getEvent.caller;

                while (N)
                {
                    L = N.arguments[0];

                    if (L && Event == L.constructor)
                    {
                        break;
                    }
                    N = N.caller;
                }
            }
            return L;
        },
        getCharCode: function(L)
        {
            var K = L.keyCode || L.charCode || 0;

            if (TOOLTIP.env.ua.webkit && (K in D))
            {
                K = D[K];
            }
            return K;
        },
        _getCacheIndex: function(O, P, N)
        {
            for (var M = 0, L = I.length; M < L; M = M + 1)
            {
                var K = I[M];

                if (K && K[this.FN] == N && K[this.EL] == O && K[this.TYPE] == P)
                {
                    return M;
                }
            }
            return -1;
        },
        generateId: function(K)
        {
            var L = K.id;

            if (!L)
            {
                L = "yuievtautoid-" + A;
                ++A;
                K.id = L;
            }
            return L;
        },
        _isValidCollection: function(L)
        {
            try
            {
                return(L && typeof L !== "string" && L.length && !L.tagName && !L.alert && typeof L[0] !== "undefined");
            }
            catch (K)
            {
                return false;
            }
        },
        elCache: {},
        getEl: function(K)
        {
            return( typeof K === "string") ? document.getElementById(K) : K;
        },
        clearCache: function()
        {
        },
        DOMReadyEvent: new TOOLTIP.util.CustomEvent("DOMReady", this),
        _load: function(L)
        {
            if (!H)
            {
                H = true;
                var K = TOOLTIP.util.Event;
                K._ready();
                K._tryPreloadAttach();
            }
        },
        _ready: function(L)
        {
            var K = TOOLTIP.util.Event;

            if (!K.DOMReady)
            {
                K.DOMReady = true;
                K.DOMReadyEvent.fire();
                K._simpleRemove(document, "DOMContentLoaded", K._ready);
            }
        },
        _tryPreloadAttach: function()
        {
            if (F.length === 0)
            {
                C = 0;
                clearInterval(this._interval);
                this._interval = null;
                return;
            }

            if (this.locked)
            {
                return;
            }

            if (this.isIE)
            {
                if (!this.DOMReady)
                {
                    this.startInterval();
                    return;
                }
            }
            this.locked = true;
            var Q = !H;

            if (!Q)
            {
                Q = (C > 0 && F.length > 0);
            }
            var P = [];
            var R = function(T, U)
            {
                var S = T;

                if (U.override)
                {
                    if (U.override === true)
                    {
                        S = U.obj;
                    }
                    else
                    {
                        S = U.override;
                    }
                }
                U.fn.call(S, U.obj);
 };
            var L, K, O, N, M = [];

            for (L = 0, K = F.length; L < K; L = L + 1)
            {
                O = F[L];

                if (O)
                {
                    N = this.getEl(O.id);

                    if (N)
                    {
                        if (O.checkReady)
                        {
                            if (H || N.nextSibling || !Q)
                            {
                                M.push(O);
                                F[L] = null;
                            }
                        }
                        else
                        {
                            R(N, O);
                            F[L] = null;
                        }
                    }
                    else
                    {
                        P.push(O);
                    }
                }
            }

            for (L = 0, K = M.length; L < K; L = L + 1)
            {
                O = M[L];
                R(this.getEl(O.id), O);
            }
            C--;

            if (Q)
            {
                for (L = F.length - 1; L > -1; L--)
                {
                    O = F[L];

                    if (!O || !O.id)
                    {
                        F.splice(L, 1);
                    }
                }
                this.startInterval();
            }
            else
            {
                clearInterval(this._interval);
                this._interval = null;
            }
            this.locked = false;
        },
        purgeElement: function(O, P, R)
        {
            var M = (TOOLTIP.lang.isString(O)) ? this.getEl(O) : O;
            var Q = this.getListeners(M, R), N, K;

            if (Q)
            {
                for (N = Q.length - 1; N > -1; N--)
                {
                    var L = Q[N];
                    this.removeListener(M, L.type, L.fn);
                }
            }

            if (P && M && M.childNodes)
            {
                for (N = 0, K = M.childNodes.length; N < K; ++N)
                {
                    this.purgeElement(M.childNodes[N], P, R);
                }
            }
        },
        getListeners: function(M, K)
        {
            var P = [], L;

            if (!K)
            {
                L =                    [   I, J                    ];
            }
            else
            {
                if (K === "unload")
                {
                    L = [J];
                }
                else
                {
                    L = [I];
                }
            }
            var R = (TOOLTIP.lang.isString(M)) ? this.getEl(M) : M;

            for (var O = 0; O < L.length; O = O + 1)
            {
                var T = L[O];

                if (T)
                {
                    for (var Q = 0, S = T.length; Q < S; ++Q)
                    {
                        var N = T[Q];

                        if (N && N[this.EL] === R && (!K || K === N[this.TYPE]))
                        {
                            P.push(
                                {
                                type: N[this.TYPE],
                                fn: N[this.FN],
                                obj: N[this.OBJ],
                                adjust: N[this.OVERRIDE],
                                scope: N[this.ADJ_SCOPE],
                                index: Q
                                });
                        }
                    }
                }
            }

            return(P.length) ? P : null;
        },
        _unload: function(Q)
        {
            var K = TOOLTIP.util.Event, N, M, L, P, O, R = J.slice();

            for (N = 0, P = J.length; N < P; ++N)
            {
                L = R[N];

                if (L)
                {
                    var S = window;

                    if (L[K.ADJ_SCOPE])
                    {
                        if (L[K.ADJ_SCOPE] === true)
                        {
                            S = L[K.UNLOAD_OBJ];
                        }
                        else
                        {
                            S = L[K.ADJ_SCOPE];
                        }
                    }
                    L[K.FN].call(S, K.getEvent(Q, L[K.EL]), L[K.UNLOAD_OBJ]);
                    R[N] = null;
                    L = null;
                    S = null;
                }
            }
            J = null;

            if (I)
            {
                for (M = I.length - 1; M > -1; M--)
                {
                    L = I[M];

                    if (L)
                    {
                        K.removeListener(L[K.EL], L[K.TYPE], L[K.FN], M);
                    }
                }
                L = null;
            }
            G = null;
            K._simpleRemove(window, "unload", K._unload);
        },
        _getScrollLeft: function()
        {
            return this._getScroll()[1];
        },
        _getScrollTop: function()
        {
            return this._getScroll()[0];
        },
        _getScroll: function()
        {
            var K = document.documentElement, L = document.body;

            if (K && (K.scrollTop || K.scrollLeft))
            {
                return [ K.scrollTop, K.scrollLeft                ];
            }
            else
            {
                if (L)
                {
                    return [   L.scrollTop, L.scrollLeft                    ];
                }
                else
                {
                    return [   0, 0                    ];
                }
            }
        },
        regCE: function()
        {
        },
        _simpleAdd: function()
        {
            if (window.addEventListener)
            {
                return function(M, N, L, K)
                {
                    M.addEventListener(N, L, (K));
 };
            }
            else
            {
                if (window.attachEvent)
                {
                    return function(M, N, L, K)
                    {
                        M.attachEvent("on" + N, L);
 };
                }
                else
                {
                    return function()
                    {
 };
                }
            }
        }(),
        _simpleRemove: function()
        {
            if (window.removeEventListener)
            {
                return function(M, N, L, K)
                {
                    M.removeEventListener(N, L, (K));
 };
            }
            else
            {
                if (window.detachEvent)
                {
                    return function(L, M, K)
                    {
                        L.detachEvent("on" + M, K);
 };
                }
                else
                {
                    return function()
                    {
 };
                }
            }
        }()
 };
    }();

    (function()
    {
        var EU = TOOLTIP.util.Event;
        EU.on = EU.addListener;
        /* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
        if (EU.isIE)
        {
            TOOLTIP.util.Event.onDOMReady(TOOLTIP.util.Event._tryPreloadAttach, TOOLTIP.util.Event, true);
            var n = document.createElement("p");
            EU._dri = setInterval(function()
            {
                try
                {
                    n.doScroll("left");
                    clearInterval(EU._dri);
                    EU._dri = null;
                    EU._ready();
                    n = null;
                }
                catch (ex)
                {
                }
            }, EU.POLL_INTERVAL);
        }
        else
        {
            if (EU.webkit && EU.webkit < 525)
            {
                EU._dri = setInterval(function()
                {
                    var rs = document.readyState;

                    if ("loaded" == rs || "complete" == rs)
                    {
                        clearInterval(EU._dri);
                        EU._dri = null;
                        EU._ready();
                    }
                }, EU.POLL_INTERVAL);
            }
            else
            {
                EU._simpleAdd(document, "DOMContentLoaded", EU._ready);
            }
        }
        EU._simpleAdd(window, "load", EU._load);
        EU._simpleAdd(window, "unload", EU._unload);
        EU._tryPreloadAttach();
    })();
}

TOOLTIP.util.EventProvider = function()
{
};

TOOLTIP.util.EventProvider.prototype =
    {
    __yui_events: null,
    __yui_subscribers: null,
    subscribe: function(A, C, F, E)
    {
        this.__yui_events = this.__yui_events || {};

        var D = this.__yui_events[A];

        if (D)
        {
            D.subscribe(C, F, E);
        }
        else
        {
            this.__yui_subscribers = this.__yui_subscribers || {};

            var B = this.__yui_subscribers;

            if (!B[A])
            {
                B[A] = [];
            }
            B[A].push(                {        fn: C, obj: F, override: E                });
        }
    },
    unsubscribe: function(C, E, G)
    {
        this.__yui_events = this.__yui_events || {};

        var A = this.__yui_events;

        if (C)
        {
            var F = A[C];

            if (F)
            {
                return F.unsubscribe(E, G);
            }
        }
        else
        {
            var B = true;

            for (var D in A)
            {
                if (TOOLTIP.lang.hasOwnProperty(A, D))
                {
                    B = B && A[D].unsubscribe(E, G);
                }
            }
            return B;
        }
        return false;
    },
    unsubscribeAll: function(A)
    {
        return this.unsubscribe(A);
    },
    createEvent: function(G, D)
    {
        this.__yui_events = this.__yui_events || {};

        var A = D || {};

        var I = this.__yui_events;

        if (I[G])
        {
        }
        else
        {
            var H = A.scope || this;
            var E = (A.silent);
            var B = new TOOLTIP.util.CustomEvent(G, H, E, TOOLTIP.util.CustomEvent.FLAT);
            I[G] = B;

            if (A.onSubscribeCallback)
            {
                B.subscribeEvent.subscribe(A.onSubscribeCallback);
            }
            this.__yui_subscribers = this.__yui_subscribers || {};

            var F = this.__yui_subscribers[G];

            if (F)
            {
                for (var C = 0; C < F.length; ++C)
                {
                    B.subscribe(F[C].fn, F[C].obj, F[C].override);
                }
            }
        }
        return I[G];
    },
    fireEvent: function(E, D, A, C)
    {
        this.__yui_events = this.__yui_events || {};

        var G = this.__yui_events[E];

        if (!G)
        {
            return null;
        }
        var B = [];

        for (var F = 1; F < arguments.length; ++F)
        {
            B.push(arguments[F]);
        }
        return G.fire.apply(G, B);
    },
    hasEvent: function(A)
    {
        if (this.__yui_events)
        {
            if (this.__yui_events[A])
            {
                return true;
            }
        }
        return false;
    }
 };

TOOLTIP.util.KeyListener = function(A, F, B, C)
{
    if (!A)
    {
    }
    else
    {
        if (!F)
        {
        }
        else
        {
            if (!B)
            {
            }
        }
    }

    if (!C)
    {
        C = TOOLTIP.util.KeyListener.KEYDOWN;
    }
    var D = new TOOLTIP.util.CustomEvent("keyPressed");
    this.enabledEvent = new TOOLTIP.util.CustomEvent("enabled");
    this.disabledEvent = new TOOLTIP.util.CustomEvent("disabled");

    if (typeof A == "string")
    {
        A = document.getElementById(A);
    }

    if (typeof B == "function")
    {
        D.subscribe(B);
    }
    else
    {
        D.subscribe(B.fn, B.scope, B.correctScope);
    }

    function E(J, I)
    {
    if (!F.shift)
    {
        F.shift = false;
    }

    if (!F.alt)
    {
        F.alt = false;
    }

    if (!F.ctrl)
    {
        F.ctrl = false;
    }

    if (J.shiftKey == F.shift && J.altKey == F.alt && J.ctrlKey == F.ctrl)
    {
        var G;

        if (F.keys instanceof Array)
        {
            for (var H = 0; H < F.keys.length; H++)
            {
                G = F.keys[H];

                if (G == J.charCode)
                {
                    D.fire(J.charCode, J);
                    break;
                }
                else
                {
                    if (G == J.keyCode)
                    {
                        D.fire(J.keyCode, J);
                        break;
                    }
                }
            }
        }
        else
        {
            G = F.keys;

            if (G == J.charCode)
            {
                D.fire(J.charCode, J);
            }
            else
            {
                if (G == J.keyCode)
                {
                    D.fire(J.keyCode, J);
                }
            }
        }
    }
}
    this.enable = function()
    {
        if (!this.enabled)
        {
            TOOLTIP.util.Event.addListener(A, C, E);
            this.enabledEvent.fire(F);
        }
        this.enabled = true;
 };
    this.disable = function()
    {
        if (this.enabled)
        {
            TOOLTIP.util.Event.removeListener(A, C, E);
            this.disabledEvent.fire(F);
        }
        this.enabled = false;
 };
    this.toString = function()
    {
        return "KeyListener [" + F.keys + "] " + A.tagName + (A.id ? "[" + A.id + "]" : "");
 };
};

TOOLTIP.util.KeyListener.KEYDOWN = "keydown";
TOOLTIP.util.KeyListener.KEYUP = "keyup";
TOOLTIP.util.KeyListener.KEY ={ALT: 18,BACK_SPACE: 8,CAPS_LOCK: 20,CONTROL: 17,DELETE: 46,DOWN: 40,END: 35,ENTER: 13,ESCAPE: 27,HOME: 36,LEFT: 37,META: 224,NUM_LOCK: 144,PAGE_DOWN: 34,PAGE_UP: 33,PAUSE: 19,PRINTSCREEN: 44,RIGHT: 39,SCROLL_LOCK: 145,SHIFT: 16,SPACE: 32,TAB: 9,UP: 38};

TOOLTIP.register("event", TOOLTIP.util.Event,{version: "2.5.2",build: "1076"});

TOOLTIP.register("TOOLTIP-dom-event", TOOLTIP,{version: "2.5.2",build: "1076"});

/*
Copyright (c) 2008, TOOLTIP! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.TOOLTIP.net/yui/license.txt
version: 2.5.2
*/
(function()
{
    TOOLTIP.util.Config = function(D)
    {
        if (D)
        {
            this.init(D);
        }
 };
    var B = TOOLTIP.lang, C = TOOLTIP.util.CustomEvent, A = TOOLTIP.util.Config;
    A.CONFIG_CHANGED_EVENT = "configChanged";
    A.BOOLEAN_TYPE = "boolean";
    A.prototype =
        {
        owner: null,
        queueInProgress: false,
        config: null,
        initialConfig: null,
        eventQueue: null,
        configChangedEvent: null,
        init: function(D)
        {
            this.owner = D;
            this.configChangedEvent = this.createEvent(A.CONFIG_CHANGED_EVENT);
            this.configChangedEvent.signature = C.LIST;
            this.queueInProgress = false;
            this.config = {};

            this.initialConfig = {};

            this.eventQueue = [];
        },
        checkBoolean: function(D)
        {
            return( typeof D == A.BOOLEAN_TYPE);
        },
        checkNumber: function(D)
        {
            return(!isNaN(D));
        },
        fireEvent: function(D, F)
        {
            var E = this.config[D];

            if (E && E.event)
            {
                E.event.fire(F);
            }
        },
        addProperty: function(E, D)
        {
            E = E.toLowerCase();
            this.config[E] = D;
            D.event = this.createEvent(E,
                {
                scope: this.owner
                });

            D.event.signature = C.LIST;
            D.key = E;

            if (D.handler)
            {
                D.event.subscribe(D.handler, this.owner);
            }
            this.setProperty(E, D.value, true);

            if (!D.suppressEvent)
            {
                this.queueProperty(E, D.value);
            }
        },
        getConfig: function()
        {
            var D = {}, F, E;

            for (F in this.config)
            {
                E = this.config[F];

                if (E && E.event)
                {
                    D[F] = E.value;
                }
            }
            return D;
        },
        getProperty: function(D)
        {
            var E = this.config[D.toLowerCase()];

            if (E && E.event)
            {
                return E.value;
            }
            else
            {
                return undefined;
            }
        },
        resetProperty: function(D)
        {
            D = D.toLowerCase();
            var E = this.config[D];

            if (E && E.event)
            {
                if (this.initialConfig[D] && !B.isUndefined(this.initialConfig[D]))
                {
                    this.setProperty(D, this.initialConfig[D]);
                    return true;
                }
            }
            else
            {
                return false;
            }
        },
        setProperty: function(E, G, D)
        {
            var F;
            E = E.toLowerCase();

            if (this.queueInProgress && !D)
            {
                this.queueProperty(E, G);
                return true;
            }
            else
            {
                F = this.config[E];

                if (F && F.event)
                {
                    if (F.validator && !F.validator(G))
                    {
                        return false;
                    }
                    else
                    {
                        F.value = G;

                        if (!D)
                        {
                            this.fireEvent(E, G);
                            this.configChangedEvent.fire(
                                [
                                E,
                                G
 ]);
                        }

                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
        },
        queueProperty: function(S, P)
        {
            S = S.toLowerCase();
            var R = this.config[S], K = false, J, G, H, I, O, Q, F, M, N, D, L, T, E;

            if (R && R.event)
            {
                if (!B.isUndefined(P) && R.validator && !R.validator(P))
                {
                    return false;
                }
                else
                {
                    if (!B.isUndefined(P))
                    {
                        R.value = P;
                    }
                    else
                    {
                        P = R.value;
                    }
                    K = false;
                    J = this.eventQueue.length;

                    for (L = 0; L < J; L++)
                    {
                        G = this.eventQueue[L];

                        if (G)
                        {
                            H = G[0];
                            I = G[1];

                            if (H == S)
                            {
                                this.eventQueue[L] = null;
                                this.eventQueue.push(                                    [                   S, (!B.isUndefined(P) ? P : I) ]);

                                K = true;
                                break;
                            }
                        }
                    }

                    if (!K && !B.isUndefined(P))
                    {
                        this.eventQueue.push(                            [           S, P ]);
                    }
                }

                if (R.supercedes)
                {
                    O = R.supercedes.length;

                    for (T = 0; T < O; T++)
                    {
                        Q = R.supercedes[T];
                        F = this.eventQueue.length;

                        for (E = 0; E < F; E++)
                        {
                            M = this.eventQueue[E];

                            if (M)
                            {
                                N = M[0];
                                D = M[1];

                                if (N == Q.toLowerCase())
                                {
                                    this.eventQueue.push(                                        [                       N, D ]);

                                    this.eventQueue[E] = null;
                                    break;
                                }
                            }
                        }
                    }
                }
                return true;
            }
            else
            {
                return false;
            }
        },
        refireEvent: function(D)
        {
            D = D.toLowerCase();
            var E = this.config[D];

            if (E && E.event && !B.isUndefined(E.value))
            {
                if (this.queueInProgress)
                {
                    this.queueProperty(D);
                }
                else
                {
                    this.fireEvent(D, E.value);
                }
            }
        },
        applyConfig: function(D, G)
        {
            var F, E;

            if (G)
            {
                E = {};

                for (F in D)
                {
                    if (B.hasOwnProperty(D, F))
                    {
                        E[F.toLowerCase()] = D[F];
                    }
                }
                this.initialConfig = E;
            }

            for (F in D)
            {
                if (B.hasOwnProperty(D, F))
                {
                    this.queueProperty(F, D[F]);
                }
            }
        },
        refresh: function()
        {
            var D;

            for (D in this.config)
            {
                this.refireEvent(D);
            }
        },
        fireQueue: function()
        {
            var E, H, D, G, F;
            this.queueInProgress = true;

            for (E = 0; E < this.eventQueue.length; E++)
            {
                H = this.eventQueue[E];

                if (H)
                {
                    D = H[0];
                    G = H[1];
                    F = this.config[D];
                    F.value = G;
                    this.fireEvent(D, G);
                }
            }
            this.queueInProgress = false;
            this.eventQueue = [];
        },
        subscribeToConfigEvent: function(E, F, H, D)
        {
            var G = this.config[E.toLowerCase()];

            if (G && G.event)
            {
                if (!A.alreadySubscribed(G.event, F, H))
                {
                    G.event.subscribe(F, H, D);
                }
                return true;
            }
            else
            {
                return false;
            }
        },
        unsubscribeFromConfigEvent: function(D, E, G)
        {
            var F = this.config[D.toLowerCase()];

            if (F && F.event)
            {
                return F.event.unsubscribe(E, G);
            }
            else
            {
                return false;
            }
        },
        toString: function()
        {
            var D = "Config";

            if (this.owner)
            {
                D += " [" + this.owner.toString() + "]";
            }
            return D;
        },
        outputEventQueue: function()
        {
            var D = "", G, E, F = this.eventQueue.length;

            for (E = 0; E < F; E++)
            {
                G = this.eventQueue[E];

                if (G)
                {
                    D += G[0] + "=" + G[1] + ", ";
                }
            }
            return D;
        },
        destroy: function()
        {
            var E = this.config, D, F;

            for (D in E)
            {
                if (B.hasOwnProperty(E, D))
                {
                    F = E[D];
                    F.event.unsubscribeAll();
                    F.event = null;
                }
            }
            this.configChangedEvent.unsubscribeAll();
            this.configChangedEvent = null;
            this.owner = null;
            this.config = null;
            this.initialConfig = null;
            this.eventQueue = null;
        }
 };
    A.alreadySubscribed = function(E, H, I)
    {
        var F = E.subscribers.length, D, G;

        if (F > 0)
        {
            G = F - 1;

            do
            {
                D = E.subscribers[G];

                if (D && D.obj == I && D.fn == H)
                {
                    return true;
                }
            } while (G--);
        }
        return false;
 };
    TOOLTIP.lang.augmentProto(A, TOOLTIP.util.EventProvider);
}());
(function()
{
    TOOLTIP.widget.Module = function(Q, P)
    {
        if (Q)
        {
            this.init(Q, P);
        }
        else
        {
        }
 };
    var F = TOOLTIP.util.Dom, D = TOOLTIP.util.Config, M = TOOLTIP.util.Event, L = TOOLTIP.util.CustomEvent,
        G = TOOLTIP.widget.Module, H, O, N, E, A =
        {
        "BEFORE_INIT": "beforeInit",
        "INIT": "init",
        "APPEND": "append",
        "BEFORE_RENDER": "beforeRender",
        "RENDER": "render",
        "CHANGE_HEADER": "changeHeader",
        "CHANGE_BODY": "changeBody",
        "CHANGE_FOOTER": "changeFooter",
        "CHANGE_CONTENT": "changeContent",
        "DESTORY": "destroy",
        "BEFORE_SHOW": "beforeShow",
        "SHOW": "show",
        "BEFORE_HIDE": "beforeHide",
        "HIDE": "hide"
        }, I =
        {
        "VISIBLE":
            {
            key: "visible",
            value: true,
            validator: TOOLTIP.lang.isBoolean
            },
        "EFFECT":
            {
            key: "effect",
            suppressEvent: true,
            supercedes: ["visible"]
            },
        "MONITOR_RESIZE":
            {
            key: "monitorresize",
            value: true
            },
        "APPEND_TO_DOCUMENT_BODY":
            {
            key: "appendtodocumentbody",
            value: false
            }
 };

    G.IMG_ROOT = null;
    G.IMG_ROOT_SSL = null;
    G.CSS_MODULE = "yui-module";
    G.CSS_HEADER = "hd";
    G.CSS_BODY = "bd";
    G.CSS_FOOTER = "ft";
    G.RESIZE_MONITOR_SECURE_URL = "javascript:false;";
    G.textResizeEvent = new L("textResize");

    function K()
{
    if (!H)
    {
        H = document.createElement("div");
        H.innerHTML = ('<div class="' + G.CSS_HEADER + '"></div>' + '<div class="' + G.CSS_BODY + '"></div><div class="'
            + G.CSS_FOOTER + '"></div>');
        O = H.firstChild;
        N = O.nextSibling;
        E = N.nextSibling;
    }
    return H;
}

    function J()
{
    if (!O)
    {
        K();
    }
    return(O.cloneNode(false));
}

    function B()
{
    if (!N)
    {
        K();
    }
    return(N.cloneNode(false));
}

    function C()
{
    if (!E)
    {
        K();
    }
    return(E.cloneNode(false));
}
    G.prototype =
        {
        constructor: G,
        element: null,
        header: null,
        body: null,
        footer: null,
        id: null,
        imageRoot: G.IMG_ROOT,
        initEvents: function()
        {
            var P = L.LIST;
            this.beforeInitEvent = this.createEvent(A.BEFORE_INIT);
            this.beforeInitEvent.signature = P;
            this.initEvent = this.createEvent(A.INIT);
            this.initEvent.signature = P;
            this.appendEvent = this.createEvent(A.APPEND);
            this.appendEvent.signature = P;
            this.beforeRenderEvent = this.createEvent(A.BEFORE_RENDER);
            this.beforeRenderEvent.signature = P;
            this.renderEvent = this.createEvent(A.RENDER);
            this.renderEvent.signature = P;
            this.changeHeaderEvent = this.createEvent(A.CHANGE_HEADER);
            this.changeHeaderEvent.signature = P;
            this.changeBodyEvent = this.createEvent(A.CHANGE_BODY);
            this.changeBodyEvent.signature = P;
            this.changeFooterEvent = this.createEvent(A.CHANGE_FOOTER);
            this.changeFooterEvent.signature = P;
            this.changeContentEvent = this.createEvent(A.CHANGE_CONTENT);
            this.changeContentEvent.signature = P;
            this.destroyEvent = this.createEvent(A.DESTORY);
            this.destroyEvent.signature = P;
            this.beforeShowEvent = this.createEvent(A.BEFORE_SHOW);
            this.beforeShowEvent.signature = P;
            this.showEvent = this.createEvent(A.SHOW);
            this.showEvent.signature = P;
            this.beforeHideEvent = this.createEvent(A.BEFORE_HIDE);
            this.beforeHideEvent.signature = P;
            this.hideEvent = this.createEvent(A.HIDE);
            this.hideEvent.signature = P;
        },
        platform: function()
        {
            var P = navigator.userAgent.toLowerCase();

            if (P.indexOf("windows") != -1 || P.indexOf("win32") != -1)
            {
                return "windows";
            }
            else
            {
                if (P.indexOf("macintosh") != -1)
                {
                    return "mac";
                }
                else
                {
                    return false;
                }
            }
        }(),
        browser: function()
        {
            var P = navigator.userAgent.toLowerCase();

            if (P.indexOf("opera") != -1)
            {
                return "opera";
            }
            else
            {
                if (P.indexOf("msie 7") != -1)
                {
                    return "ie7";
                }
                else
                {
                    if (P.indexOf("msie") != -1)
                    {
                        return "ie";
                    }
                    else
                    {
                        if (P.indexOf("safari") != -1)
                        {
                            return "safari";
                        }
                        else
                        {
                            if (P.indexOf("gecko") != -1)
                            {
                                return "gecko";
                            }
                            else
                            {
                                return false;
                            }
                        }
                    }
                }
            }
        }(),
        isSecure: function()
        {
            if (window.location.href.toLowerCase().indexOf("https") === 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }(),
        initDefaultConfig: function()
        {
            this.cfg.addProperty(I.VISIBLE.key,
                {
                handler: this.configVisible,
                value: I.VISIBLE.value,
                validator: I.VISIBLE.validator
                });

            this.cfg.addProperty(I.EFFECT.key,
                {
                suppressEvent: I.EFFECT.suppressEvent,
                supercedes: I.EFFECT.supercedes
                });

            this.cfg.addProperty(I.MONITOR_RESIZE.key,
                {
                handler: this.configMonitorResize,
                value: I.MONITOR_RESIZE.value
                });

            this.cfg.addProperty(I.APPEND_TO_DOCUMENT_BODY.key,
                {
                value: I.APPEND_TO_DOCUMENT_BODY.value
                });
        },
        init: function(U, T)
        {
            var R, V;
            this.initEvents();
            this.beforeInitEvent.fire(G);
            this.cfg = new D(this);

            if (this.isSecure)
            {
                this.imageRoot = G.IMG_ROOT_SSL;
            }

            if (typeof U == "string")
            {
                R = U;
                U = document.getElementById(U);

                if (!U)
                {
                    U = (K()).cloneNode(false);
                    U.id = R;
                }
            }
            this.element = U;

            if (U.id)
            {
                this.id = U.id;
            }
            V = this.element.firstChild;

            if (V)
            {
                var Q = false, P = false, S = false;

                do
                {
                    if (1 == V.nodeType)
                    {
                        if (!Q && F.hasClass(V, G.CSS_HEADER))
                        {
                            this.header = V;
                            Q = true;
                        }
                        else
                        {
                            if (!P && F.hasClass(V, G.CSS_BODY))
                            {
                                this.body = V;
                                P = true;
                            }
                            else
                            {
                                if (!S && F.hasClass(V, G.CSS_FOOTER))
                                {
                                    this.footer = V;
                                    S = true;
                                }
                            }
                        }
                    }
                } while ((V = V.nextSibling));
            }
            this.initDefaultConfig();
            F.addClass(this.element, G.CSS_MODULE);

            if (T)
            {
                this.cfg.applyConfig(T, true);
            }

            if (!D.alreadySubscribed(this.renderEvent, this.cfg.fireQueue, this.cfg))
            {
                this.renderEvent.subscribe(this.cfg.fireQueue, this.cfg, true);
            }
            this.initEvent.fire(G);
        },
        initResizeMonitor: function()
        {
            var Q = (TOOLTIP.env.ua.gecko && this.platform == "windows");

            if (Q)
            {
                var P = this;
                setTimeout(function()
                {
                    P._initResizeMonitor();
                }, 0);
            }
            else
            {
                this._initResizeMonitor();
            }
        },
        _initResizeMonitor: function()
        {
            var P, R, T;

            function V()
{
    G.textResizeEvent.fire();
}

            if (!TOOLTIP.env.ua.opera)
            {
                R = F.get("_yuiResizeMonitor");
                var U = this._supportsCWResize();

                if (!R)
                {
                    R = document.createElement("iframe");

                    if (this.isSecure && G.RESIZE_MONITOR_SECURE_URL && TOOLTIP.env.ua.ie)
                    {
                        R.src = G.RESIZE_MONITOR_SECURE_URL;
                    }

                    if (!U)
                    {
                        T =
                            [
                            "<html><head><script ",
                            'type="text/javascript">',
                            "window.onresize=function(){window.parent.",
                            "TOOLTIP.widget.Module.textResizeEvent.",
                            "fire();};<",
                            "/script></head>",
                            "<body></body></html>"
                            ].join("");

                        R.src = "data:text/html;charset=utf-8," + encodeURIComponent(T);
                    }
                    R.id = "_yuiResizeMonitor";
                    R.style.position = "absolute";
                    R.style.visibility = "hidden";
                    var Q = document.body, S = Q.firstChild;

                    if (S)
                    {
                        Q.insertBefore(R, S);
                    }
                    else
                    {
                        Q.appendChild(R);
                    }
                    R.style.width = "10em";
                    R.style.height = "10em";
                    R.style.top = (-1 * R.offsetHeight) + "px";
                    R.style.left = (-1 * R.offsetWidth) + "px";
                    R.style.borderWidth = "0";
                    R.style.visibility = "visible";

                    if (TOOLTIP.env.ua.webkit)
                    {
                        P = R.contentWindow.document;
                        P.open();
                        P.close();
                    }
                }

                if (R && R.contentWindow)
                {
                    G.textResizeEvent.subscribe(this.onDomResize, this, true);

                    if (!G.textResizeInitialized)
                    {
                        if (U)
                        {
                            if (!M.on(R.contentWindow, "resize", V))
                            {
                                M.on(R, "resize", V);
                            }
                        }
                        G.textResizeInitialized = true;
                    }
                    this.resizeMonitor = R;
                }
            }
        },
        _supportsCWResize: function()
        {
            var P = true;

            if (TOOLTIP.env.ua.gecko && TOOLTIP.env.ua.gecko <= 1.8)
            {
                P = false;
            }
            return P;
        },
        onDomResize: function(S, R)
        {
            var Q = -1 * this.resizeMonitor.offsetWidth, P = -1 * this.resizeMonitor.offsetHeight;
            this.resizeMonitor.style.top = P + "px";
            this.resizeMonitor.style.left = Q + "px";
        },
        setHeader: function(Q)
        {
            var P = this.header || (this.header = J());

            if (Q.nodeName)
            {
                P.innerHTML = "";
                P.appendChild(Q);
            }
            else
            {
                P.innerHTML = Q;
            }
            this.changeHeaderEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        appendToHeader: function(Q)
        {
            var P = this.header || (this.header = J());
            P.appendChild(Q);
            this.changeHeaderEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        setBody: function(Q)
        {
            var P = this.body || (this.body = B());

            if (Q.nodeName)
            {
                P.innerHTML = "";
                P.appendChild(Q);
            }
            else
            {
                P.innerHTML = Q;
            }
            this.changeBodyEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        appendToBody: function(Q)
        {
            var P = this.body || (this.body = B());
            P.appendChild(Q);
            this.changeBodyEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        setFooter: function(Q)
        {
            var P = this.footer || (this.footer = C());

            if (Q.nodeName)
            {
                P.innerHTML = "";
                P.appendChild(Q);
            }
            else
            {
                P.innerHTML = Q;
            }
            this.changeFooterEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        appendToFooter: function(Q)
        {
            var P = this.footer || (this.footer = C());
            P.appendChild(Q);
            this.changeFooterEvent.fire(Q);
            this.changeContentEvent.fire();
        },
        render: function(R, P)
        {
            var S = this, T;

            function Q(U)
{
    if (typeof U == "string")
    {
        U = document.getElementById(U);
    }

    if (U)
    {
        S._addToParent(U, S.element);
        S.appendEvent.fire();
    }
}
            this.beforeRenderEvent.fire();

            if (!P)
            {
                P = this.element;
            }

            if (R)
            {
                Q(R);
            }
            else
            {
                if (!F.inDocument(this.element))
                {
                    return false;
                }
            }

            if (this.header && !F.inDocument(this.header))
            {
                T = P.firstChild;

                if (T)
                {
                    P.insertBefore(this.header, T);
                }
                else
                {
                    P.appendChild(this.header);
                }
            }

            if (this.body && !F.inDocument(this.body))
            {
                if (this.footer && F.isAncestor(this.moduleElement, this.footer))
                {
                    P.insertBefore(this.body, this.footer);
                }
                else
                {
                    P.appendChild(this.body);
                }
            }

            if (this.footer && !F.inDocument(this.footer))
            {
                P.appendChild(this.footer);
            }
            this.renderEvent.fire();
            return true;
        },
        destroy: function()
        {
            var P, Q;

            if (this.element)
            {
                M.purgeElement(this.element, true);
                P = this.element.parentNode;
            }

            if (P)
            {
                P.removeChild(this.element);
            }
            this.element = null;
            this.header = null;
            this.body = null;
            this.footer = null;
            G.textResizeEvent.unsubscribe(this.onDomResize, this);
            this.cfg.destroy();
            this.cfg = null;
            this.destroyEvent.fire();

            for (Q in this)
            {
                if (Q instanceof L)
                {
                    Q.unsubscribeAll();
                }
            }
        },
        show: function()
        {
            this.cfg.setProperty("visible", true);
        },
        hide: function()
        {
            this.cfg.setProperty("visible", false);
        },
        configVisible: function(Q, P, R)
        {
            var S = P[0];

            if (S)
            {
                this.beforeShowEvent.fire();
                F.setStyle(this.element, "display", "block");
                this.showEvent.fire();
            }
            else
            {
                this.beforeHideEvent.fire();
                F.setStyle(this.element, "display", "none");
                this.hideEvent.fire();
            }
        },
        configMonitorResize: function(R, Q, S)
        {
            var P = Q[0];

            if (P)
            {
                this.initResizeMonitor();
            }
            else
            {
                G.textResizeEvent.unsubscribe(this.onDomResize, this, true);
                this.resizeMonitor = null;
            }
        },
        _addToParent: function(P, Q)
        {
            if (!this.cfg.getProperty("appendtodocumentbody") && P === document.body && P.firstChild)
            {
                P.insertBefore(Q, P.firstChild);
            }
            else
            {
                P.appendChild(Q);
            }
        },
        toString: function()
        {
            return "Module " + this.id;
        }
 };
    TOOLTIP.lang.augmentProto(G, TOOLTIP.util.EventProvider);
}());
(function()
{
    TOOLTIP.widget.Overlay = function(L, K)
    {
        TOOLTIP.widget.Overlay.superclass.constructor.call(this, L, K);
 };
    var F = TOOLTIP.lang, I = TOOLTIP.util.CustomEvent, E = TOOLTIP.widget.Module, J = TOOLTIP.util.Event, D = TOOLTIP.util.Dom,
        C = TOOLTIP.util.Config, B = TOOLTIP.widget.Overlay, G, A =
        {
        "BEFORE_MOVE": "beforeMove",
        "MOVE": "move"
        }, H =
        {
        "X":
            {
            key: "x",
            validator: F.isNumber,
            suppressEvent: true,
            supercedes: ["iframe"]
            },
        "Y":
            {
            key: "y",
            validator: F.isNumber,
            suppressEvent: true,
            supercedes: ["iframe"]
            },
        "XY":
            {
            key: "xy",
            suppressEvent: true,
            supercedes: ["iframe"]
            },
        "CONTEXT":
            {
            key: "context",
            suppressEvent: true,
            supercedes: ["iframe"]
            },
        "FIXED_CENTER":
            {
            key: "fixedcenter",
            value: false,
            validator: F.isBoolean,
            supercedes:
                [
                "iframe",
                "visible"
                ]
            },
        "WIDTH":
            {
            key: "width",
            suppressEvent: true,
            supercedes:
                [
                "context",
                "fixedcenter",
                "iframe"
                ]
            },
        "HEIGHT":
            {
            key: "height",
            suppressEvent: true,
            supercedes:
                [
                "context",
                "fixedcenter",
                "iframe"
                ]
            },
        "ZINDEX":
            {
            key: "zindex",
            value: null
            },
        "CONSTRAIN_TO_VIEWPORT":
            {
            key: "constraintoviewport",
            value: false,
            validator: F.isBoolean,
            supercedes:
                [
                "iframe",
                "x",
                "y",
                "xy"
                ]
            },
        "IFRAME":
            {
            key: "iframe",
            value: (TOOLTIP.env.ua.ie == 6 ? true : false),
            validator: F.isBoolean,
            supercedes: ["zindex"]
            }
 };

    B.IFRAME_SRC = "javascript:false;";
    B.IFRAME_OFFSET = 3;
    B.VIEWPORT_OFFSET = 10;
    B.TOP_LEFT = "tl";
    B.TOP_RIGHT = "tr";
    B.BOTTOM_LEFT = "bl";
    B.BOTTOM_RIGHT = "br";
    B.CSS_OVERLAY = "yui-overlay";
    B.windowScrollEvent = new I("windowScroll");
    B.windowResizeEvent = new I("windowResize");
    B.windowScrollHandler = function(K)
    {
        if (TOOLTIP.env.ua.ie)
        {
            if (!window.scrollEnd)
            {
                window.scrollEnd = -1;
            }
            clearTimeout(window.scrollEnd);
            window.scrollEnd = setTimeout(function()
            {
                B.windowScrollEvent.fire();
            }, 1);
        }
        else
        {
            B.windowScrollEvent.fire();
        }
 };
    B.windowResizeHandler = function(K)
    {
        if (TOOLTIP.env.ua.ie)
        {
            if (!window.resizeEnd)
            {
                window.resizeEnd = -1;
            }
            clearTimeout(window.resizeEnd);
            window.resizeEnd = setTimeout(function()
            {
                B.windowResizeEvent.fire();
            }, 100);
        }
        else
        {
            B.windowResizeEvent.fire();
        }
 };
    B._initialized = null;

    if (B._initialized === null)
    {
        J.on(window, "scroll", B.windowScrollHandler);
        J.on(window, "resize", B.windowResizeHandler);
        B._initialized = true;
    }
    TOOLTIP.extend(B, E,
        {
        init: function(L, K)
        {
            B.superclass.init.call(this, L);
            this.beforeInitEvent.fire(B);
            D.addClass(this.element, B.CSS_OVERLAY);

            if (K)
            {
                this.cfg.applyConfig(K, true);
            }

            if (this.platform == "mac" && TOOLTIP.env.ua.gecko)
            {
                if (!C.alreadySubscribed(this.showEvent, this.showMacGeckoScrollbars, this))
                {
                    this.showEvent.subscribe(this.showMacGeckoScrollbars, this, true);
                }

                if (!C.alreadySubscribed(this.hideEvent, this.hideMacGeckoScrollbars, this))
                {
                    this.hideEvent.subscribe(this.hideMacGeckoScrollbars, this, true);
                }
            }
            this.initEvent.fire(B);
        },
        initEvents: function()
        {
            B.superclass.initEvents.call(this);
            var K = I.LIST;
            this.beforeMoveEvent = this.createEvent(A.BEFORE_MOVE);
            this.beforeMoveEvent.signature = K;
            this.moveEvent = this.createEvent(A.MOVE);
            this.moveEvent.signature = K;
        },
        initDefaultConfig: function()
        {
            B.superclass.initDefaultConfig.call(this);
            this.cfg.addProperty(H.X.key,
                {
                handler: this.configX,
                validator: H.X.validator,
                suppressEvent: H.X.suppressEvent,
                supercedes: H.X.supercedes
                });

            this.cfg.addProperty(H.Y.key,
                {
                handler: this.configY,
                validator: H.Y.validator,
                suppressEvent: H.Y.suppressEvent,
                supercedes: H.Y.supercedes
                });

            this.cfg.addProperty(H.XY.key,
                {
                handler: this.configXY,
                suppressEvent: H.XY.suppressEvent,
                supercedes: H.XY.supercedes
                });

            this.cfg.addProperty(H.CONTEXT.key,
                {
                handler: this.configContext,
                suppressEvent: H.CONTEXT.suppressEvent,
                supercedes: H.CONTEXT.supercedes
                });

            this.cfg.addProperty(H.FIXED_CENTER.key,
                {
                handler: this.configFixedCenter,
                value: H.FIXED_CENTER.value,
                validator: H.FIXED_CENTER.validator,
                supercedes: H.FIXED_CENTER.supercedes
                });

            this.cfg.addProperty(H.WIDTH.key,
                {
                handler: this.configWidth,
                suppressEvent: H.WIDTH.suppressEvent,
                supercedes: H.WIDTH.supercedes
                });

            this.cfg.addProperty(H.HEIGHT.key,
                {
                handler: this.configHeight,
                suppressEvent: H.HEIGHT.suppressEvent,
                supercedes: H.HEIGHT.supercedes
                });

            this.cfg.addProperty(H.ZINDEX.key,
                {
                handler: this.configzIndex,
                value: H.ZINDEX.value
                });

            this.cfg.addProperty(H.CONSTRAIN_TO_VIEWPORT.key,
                {
                handler: this.configConstrainToViewport,
                value: H.CONSTRAIN_TO_VIEWPORT.value,
                validator: H.CONSTRAIN_TO_VIEWPORT.validator,
                supercedes: H.CONSTRAIN_TO_VIEWPORT.supercedes
                });

            this.cfg.addProperty(H.IFRAME.key,
                {
                handler: this.configIframe,
                value: H.IFRAME.value,
                validator: H.IFRAME.validator,
                supercedes: H.IFRAME.supercedes
                });
        },
        moveTo: function(K, L)
        {
            this.cfg.setProperty("xy",
                [
                K,
                L
 ]);
        },
        hideMacGeckoScrollbars: function()
        {
            D.removeClass(this.element, "show-scrollbars");
            D.addClass(this.element, "hide-scrollbars");
        },
        showMacGeckoScrollbars: function()
        {
            D.removeClass(this.element, "hide-scrollbars");
            D.addClass(this.element, "show-scrollbars");
        },
        configVisible: function(N, K, T)
        {
            var M = K[0], O = D.getStyle(this.element, "visibility"), U = this.cfg.getProperty("effect"), R = [],
                Q = (this.platform == "mac" && TOOLTIP.env.ua.gecko), b = C.alreadySubscribed, S, L, a, Y, X, W, Z, V, P;

            if (O == "inherit")
            {
                a = this.element.parentNode;

                while (a.nodeType != 9 && a.nodeType != 11)
                {
                    O = D.getStyle(a, "visibility");

                    if (O != "inherit")
                    {
                        break;
                    }
                    a = a.parentNode;
                }

                if (O == "inherit")
                {
                    O = "visible";
                }
            }

            if (U)
            {
                if (U instanceof Array)
                {
                    V = U.length;

                    for (Y = 0; Y < V; Y++)
                    {
                        S = U[Y];
                        R[R.length] = S.effect(this, S.duration);
                    }
                }
                else
                {
                    R[R.length] = U.effect(this, U.duration);
                }
            }

            if (M)
            {
                if (Q)
                {
                    this.showMacGeckoScrollbars();
                }

                if (U)
                {
                    if (M)
                    {
                        if (O != "visible" || O === "")
                        {
                            this.beforeShowEvent.fire();
                            P = R.length;

                            for (X = 0; X < P; X++)
                            {
                                L = R[X];

                                if (X === 0 && !b(L.animateInCompleteEvent, this.showEvent.fire, this.showEvent))
                                {
                                    L.animateInCompleteEvent.subscribe(this.showEvent.fire, this.showEvent, true);
                                }
                                L.animateIn();
                            }
                        }
                    }
                }
                else
                {
                    if (O != "visible" || O === "")
                    {
                        this.beforeShowEvent.fire();
                        D.setStyle(this.element, "visibility", "visible");
                        this.cfg.refireEvent("iframe");
                        this.showEvent.fire();
                    }
                }
            }
            else
            {
                if (Q)
                {
                    this.hideMacGeckoScrollbars();
                }

                if (U)
                {
                    if (O == "visible")
                    {
                        this.beforeHideEvent.fire();
                        P = R.length;

                        for (W = 0; W < P; W++)
                        {
                            Z = R[W];

                            if (W === 0 && !b(Z.animateOutCompleteEvent, this.hideEvent.fire, this.hideEvent))
                            {
                                Z.animateOutCompleteEvent.subscribe(this.hideEvent.fire, this.hideEvent, true);
                            }
                            Z.animateOut();
                        }
                    }
                    else
                    {
                        if (O === "")
                        {
                            D.setStyle(this.element, "visibility", "hidden");
                        }
                    }
                }
                else
                {
                    if (O == "visible" || O === "")
                    {
                        this.beforeHideEvent.fire();
                        D.setStyle(this.element, "visibility", "hidden");
                        this.hideEvent.fire();
                    }
                }
            }
        },
        doCenterOnDOMEvent: function()
        {
            if (this.cfg.getProperty("visible"))
            {
                this.center();
            }
        },
        configFixedCenter: function(O, M, P)
        {
            var Q = M[0], L = C.alreadySubscribed, N = B.windowResizeEvent, K = B.windowScrollEvent;

            if (Q)
            {
                this.center();

                if (!L(this.beforeShowEvent, this.center, this))
                {
                    this.beforeShowEvent.subscribe(this.center);
                }

                if (!L(N, this.doCenterOnDOMEvent, this))
                {
                    N.subscribe(this.doCenterOnDOMEvent, this, true);
                }

                if (!L(K, this.doCenterOnDOMEvent, this))
                {
                    K.subscribe(this.doCenterOnDOMEvent, this, true);
                }
            }
            else
            {
                this.beforeShowEvent.unsubscribe(this.center);
                N.unsubscribe(this.doCenterOnDOMEvent, this);
                K.unsubscribe(this.doCenterOnDOMEvent, this);
            }
        },
        configHeight: function(N, L, O)
        {
            var K = L[0], M = this.element;
            D.setStyle(M, "height", K);
            this.cfg.refireEvent("iframe");
        },
        configWidth: function(N, K, O)
        {
            var M = K[0], L = this.element;
            D.setStyle(L, "width", M);
            this.cfg.refireEvent("iframe");
        },
        configzIndex: function(M, K, N)
        {
            var O = K[0], L = this.element;

            if (!O)
            {
                O = D.getStyle(L, "zIndex");

                if (!O || isNaN(O))
                {
                    O = 0;
                }
            }

            if (this.iframe || this.cfg.getProperty("iframe") === true)
            {
                if (O <= 0)
                {
                    O = 1;
                }
            }
            D.setStyle(L, "zIndex", O);
            this.cfg.setProperty("zIndex", O, true);

            if (this.iframe)
            {
                this.stackIframe();
            }
        },
        configXY: function(M, L, N)
        {
            var P = L[0], K = P[0], O = P[1];
            this.cfg.setProperty("x", K);
            this.cfg.setProperty("y", O);
            this.beforeMoveEvent.fire(
                [
                K,
                O
 ]);

            K = this.cfg.getProperty("x");
            O = this.cfg.getProperty("y");
            this.cfg.refireEvent("iframe");
            this.moveEvent.fire(
                [
                K,
                O
 ]);
        },
        configX: function(M, L, N)
        {
            var K = L[0], O = this.cfg.getProperty("y");
            this.cfg.setProperty("x", K, true);
            this.cfg.setProperty("y", O, true);
            this.beforeMoveEvent.fire(
                [
                K,
                O
 ]);

            K = this.cfg.getProperty("x");
            O = this.cfg.getProperty("y");
            D.setX(this.element, K, true);
            this.cfg.setProperty("xy",
                [
                K,
                O
                ], true);

            this.cfg.refireEvent("iframe");
            this.moveEvent.fire(
                [
                K,
                O
 ]);
        },
        configY: function(M, L, N)
        {
            var K = this.cfg.getProperty("x"), O = L[0];
            this.cfg.setProperty("x", K, true);
            this.cfg.setProperty("y", O, true);
            this.beforeMoveEvent.fire(
                [
                K,
                O
 ]);

            K = this.cfg.getProperty("x");
            O = this.cfg.getProperty("y");
            D.setY(this.element, O, true);
            this.cfg.setProperty("xy",
                [
                K,
                O
                ], true);

            this.cfg.refireEvent("iframe");
            this.moveEvent.fire(
                [
                K,
                O
 ]);
        },
        showIframe: function()
        {
            var L = this.iframe, K;

            if (L)
            {
                K = this.element.parentNode;

                if (K != L.parentNode)
                {
                    this._addToParent(K, L);
                }
                L.style.display = "block";
            }
        },
        hideIframe: function()
        {
            if (this.iframe)
            {
                this.iframe.style.display = "none";
            }
        },
        syncIframe: function()
        {
            var K = this.iframe, M = this.element, O = B.IFRAME_OFFSET, L = (O * 2), N;

            if (K)
            {
                K.style.width = (M.offsetWidth + L + "px");
                K.style.height = (M.offsetHeight + L + "px");
                N = this.cfg.getProperty("xy");

                if (!F.isArray(N) || (isNaN(N[0]) || isNaN(N[1])))
                {
                    this.syncPosition();
                    N = this.cfg.getProperty("xy");
                }
                D.setXY(K,
                    [
                    (N[0] - O),
                    (N[1] - O)
 ]);
            }
        },
        stackIframe: function()
        {
            if (this.iframe)
            {
                var K = D.getStyle(this.element, "zIndex");

                if (!TOOLTIP.lang.isUndefined(K) && !isNaN(K))
                {
                    D.setStyle(this.iframe, "zIndex", (K - 1));
                }
            }
        },
        configIframe: function(N, M, O)
        {
            var K = M[0];

            function P()
{
    var R = this.iframe, S = this.element, T;

    if (!R)
    {
        if (!G)
        {
            G = document.createElement("iframe");

            if (this.isSecure)
            {
                G.src = B.IFRAME_SRC;
            }

            if (TOOLTIP.env.ua.ie)
            {
                G.style.filter = "alpha(opacity=0)";
                G.frameBorder = 0;
            }
            else
            {
                G.style.opacity = "0";
            }
            G.style.position = "absolute";
            G.style.border = "none";
            G.style.margin = "0";
            G.style.padding = "0";
            G.style.display = "none";
        }
        R = G.cloneNode(false);
        T = S.parentNode;
        var Q = T || document.body;
        this._addToParent(Q, R);
        this.iframe = R;
    }
    this.showIframe();
    this.syncIframe();
    this.stackIframe();

    if (!this._hasIframeEventListeners)
    {
        this.showEvent.subscribe(this.showIframe);
        this.hideEvent.subscribe(this.hideIframe);
        this.changeContentEvent.subscribe(this.syncIframe);
        this._hasIframeEventListeners = true;
    }
}

            function L()
{
    P.call(this);
    this.beforeShowEvent.unsubscribe(L);
    this._iframeDeferred = false;
}

            if (K)
            {
                if (this.cfg.getProperty("visible"))
                {
                    P.call(this);
                }
                else
                {
                    if (!this._iframeDeferred)
                    {
                        this.beforeShowEvent.subscribe(L);
                        this._iframeDeferred = true;
                    }
                }
            }
            else
            {
                this.hideIframe();

                if (this._hasIframeEventListeners)
                {
                    this.showEvent.unsubscribe(this.showIframe);
                    this.hideEvent.unsubscribe(this.hideIframe);
                    this.changeContentEvent.unsubscribe(this.syncIframe);
                    this._hasIframeEventListeners = false;
                }
            }
        },
        _primeXYFromDOM: function()
        {
            if (TOOLTIP.lang.isUndefined(this.cfg.getProperty("xy")))
            {
                this.syncPosition();
                this.cfg.refireEvent("xy");
                this.beforeShowEvent.unsubscribe(this._primeXYFromDOM);
            }
        },
        configConstrainToViewport: function(L, K, M)
        {
            var N = K[0];

            if (N)
            {
                if (!C.alreadySubscribed(this.beforeMoveEvent, this.enforceConstraints, this))
                {
                    this.beforeMoveEvent.subscribe(this.enforceConstraints, this, true);
                }

                if (!C.alreadySubscribed(this.beforeShowEvent, this._primeXYFromDOM))
                {
                    this.beforeShowEvent.subscribe(this._primeXYFromDOM);
                }
            }
            else
            {
                this.beforeShowEvent.unsubscribe(this._primeXYFromDOM);
                this.beforeMoveEvent.unsubscribe(this.enforceConstraints, this);
            }
        },
        configContext: function(M, L, O)
        {
            var Q = L[0], N, P, K;

            if (Q)
            {
                N = Q[0];
                P = Q[1];
                K = Q[2];

                if (N)
                {
                    if (typeof N == "string")
                    {
                        this.cfg.setProperty("context",
                            [
                            document.getElementById(N),
                            P,
                            K
                            ], true);
                    }

                    if (P && K)
                    {
                        this.align(P, K);
                    }
                }
            }
        },
        align: function(L, K)
        {
            var Q = this.cfg.getProperty("context"), P = this, O, N, R;

            function M(S, T)
{
    switch (L)
    {
        case B.TOP_LEFT:
            P.moveTo(T, S);
            break;

        case B.TOP_RIGHT:
            P.moveTo((T - N.offsetWidth), S);
            break;

        case B.BOTTOM_LEFT:
            P.moveTo(T, (S - N.offsetHeight));
            break;

        case B.BOTTOM_RIGHT:
            P.moveTo((T - N.offsetWidth), (S - N.offsetHeight));
            break;
    }
}

            if (Q)
            {
                O = Q[0];
                N = this.element;
                P = this;

                if (!L)
                {
                    L = Q[1];
                }

                if (!K)
                {
                    K = Q[2];
                }

                if (N && O)
                {
                    R = D.getRegion(O);

                    switch (K)
                    {
                        case B.TOP_LEFT:
                            M(R.top, R.left);
                            break;

                        case B.TOP_RIGHT:
                            M(R.top, R.right);
                            break;

                        case B.BOTTOM_LEFT:
                            M(R.bottom, R.left);
                            break;

                        case B.BOTTOM_RIGHT:
                            M(R.bottom, R.right);
                            break;
                    }
                }
            }
        },
        enforceConstraints: function(L, K, M)
        {
            var O = K[0];
            var N = this.getConstrainedXY(O[0], O[1]);
            this.cfg.setProperty("x", N[0], true);
            this.cfg.setProperty("y", N[1], true);
            this.cfg.setProperty("xy", N, true);
        },
        getConstrainedXY: function(V, T)
        {
            var N = B.VIEWPORT_OFFSET, U = D.getViewportWidth(), Q = D.getViewportHeight(),
                M = this.element.offsetHeight, S = this.element.offsetWidth, Y = D.getDocumentScrollLeft(),
                W = D.getDocumentScrollTop();
            var P = V;
            var L = T;

            if (S + N < U)
            {
                var R = Y + N;
                var X = Y + U - S - N;

                if (V < R)
                {
                    P = R;
                }
                else
                {
                    if (V > X)
                    {
                        P = X;
                    }
                }
            }
            else
            {
                P = N + Y;
            }

            if (M + N < Q)
            {
                var O = W + N;
                var K = W + Q - M - N;

                if (T < O)
                {
                    L = O;
                }
                else
                {
                    if (T > K)
                    {
                        L = K;
                    }
                }
            }
            else
            {
                L = N + W;
            }
            return [
            P,
            L
            ];
        },
        center: function()
        {
            var N = B.VIEWPORT_OFFSET, O = this.element.offsetWidth, M = this.element.offsetHeight,
                L = D.getViewportWidth(), P = D.getViewportHeight(), K, Q;

            if (O < L)
            {
                K = (L / 2) - (O / 2) + D.getDocumentScrollLeft();
            }
            else
            {
                K = N + D.getDocumentScrollLeft();
            }

            if (M < P)
            {
                Q = (P / 2) - (M / 2) + D.getDocumentScrollTop();
            }
            else
            {
                Q = N + D.getDocumentScrollTop();
            }
            this.cfg.setProperty("xy",
                [
                parseInt(K, 10),
                parseInt(Q, 10)
 ]);

            this.cfg.refireEvent("iframe");
        },
        syncPosition: function()
        {
            var K = D.getXY(this.element);
            this.cfg.setProperty("x", K[0], true);
            this.cfg.setProperty("y", K[1], true);
            this.cfg.setProperty("xy", K, true);
        },
        onDomResize: function(M, L)
        {
            var K = this;
            B.superclass.onDomResize.call(this, M, L);
            setTimeout(function()
            {
                K.syncPosition();
                K.cfg.refireEvent("iframe");
                K.cfg.refireEvent("context");
            }, 0);
        },
        bringToTop: function()
        {
            var O = [], N = this.element;

            function R(V, U)
{
    var X = D.getStyle(V, "zIndex"), W = D.getStyle(U, "zIndex"), T = (!X || isNaN(X)) ? 0 : parseInt(X, 10),
        S = (!W || isNaN(W)) ? 0 : parseInt(W, 10);

    if (T > S)
    {
        return -1;
    }
    else
    {
        if (T < S)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

            function M(U)
{
    var S = D.hasClass(U, B.CSS_OVERLAY), T = TOOLTIP.widget.Panel;

    if (S && !D.isAncestor(N, S))
    {
        if (T && D.hasClass(U, T.CSS_PANEL))
        {
            O[O.length] = U.parentNode;
        }
        else
        {
            O[O.length] = U;
        }
    }
}
            D.getElementsBy(M, "DIV", document.body);
            O.sort(R);
            var K = O[0], Q;

            if (K)
            {
                Q = D.getStyle(K, "zIndex");

                if (!isNaN(Q))
                {
                    var P = false;

                    if (K != N)
                    {
                        P = true;
                    }
                    else
                    {
                        if (O.length > 1)
                        {
                            var L = D.getStyle(O[1], "zIndex");

                            if (!isNaN(L) && (Q == L))
                            {
                                P = true;
                            }
                        }
                    }

                    if (P)
                    {
                        this.cfg.setProperty("zindex", (parseInt(Q, 10) + 2));
                    }
                }
            }
        },
        destroy: function()
        {
            if (this.iframe)
            {
                this.iframe.parentNode.removeChild(this.iframe);
            }
            this.iframe = null;
            B.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent, this);
            B.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent, this);
            B.superclass.destroy.call(this);
        },
        toString: function()
        {
            return "Overlay " + this.id;
        }
        });
}());
(function()
{
    TOOLTIP.widget.OverlayManager = function(G)
    {
        this.init(G);
 };
    var D = TOOLTIP.widget.Overlay, C = TOOLTIP.util.Event, E = TOOLTIP.util.Dom, B = TOOLTIP.util.Config, F = TOOLTIP.util.CustomEvent, A = TOOLTIP.widget.OverlayManager;
    A.CSS_FOCUSED = "focused";
    A.prototype =
        {
        constructor: A,
        overlays: null,
        initDefaultConfig: function()
        {
            this.cfg.addProperty("overlays",
                {
                suppressEvent: true
                });

            this.cfg.addProperty("focusevent",
                {
                value: "mousedown"
                });
        },
        init: function(I)
        {
            this.cfg = new B(this);
            this.initDefaultConfig();

            if (I)
            {
                this.cfg.applyConfig(I, true);
            }
            this.cfg.fireQueue();
            var H = null;
            this.getActive = function()
            {
                return H;
 };
            this.focus = function(J)
            {
                var K = this.find(J);

                if (K)
                {
                    if (H != K)
                    {
                        if (H)
                        {
                            H.blur();
                        }
                        this.bringToTop(K);
                        H = K;
                        E.addClass(H.element, A.CSS_FOCUSED);
                        K.focusEvent.fire();
                    }
                }
 };
            this.remove = function(K)
            {
                var M = this.find(K), J;

                if (M)
                {
                    if (H == M)
                    {
                        H = null;
                    }
                    var L = (M.element === null && M.cfg === null) ? true : false;

                    if (!L)
                    {
                        J = E.getStyle(M.element, "zIndex");
                        M.cfg.setProperty("zIndex", -1000, true);
                    }
                    this.overlays.sort(this.compareZIndexDesc);
                    this.overlays = this.overlays.slice(0, (this.overlays.length - 1));
                    M.hideEvent.unsubscribe(M.blur);
                    M.destroyEvent.unsubscribe(this._onOverlayDestroy, M);

                    if (!L)
                    {
                        C.removeListener(M.element, this.cfg.getProperty("focusevent"), this._onOverlayElementFocus);
                        M.cfg.setProperty("zIndex", J, true);
                        M.cfg.setProperty("manager", null);
                    }
                    M.focusEvent.unsubscribeAll();
                    M.blurEvent.unsubscribeAll();
                    M.focusEvent = null;
                    M.blurEvent = null;
                    M.focus = null;
                    M.blur = null;
                }
 };
            this.blurAll = function()
            {
                var K = this.overlays.length, J;

                if (K > 0)
                {
                    J = K - 1;

                    do
                    {
                        this.overlays[J].blur();
                    } while (J--);
                }
 };
            this._onOverlayBlur = function(K, J)
            {
                H = null;
 };
            var G = this.cfg.getProperty("overlays");

            if (!this.overlays)
            {
                this.overlays = [];
            }

            if (G)
            {
                this.register(G);
                this.overlays.sort(this.compareZIndexDesc);
            }
        },
        _onOverlayElementFocus: function(I)
        {
            var G = C.getTarget(I), H = this.close;

            if (H && (G == H || E.isAncestor(H, G)))
            {
                this.blur();
            }
            else
            {
                this.focus();
            }
        },
        _onOverlayDestroy: function(H, G, I)
        {
            this.remove(I);
        },
        register: function(G)
        {
            var K = this, L, I, H, J;

            if (G instanceof D)
            {
                G.cfg.addProperty("manager",
                    {
                    value: this
                    });

                G.focusEvent = G.createEvent("focus");
                G.focusEvent.signature = F.LIST;
                G.blurEvent = G.createEvent("blur");
                G.blurEvent.signature = F.LIST;
                G.focus = function()
                {
                    K.focus(this);
 };
                G.blur = function()
                {
                    if (K.getActive() == this)
                    {
                        E.removeClass(this.element, A.CSS_FOCUSED);
                        this.blurEvent.fire();
                    }
 };
                G.blurEvent.subscribe(K._onOverlayBlur);
                G.hideEvent.subscribe(G.blur);
                G.destroyEvent.subscribe(this._onOverlayDestroy, G, this);
                C.on(G.element, this.cfg.getProperty("focusevent"), this._onOverlayElementFocus, null, G);
                L = E.getStyle(G.element, "zIndex");

                if (!isNaN(L))
                {
                    G.cfg.setProperty("zIndex", parseInt(L, 10));
                }
                else
                {
                    G.cfg.setProperty("zIndex", 0);
                }
                this.overlays.push(G);
                this.bringToTop(G);
                return true;
            }
            else
            {
                if (G instanceof Array)
                {
                    I = 0;
                    J = G.length;

                    for (H = 0; H < J; H++)
                    {
                        if (this.register(G[H]))
                        {
                            I++;
                        }
                    }

                    if (I > 0)
                    {
                        return true;
                    }
                }
                else
                {
                    return false;
                }
            }
        },
        bringToTop: function(M)
        {
            var I = this.find(M), L, G, J;

            if (I)
            {
                J = this.overlays;
                J.sort(this.compareZIndexDesc);
                G = J[0];

                if (G)
                {
                    L = E.getStyle(G.element, "zIndex");

                    if (!isNaN(L))
                    {
                        var K = false;

                        if (G !== I)
                        {
                            K = true;
                        }
                        else
                        {
                            if (J.length > 1)
                            {
                                var H = E.getStyle(J[1].element, "zIndex");

                                if (!isNaN(H) && (L == H))
                                {
                                    K = true;
                                }
                            }
                        }

                        if (K)
                        {
                            I.cfg.setProperty("zindex", (parseInt(L, 10) + 2));
                        }
                    }
                    J.sort(this.compareZIndexDesc);
                }
            }
        },
        find: function(G)
        {
            var I = this.overlays, J = I.length, H;

            if (J > 0)
            {
                H = J - 1;

                if (G instanceof D)
                {
                    do
                    {
                        if (I[H] == G)
                        {
                            return I[H];
                        }
                    } while (H--);
                }
                else
                {
                    if (typeof G == "string")
                    {
                        do
                        {
                            if (I[H].id == G)
                            {
                                return I[H];
                            }
                        } while (H--);
                    }
                }
                return null;
            }
        },
        compareZIndexDesc: function(J, I)
        {
            var H = (J.cfg) ? J.cfg.getProperty("zIndex") : null, G = (I.cfg) ? I.cfg.getProperty("zIndex") : null;

            if (H === null && G === null)
            {
                return 0;
            }
            else
            {
                if (H === null)
                {
                    return 1;
                }
                else
                {
                    if (G === null)
                    {
                        return -1;
                    }
                    else
                    {
                        if (H > G)
                        {
                            return -1;
                        }
                        else
                        {
                            if (H < G)
                            {
                                return 1;
                            }
                            else
                            {
                                return 0;
                            }
                        }
                    }
                }
            }
        },
        showAll: function()
        {
            var H = this.overlays, I = H.length, G;

            if (I > 0)
            {
                G = I - 1;

                do
                {
                    H[G].show();
                } while (G--);
            }
        },
        hideAll: function()
        {
            var H = this.overlays, I = H.length, G;

            if (I > 0)
            {
                G = I - 1;

                do
                {
                    H[G].hide();
                } while (G--);
            }
        },
        toString: function()
        {
            return "OverlayManager";
        }
 };
}());
(function()
{
    TOOLTIP.widget.Tooltip = function(N, M)
    {
        TOOLTIP.widget.Tooltip.superclass.constructor.call(this, N, M);
 };
    var E = TOOLTIP.lang, L = TOOLTIP.util.Event, K = TOOLTIP.util.CustomEvent, C = TOOLTIP.util.Dom, G = TOOLTIP.widget.Tooltip,
        F, H =
        {
        "PREVENT_OVERLAP":
            {
            key: "preventoverlap",
            value: true,
            validator: E.isBoolean,
            supercedes:
                [
                "x",
                "y",
                "xy"
                ]
            },
        "SHOW_DELAY":
            {
            key: "showdelay",
            value: 200,
            validator: E.isNumber
            },
        "AUTO_DISMISS_DELAY":
            {
            key: "autodismissdelay",
            value: 5000,
            validator: E.isNumber
            },
        "HIDE_DELAY":
            {
            key: "hidedelay",
            value: 5000,
            validator: E.isNumber
            },
        "TEXT":
            {
            key: "text",
            suppressEvent: true
            },
        "CONTAINER":
            {
            key: "container"
            },
        "DISABLED":
            {
            key: "disabled",
            value: false,
            suppressEvent: true
            }
        }, A =
        {
        "CONTEXT_MOUSE_OVER": "contextMouseOver",
        "CONTEXT_MOUSE_OUT": "contextMouseOut",
        "CONTEXT_TRIGGER": "contextTrigger"
 };

    G.CSS_TOOLTIP = "yui-tt";

    function I(N, M, O)
{
    var R = O[0], P = O[1], Q = this.cfg, S = Q.getProperty("width");

    if (S == P)
    {
        Q.setProperty("width", R);
    }
    this.unsubscribe("hide", this._onHide, O);
}

    function D(N, M)
{
    var O = document.body, S = this.cfg, R = S.getProperty("width"), P, Q;

    if ((!R || R == "auto")
        && (S.getProperty("container") != O || S.getProperty("x") >= C.getViewportWidth()
            || S.getProperty("y") >= C.getViewportHeight()))
    {
        Q = this.element.cloneNode(true);
        Q.style.visibility = "hidden";
        Q.style.top = "0px";
        Q.style.left = "0px";
        O.appendChild(Q);
        P = (Q.offsetWidth + "px");
        O.removeChild(Q);
        Q = null;
        S.setProperty("width", P);
        S.refireEvent("xy");
        this.subscribe("hide", I, [ (R || ""), P ]);
    }
}

    function B(N, M, O)
{
    this.render(O);
}

    function J()
{
    L.onDOMReady(B, this.cfg.getProperty("container"), this);
}
    TOOLTIP.extend(G, TOOLTIP.widget.Overlay,
        {
        init: function(N, M)
        {
            G.superclass.init.call(this, N);
            this.beforeInitEvent.fire(G);
            C.addClass(this.element, G.CSS_TOOLTIP);

            if (M)
            {
                this.cfg.applyConfig(M, true);
            }
            this.cfg.queueProperty("visible", false);
            this.cfg.queueProperty("constraintoviewport", true);
            this.setBody("");
            this.subscribe("beforeShow", D);
            this.subscribe("init", J);
            this.subscribe("render", this.onRender);
            this.initEvent.fire(G);
        },
        initEvents: function()
        {
            G.superclass.initEvents.call(this);
            var M = K.LIST;
            this.contextMouseOverEvent = this.createEvent(A.CONTEXT_MOUSE_OVER);
            this.contextMouseOverEvent.signature = M;
            this.contextMouseOutEvent = this.createEvent(A.CONTEXT_MOUSE_OUT);
            this.contextMouseOutEvent.signature = M;
            this.contextTriggerEvent = this.createEvent(A.CONTEXT_TRIGGER);
            this.contextTriggerEvent.signature = M;
        },
        initDefaultConfig: function()
        {
            G.superclass.initDefaultConfig.call(this);
            this.cfg.addProperty(H.PREVENT_OVERLAP.key,
                {
                value: H.PREVENT_OVERLAP.value,
                validator: H.PREVENT_OVERLAP.validator,
                supercedes: H.PREVENT_OVERLAP.supercedes
                });

            this.cfg.addProperty(H.SHOW_DELAY.key,
                {
                handler: this.configShowDelay,
                value: 200,
                validator: H.SHOW_DELAY.validator
                });

            this.cfg.addProperty(H.AUTO_DISMISS_DELAY.key,
                {
                handler: this.configAutoDismissDelay,
                value: H.AUTO_DISMISS_DELAY.value,
                validator: H.AUTO_DISMISS_DELAY.validator
                });

            this.cfg.addProperty(H.HIDE_DELAY.key,
                {
                handler: this.configHideDelay,
                value: H.HIDE_DELAY.value,
                validator: H.HIDE_DELAY.validator
                });

            this.cfg.addProperty(H.TEXT.key,
                {
                handler: this.configText,
                suppressEvent: H.TEXT.suppressEvent
                });

            this.cfg.addProperty(H.CONTAINER.key,
                {
                handler: this.configContainer,
                value: document.body
                });

            this.cfg.addProperty(H.DISABLED.key,
                {
                handler: this.configContainer,
                value: H.DISABLED.value,
                supressEvent: H.DISABLED.suppressEvent
                });
        },
        configText: function(N, M, O)
        {
            var P = M[0];

            if (P)
            {
                this.setBody(P);
            }
        },
        configContainer: function(O, N, P)
        {
            var M = N[0];

            if (typeof M == "string")
            {
                this.cfg.setProperty("container", document.getElementById(M), true);
            }
        },
        _removeEventListeners: function()
        {
            var P = this._context, M, O, N;

            if (P)
            {
                M = P.length;

                if (M > 0)
                {
                    N = M - 1;

                    do
                    {
                        O = P[N];
                        L.removeListener(O, "mouseover", this.onContextMouseOver);
                        L.removeListener(O, "mousemove", this.onContextMouseMove);
                        L.removeListener(O, "mouseout", this.onContextMouseOut);
                    } while (N--);
                }
            }
        },
        configContext: function(R, N, S)
        {
            var Q = N[0], T, M, P, O;

            if (Q)
            {
                if (!(Q instanceof Array))
                {
                    if (typeof Q == "string")
                    {
                        this.cfg.setProperty("context", [document.getElementById(Q)], true);
                    }
                    else
                    {
                        this.cfg.setProperty("context", [Q], true);
                    }
                    Q = this.cfg.getProperty("context");
                }
                this._removeEventListeners();
                this._context = Q;
                T = this._context;

                if (T)
                {
                    M = T.length;

                    if (M > 0)
                    {
                        O = M - 1;

                        do
                        {
                            P = T[O];
                            L.on(P, "mouseover", this.onContextMouseOver, this);
                            L.on(P, "mousemove", this.onContextMouseMove, this);
                            L.on(P, "mouseout", this.onContextMouseOut, this);
                        } while (O--);
                    }
                }
            }
        },
        onContextMouseMove: function(N, M)
        {
            M.pageX = L.getPageX(N);
            M.pageY = L.getPageY(N);
        },
        onContextMouseOver: function(O, N)
        {
            var M = this;

            if (M.title)
            {
                N._tempTitle = M.title;
                M.title = "";
            }

            if (N.fireEvent("contextMouseOver", M, O) !== false && !N.cfg.getProperty("disabled"))
            {
                if (N.hideProcId)
                {
                    clearTimeout(N.hideProcId);
                    N.hideProcId = null;
                }
                L.on(M, "mousemove", N.onContextMouseMove, N);
                N.showProcId = N.doShow(O, M);
            }
        },
        onContextMouseOut: function(O, N)
        {
            var M = this;

            if (N._tempTitle)
            {
                M.title = N._tempTitle;
                N._tempTitle = null;
            }

            if (N.showProcId)
            {
                clearTimeout(N.showProcId);
                N.showProcId = null;
            }

            if (N.hideProcId)
            {
                clearTimeout(N.hideProcId);
                N.hideProcId = null;
            }
            N.fireEvent("contextMouseOut", M, O);
            N.hideProcId = setTimeout(function()
            {
                N.hide();
            }, N.cfg.getProperty("hidedelay"));
        },
        doShow: function(O, M)
        {
            var P = 25, N = this;

            if (TOOLTIP.env.ua.opera && M.tagName && M.tagName.toUpperCase() == "A")
            {
                P += 12;
            }
            return setTimeout(function()
            {
                var Q = N.cfg.getProperty("text");

                if (N._tempTitle && (Q === "" || TOOLTIP.lang.isUndefined(Q) || TOOLTIP.lang.isNull(Q)))
                {
                    N.setBody(N._tempTitle);
                }
                else
                {
                    N.cfg.refireEvent("text");
                }
                N.moveTo(N.pageX, N.pageY + P);

                if (N.cfg.getProperty("preventoverlap"))
                {
                    N.preventOverlap(N.pageX, N.pageY);
                }
                L.removeListener(M, "mousemove", N.onContextMouseMove);
                N.contextTriggerEvent.fire(M);
                N.show();
                N.hideProcId = N.doHide();
            }, this.cfg.getProperty("showdelay"));
        },
        doHide: function()
        {
            var M = this;
            return setTimeout(function()
            {
                M.hide();
            }, this.cfg.getProperty("autodismissdelay"));
        },
        preventOverlap: function(Q, P)
        {
            var M = this.element.offsetHeight, O = new TOOLTIP.util.Point(Q, P), N = C.getRegion(this.element);
            N.top -= 5;
            N.left -= 5;
            N.right += 5;
            N.bottom += 5;

            if (N.contains(O))
            {
                this.cfg.setProperty("y", (P - M - 5));
            }
        },
        onRender: function(Q, P)
        {
            function R()
{
    var U = this.element, T = this._shadow;

    if (T)
    {
        T.style.width = (U.offsetWidth + 6) + "px";
        T.style.height = (U.offsetHeight + 1) + "px";
    }
}

            function N()
{
    C.addClass(this._shadow, "yui-tt-shadow-visible");
}

            function M()
{
    C.removeClass(this._shadow, "yui-tt-shadow-visible");
}

            function S()
{
    var V = this._shadow, U, T, X, W;

    if (!V)
    {
        U = this.element;
        T = TOOLTIP.widget.Module;
        X = TOOLTIP.env.ua.ie;
        W = this;

        if (!F)
        {
            F = document.createElement("div");
            F.className = "yui-tt-shadow";
        }
        V = F.cloneNode(false);
        U.appendChild(V);
        this._shadow = V;
        N.call(this);
        this.subscribe("beforeShow", N);
        this.subscribe("beforeHide", M);

        if (X == 6 || (X == 7 && document.compatMode == "BackCompat"))
        {
            window.setTimeout(function()
            {
                R.call(W);
            }, 0);
            this.cfg.subscribeToConfigEvent("width", R);
            this.cfg.subscribeToConfigEvent("height", R);
            this.subscribe("changeContent", R);
            T.textResizeEvent.subscribe(R, this, true);
            this.subscribe("destroy", function()
            {
                T.textResizeEvent.unsubscribe(R, this);
            });
        }
    }
}

            function O()
{
    S.call(this);
    this.unsubscribe("beforeShow", O);
}

            if (this.cfg.getProperty("visible"))
            {
                S.call(this);
            }
            else
            {
                this.subscribe("beforeShow", O);
            }
        },
        destroy: function()
        {
            this._removeEventListeners();
            G.superclass.destroy.call(this);
        },
        toString: function()
        {
            return "Tooltip " + this.id;
        }
        });
}());
(function()
{
    TOOLTIP.widget.Panel = function(R, Q)
    {
        TOOLTIP.widget.Panel.superclass.constructor.call(this, R, Q);
 };
    var I = TOOLTIP.lang, E = TOOLTIP.util.DD, F = TOOLTIP.util.Dom, P = TOOLTIP.util.Event, B = TOOLTIP.widget.Overlay,
        O = TOOLTIP.util.CustomEvent, C = TOOLTIP.util.Config, N = TOOLTIP.widget.Panel, H, L, D, A =
        {
        "SHOW_MASK": "showMask",
        "HIDE_MASK": "hideMask",
        "DRAG": "drag"
        }, J =
        {
        "CLOSE":
            {
            key: "close",
            value: true,
            validator: I.isBoolean,
            supercedes: ["visible"]
            },
        "DRAGGABLE":
            {
            key: "draggable",
            value: (E ? true : false),
            validator: I.isBoolean,
            supercedes: ["visible"]
            },
        "DRAG_ONLY":
            {
            key: "dragonly",
            value: false,
            validator: I.isBoolean,
            supercedes: ["draggable"]
            },
        "UNDERLAY":
            {
            key: "underlay",
            value: "shadow",
            supercedes: ["visible"]
            },
        "MODAL":
            {
            key: "modal",
            value: false,
            validator: I.isBoolean,
            supercedes:
                [
                "visible",
                "zindex"
                ]
            },
        "KEY_LISTENERS":
            {
            key: "keylisteners",
            suppressEvent: true,
            supercedes: ["visible"]
            }
 };

    N.CSS_PANEL = "yui-panel";
    N.CSS_PANEL_CONTAINER = "yui-panel-container";
    N.FOCUSABLE =
        [
        "a",
        "button",
        "select",
        "textarea",
        "input"
        ];

    function M(R, Q)
{
    if (!this.header && this.cfg.getProperty("draggable"))
    {
        this.setHeader("&#160;");
    }
}

    function K(R, Q, S)
{
    var V = S[0], T = S[1], U = this.cfg, W = U.getProperty("width");

    if (W == T)
    {
        U.setProperty("width", V);
    }
    this.unsubscribe("hide", K, S);
}

    function G(R, Q)
{
    var V = TOOLTIP.env.ua.ie, U, T, S;

    if (V == 6 || (V == 7 && document.compatMode == "BackCompat"))
    {
        U = this.cfg;
        T = U.getProperty("width");

        if (!T || T == "auto")
        {
            S = (this.element.offsetWidth + "px");
            U.setProperty("width", S);
            this.subscribe("hide", K,
                [
                (T || ""),
                S
 ]);
        }
    }
}

    TOOLTIP.extend(N, B,
        {
        init: function(R, Q)
        {
            N.superclass.init.call(this, R);
            this.beforeInitEvent.fire(N);
            F.addClass(this.element, N.CSS_PANEL);
            this.buildWrapper();

            if (Q)
            {
                this.cfg.applyConfig(Q, true);
            }
            this.subscribe("showMask", this._addFocusHandlers);
            this.subscribe("hideMask", this._removeFocusHandlers);
            this.subscribe("beforeRender", M);
            this.initEvent.fire(N);
        },
        _onElementFocus: function(Q)
        {
            this.blur();
        },
        _addFocusHandlers: function(Y, S)
        {
            var V = this, Z = "focus", U = "hidden";

            function X(a)
{
    if (a.type !== U && !F.isAncestor(V.element, a))
    {
        P.on(a, Z, V._onElementFocus);
        return true;
    }
    return false;
}
            var W = N.FOCUSABLE, Q = W.length, T = [];

            for (var R = 0; R < Q; R++)
            {
                T = T.concat(F.getElementsBy(X, W[R]));
            }
            this.focusableElements = T;
        },
        _removeFocusHandlers: function(T, S)
        {
            var V = this.focusableElements, Q = V.length, R = "focus";

            if (V)
            {
                for (var U = 0; U < Q; U++)
                {
                    P.removeListener(V[U], R, this._onElementFocus);
                }
            }
        },
        initEvents: function()
        {
            N.superclass.initEvents.call(this);
            var Q = O.LIST;
            this.showMaskEvent = this.createEvent(A.SHOW_MASK);
            this.showMaskEvent.signature = Q;
            this.hideMaskEvent = this.createEvent(A.HIDE_MASK);
            this.hideMaskEvent.signature = Q;
            this.dragEvent = this.createEvent(A.DRAG);
            this.dragEvent.signature = Q;
        },
        initDefaultConfig: function()
        {
            N.superclass.initDefaultConfig.call(this);
            this.cfg.addProperty(J.CLOSE.key,
                {
                handler: this.configClose,
                value: J.CLOSE.value,
                validator: J.CLOSE.validator,
                supercedes: J.CLOSE.supercedes
                });

            this.cfg.addProperty(J.DRAGGABLE.key,
                {
                handler: this.configDraggable,
                value: J.DRAGGABLE.value,
                validator: J.DRAGGABLE.validator,
                supercedes: J.DRAGGABLE.supercedes
                });

            this.cfg.addProperty(J.DRAG_ONLY.key,
                {
                value: J.DRAG_ONLY.value,
                validator: J.DRAG_ONLY.validator,
                supercedes: J.DRAG_ONLY.supercedes
                });

            this.cfg.addProperty(J.UNDERLAY.key,
                {
                handler: this.configUnderlay,
                value: J.UNDERLAY.value,
                supercedes: J.UNDERLAY.supercedes
                });

            this.cfg.addProperty(J.MODAL.key,
                {
                handler: this.configModal,
                value: J.MODAL.value,
                validator: J.MODAL.validator,
                supercedes: J.MODAL.supercedes
                });

            this.cfg.addProperty(J.KEY_LISTENERS.key,
                {
                handler: this.configKeyListeners,
                suppressEvent: J.KEY_LISTENERS.suppressEvent,
                supercedes: J.KEY_LISTENERS.supercedes
                });
        },
        configClose: function(S, Q, U)
        {
            var V = Q[0], R = this.close;

            function T(X, W)
{
    W.hide();
}

            if (V)
            {
                if (!R)
                {
                    if (!D)
                    {
                        D = document.createElement("span");
                        D.innerHTML = "&#160;";
                        D.className = "container-close";
                    }
                    R = D.cloneNode(true);
                    this.innerElement.appendChild(R);
                    P.on(R, "click", T, this);
                    this.close = R;
                }
                else
                {
                    R.style.display = "block";
                }
            }
            else
            {
                if (R)
                {
                    R.style.display = "none";
                }
            }
        },
        configDraggable: function(R, Q, S)
        {
            var T = Q[0];

            if (T)
            {
                if (!E)
                {
                    this.cfg.setProperty("draggable", false);
                    return;
                }

                if (this.header)
                {
                    F.setStyle(this.header, "cursor", "move");
                    this.registerDragDrop();
                }
                this.subscribe("beforeShow", G);
            }
            else
            {
                if (this.dd)
                {
                    this.dd.unreg();
                }

                if (this.header)
                {
                    F.setStyle(this.header, "cursor", "auto");
                }
                this.unsubscribe("beforeShow", G);
            }
        },
        configUnderlay: function(b, a, V)
        {
            var Z = TOOLTIP.env.ua, X = (this.platform == "mac" && Z.gecko),
                Y = (Z.ie == 6 || (Z.ie == 7 && document.compatMode == "BackCompat")), c = a[0].toLowerCase(),
                R = this.underlay, S = this.element;

            function d()
{
    var e = this.underlay;
    F.addClass(e, "yui-force-redraw");
    window.setTimeout(function()
    {
        F.removeClass(e, "yui-force-redraw");
    }, 0);
}

            function T()
{
    var e = false;

    if (!R)
    {
        if (!L)
        {
            L = document.createElement("div");
            L.className = "underlay";
        }
        R = L.cloneNode(false);
        this.element.appendChild(R);
        this.underlay = R;

        if (Y)
        {
            this.sizeUnderlay();
            this.cfg.subscribeToConfigEvent("width", this.sizeUnderlay);
            this.cfg.subscribeToConfigEvent("height", this.sizeUnderlay);
            this.changeContentEvent.subscribe(this.sizeUnderlay);
            TOOLTIP.widget.Module.textResizeEvent.subscribe(this.sizeUnderlay, this, true);
        }

        if (Z.webkit && Z.webkit < 420)
        {
            this.changeContentEvent.subscribe(d);
        }
        e = true;
    }
}

            function W()
{
    var e = T.call(this);

    if (!e && Y)
    {
        this.sizeUnderlay();
    }
    this._underlayDeferred = false;
    this.beforeShowEvent.unsubscribe(W);
}

            function U()
{
    if (this._underlayDeferred)
    {
        this.beforeShowEvent.unsubscribe(W);
        this._underlayDeferred = false;
    }

    if (R)
    {
        this.cfg.unsubscribeFromConfigEvent("width", this.sizeUnderlay);
        this.cfg.unsubscribeFromConfigEvent("height", this.sizeUnderlay);
        this.changeContentEvent.unsubscribe(this.sizeUnderlay);
        this.changeContentEvent.unsubscribe(d);
        TOOLTIP.widget.Module.textResizeEvent.unsubscribe(this.sizeUnderlay, this, true);
        this.element.removeChild(R);
        this.underlay = null;
    }
}

            switch (c)
            {
                case "shadow":
                    F.removeClass(S, "matte");
                    F.addClass(S, "shadow");
                    break;

                case "matte":
                    if (!X)
                    {
                        U.call(this);
                    }
                    F.removeClass(S, "shadow");
                    F.addClass(S, "matte");
                    break;

                default:
                    if (!X)
                    {
                        U.call(this);
                    }
                    F.removeClass(S, "shadow");
                    F.removeClass(S, "matte");
                    break;
            }

            if ((c == "shadow") || (X && !R))
            {
                if (this.cfg.getProperty("visible"))
                {
                    var Q = T.call(this);

                    if (!Q && Y)
                    {
                        this.sizeUnderlay();
                    }
                }
                else
                {
                    if (!this._underlayDeferred)
                    {
                        this.beforeShowEvent.subscribe(W);
                        this._underlayDeferred = true;
                    }
                }
            }
        },
        configModal: function(R, Q, T)
        {
            var S = Q[0];

            if (S)
            {
                if (!this._hasModalityEventListeners)
                {
                    this.subscribe("beforeShow", this.buildMask);
                    this.subscribe("beforeShow", this.bringToTop);
                    this.subscribe("beforeShow", this.showMask);
                    this.subscribe("hide", this.hideMask);
                    B.windowResizeEvent.subscribe(this.sizeMask, this, true);
                    this._hasModalityEventListeners = true;
                }
            }
            else
            {
                if (this._hasModalityEventListeners)
                {
                    if (this.cfg.getProperty("visible"))
                    {
                        this.hideMask();
                        this.removeMask();
                    }
                    this.unsubscribe("beforeShow", this.buildMask);
                    this.unsubscribe("beforeShow", this.bringToTop);
                    this.unsubscribe("beforeShow", this.showMask);
                    this.unsubscribe("hide", this.hideMask);
                    B.windowResizeEvent.unsubscribe(this.sizeMask, this);
                    this._hasModalityEventListeners = false;
                }
            }
        },
        removeMask: function()
        {
            var R = this.mask, Q;

            if (R)
            {
                this.hideMask();
                Q = R.parentNode;

                if (Q)
                {
                    Q.removeChild(R);
                }
                this.mask = null;
            }
        },
        configKeyListeners: function(T, Q, W)
        {
            var S = Q[0], V, U, R;

            if (S)
            {
                if (S instanceof Array)
                {
                    U = S.length;

                    for (R = 0; R < U; R++)
                    {
                        V = S[R];

                        if (!C.alreadySubscribed(this.showEvent, V.enable, V))
                        {
                            this.showEvent.subscribe(V.enable, V, true);
                        }

                        if (!C.alreadySubscribed(this.hideEvent, V.disable, V))
                        {
                            this.hideEvent.subscribe(V.disable, V, true);
                            this.destroyEvent.subscribe(V.disable, V, true);
                        }
                    }
                }
                else
                {
                    if (!C.alreadySubscribed(this.showEvent, S.enable, S))
                    {
                        this.showEvent.subscribe(S.enable, S, true);
                    }

                    if (!C.alreadySubscribed(this.hideEvent, S.disable, S))
                    {
                        this.hideEvent.subscribe(S.disable, S, true);
                        this.destroyEvent.subscribe(S.disable, S, true);
                    }
                }
            }
        },
        configHeight: function(T, R, U)
        {
            var Q = R[0], S = this.innerElement;
            F.setStyle(S, "height", Q);
            this.cfg.refireEvent("iframe");
        },
        configWidth: function(T, Q, U)
        {
            var S = Q[0], R = this.innerElement;
            F.setStyle(R, "width", S);
            this.cfg.refireEvent("iframe");
        },
        configzIndex: function(R, Q, T)
        {
            N.superclass.configzIndex.call(this, R, Q, T);

            if (this.mask || this.cfg.getProperty("modal") === true)
            {
                var S = F.getStyle(this.element, "zIndex");

                if (!S || isNaN(S))
                {
                    S = 0;
                }

                if (S === 0)
                {
                    this.cfg.setProperty("zIndex", 1);
                }
                else
                {
                    this.stackMask();
                }
            }
        },
        buildWrapper: function()
        {
            var S = this.element.parentNode, Q = this.element, R = document.createElement("div");
            R.className = N.CSS_PANEL_CONTAINER;
            R.id = Q.id + "_c";

            if (S)
            {
                S.insertBefore(R, Q);
            }
            R.appendChild(Q);
            this.element = R;
            this.innerElement = Q;
            F.setStyle(this.innerElement, "visibility", "inherit");
        },
        sizeUnderlay: function()
        {
            var R = this.underlay, Q;

            if (R)
            {
                Q = this.element;
                R.style.width = Q.offsetWidth + "px";
                R.style.height = Q.offsetHeight + "px";
            }
        },
        registerDragDrop: function()
        {
            var R = this;

            if (this.header)
            {
                if (!E)
                {
                    return;
                }
                var Q = (this.cfg.getProperty("dragonly") === true);
                this.dd = new E(this.element.id, this.id,
                    {
                    dragOnly: Q
                    });

                if (!this.header.id)
                {
                    this.header.id = this.id + "_h";
                }
                this.dd.startDrag = function()
                {
                    var T, V, S, Y, X, W;

                    if (TOOLTIP.env.ua.ie == 6)
                    {
                        F.addClass(R.element, "drag");
                    }

                    if (R.cfg.getProperty("constraintoviewport"))
                    {
                        var U = B.VIEWPORT_OFFSET;
                        T = R.element.offsetHeight;
                        V = R.element.offsetWidth;
                        S = F.getViewportWidth();
                        Y = F.getViewportHeight();
                        X = F.getDocumentScrollLeft();
                        W = F.getDocumentScrollTop();

                        if (T + U < Y)
                        {
                            this.minY = W + U;
                            this.maxY = W + Y - T - U;
                        }
                        else
                        {
                            this.minY = W + U;
                            this.maxY = W + U;
                        }

                        if (V + U < S)
                        {
                            this.minX = X + U;
                            this.maxX = X + S - V - U;
                        }
                        else
                        {
                            this.minX = X + U;
                            this.maxX = X + U;
                        }
                        this.constrainX = true;
                        this.constrainY = true;
                    }
                    else
                    {
                        this.constrainX = false;
                        this.constrainY = false;
                    }
                    R.dragEvent.fire("startDrag", arguments);
 };
                this.dd.onDrag = function()
                {
                    R.syncPosition();
                    R.cfg.refireEvent("iframe");

                    if (this.platform == "mac" && TOOLTIP.env.ua.gecko)
                    {
                        this.showMacGeckoScrollbars();
                    }
                    R.dragEvent.fire("onDrag", arguments);
 };
                this.dd.endDrag = function()
                {
                    if (TOOLTIP.env.ua.ie == 6)
                    {
                        F.removeClass(R.element, "drag");
                    }
                    R.dragEvent.fire("endDrag", arguments);
                    R.moveEvent.fire(R.cfg.getProperty("xy"));
 };
                this.dd.setHandleElId(this.header.id);
                this.dd.addInvalidHandleType("INPUT");
                this.dd.addInvalidHandleType("SELECT");
                this.dd.addInvalidHandleType("TEXTAREA");
            }
        },
        buildMask: function()
        {
            var Q = this.mask;

            if (!Q)
            {
                if (!H)
                {
                    H = document.createElement("div");
                    H.className = "mask";
                    H.innerHTML = "&#160;";
                }
                Q = H.cloneNode(true);
                Q.id = this.id + "_mask";
                document.body.insertBefore(Q, document.body.firstChild);
                this.mask = Q;

                if (TOOLTIP.env.ua.gecko && this.platform == "mac")
                {
                    F.addClass(this.mask, "block-scrollbars");
                }
                this.stackMask();
            }
        },
        hideMask: function()
        {
            if (this.cfg.getProperty("modal") && this.mask)
            {
                this.mask.style.display = "none";
                this.hideMaskEvent.fire();
                F.removeClass(document.body, "masked");
            }
        },
        showMask: function()
        {
            if (this.cfg.getProperty("modal") && this.mask)
            {
                F.addClass(document.body, "masked");
                this.sizeMask();
                this.mask.style.display = "block";
                this.showMaskEvent.fire();
            }
        },
        sizeMask: function()
        {
            if (this.mask)
            {
                this.mask.style.height = F.getDocumentHeight() + "px";
                this.mask.style.width = F.getDocumentWidth() + "px";
            }
        },
        stackMask: function()
        {
            if (this.mask)
            {
                var Q = F.getStyle(this.element, "zIndex");

                if (!TOOLTIP.lang.isUndefined(Q) && !isNaN(Q))
                {
                    F.setStyle(this.mask, "zIndex", Q - 1);
                }
            }
        },
        render: function(Q)
        {
            return N.superclass.render.call(this, Q, this.innerElement);
        },
        destroy: function()
        {
            B.windowResizeEvent.unsubscribe(this.sizeMask, this);
            this.removeMask();

            if (this.close)
            {
                P.purgeElement(this.close);
            }
            N.superclass.destroy.call(this);
        },
        toString: function()
        {
            return "Panel " + this.id;
        }
        });
}());
(function()
{
    TOOLTIP.widget.Dialog = function(L, K)
    {
        TOOLTIP.widget.Dialog.superclass.constructor.call(this, L, K);
 };
    var J = TOOLTIP.util.Event, I = TOOLTIP.util.CustomEvent, D = TOOLTIP.util.Dom, B = TOOLTIP.util.KeyListener,
        H = TOOLTIP.util.Connect, F = TOOLTIP.widget.Dialog, E = TOOLTIP.lang, A =
        {
        "BEFORE_SUBMIT": "beforeSubmit",
        "SUBMIT": "submit",
        "MANUAL_SUBMIT": "manualSubmit",
        "ASYNC_SUBMIT": "asyncSubmit",
        "FORM_SUBMIT": "formSubmit",
        "CANCEL": "cancel"
        }, G =
        {
        "POST_METHOD":
            {
            key: "postmethod",
            value: "async"
            },
        "BUTTONS":
            {
            key: "buttons",
            value: "none"
            },
        "HIDEAFTERSUBMIT":
            {
            key: "hideaftersubmit",
            value: true
            }
 };

    F.CSS_DIALOG = "yui-dialog";

    function C()
{
    var N = this._aButtons, L, M, K;

    if (E.isArray(N))
    {
        L = N.length;

        if (L > 0)
        {
            K = L - 1;

            do
            {
                M = N[K];

                if (TOOLTIP.widget.Button && M instanceof TOOLTIP.widget.Button)
                {
                    M.destroy();
                }
                else
                {
                    if (M.tagName.toUpperCase() == "BUTTON")
                    {
                        J.purgeElement(M);
                        J.purgeElement(M, false);
                    }
                }
            } while (K--);
        }
    }
}
    TOOLTIP.extend(F, TOOLTIP.widget.Panel,
        {
        form: null,
        initDefaultConfig: function()
        {
            F.superclass.initDefaultConfig.call(this);
            this.callback =
                {
                success: null,
                failure: null,
                argument: null
 };

            this.cfg.addProperty(G.POST_METHOD.key,
                {
                handler: this.configPostMethod,
                value: G.POST_METHOD.value,
                validator: function(K)
                {
                    if (K != "form" && K != "async" && K != "none" && K != "manual")
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                });
            this.cfg.addProperty(G.HIDEAFTERSUBMIT.key,
                {
                value: G.HIDEAFTERSUBMIT.value
                });

            this.cfg.addProperty(G.BUTTONS.key,
                {
                handler: this.configButtons,
                value: G.BUTTONS.value
                });
        },
        initEvents: function()
        {
            F.superclass.initEvents.call(this);
            var K = I.LIST;
            this.beforeSubmitEvent = this.createEvent(A.BEFORE_SUBMIT);
            this.beforeSubmitEvent.signature = K;
            this.submitEvent = this.createEvent(A.SUBMIT);
            this.submitEvent.signature = K;
            this.manualSubmitEvent = this.createEvent(A.MANUAL_SUBMIT);
            this.manualSubmitEvent.signature = K;
            this.asyncSubmitEvent = this.createEvent(A.ASYNC_SUBMIT);
            this.asyncSubmitEvent.signature = K;
            this.formSubmitEvent = this.createEvent(A.FORM_SUBMIT);
            this.formSubmitEvent.signature = K;
            this.cancelEvent = this.createEvent(A.CANCEL);
            this.cancelEvent.signature = K;
        },
        init: function(L, K)
        {
            F.superclass.init.call(this, L);
            this.beforeInitEvent.fire(F);
            D.addClass(this.element, F.CSS_DIALOG);
            this.cfg.setProperty("visible", false);

            if (K)
            {
                this.cfg.applyConfig(K, true);
            }
            this.showEvent.subscribe(this.focusFirst, this, true);
            this.beforeHideEvent.subscribe(this.blurButtons, this, true);
            this.subscribe("changeBody", this.registerForm);
            this.initEvent.fire(F);
        },
        doSubmit: function()
        {
            var Q = this.form, O = false, N = false, P, K, M, L;

            switch (this.cfg.getProperty("postmethod"))
            {
                case "async":
                    P = Q.elements;
                    K = P.length;

                    if (K > 0)
                    {
                        M = K - 1;

                        do
                        {
                            if (P[M].type == "file")
                            {
                                O = true;
                                break;
                            }
                        } while (M--);
                    }

                    if (O && TOOLTIP.env.ua.ie && this.isSecure)
                    {
                        N = true;
                    }
                    L = (Q.getAttribute("method") || "POST").toUpperCase();
                    H.setForm(Q, O, N);
                    H.asyncRequest(L, Q.getAttribute("action"), this.callback);
                    this.asyncSubmitEvent.fire();
                    break;

                case "form":
                    Q.submit();
                    this.formSubmitEvent.fire();
                    break;

                case "none":
                case "manual":
                    this.manualSubmitEvent.fire();
                    break;
            }
        },
        registerForm: function()
        {
            var M = this.element.getElementsByTagName("form")[0], L = this, K, N;

            if (this.form)
            {
                if (this.form == M && D.isAncestor(this.element, this.form))
                {
                    return;
                }
                else
                {
                    J.purgeElement(this.form);
                    this.form = null;
                }
            }

            if (!M)
            {
                M = document.createElement("form");
                M.name = "frm_" + this.id;
                this.body.appendChild(M);
            }

            if (M)
            {
                this.form = M;
                J.on(M, "submit", function(O)
                {
                    J.stopEvent(O);
                    this.submit();
                    this.form.blur();
                }, this, true);
                this.firstFormElement = function()
                {
                    var Q, P, O = M.elements.length;

                    for (Q = 0; Q < O; Q++)
                    {
                        P = M.elements[Q];

                        if (P.focus && !P.disabled && P.type != "hidden")
                        {
                            return P;
                        }
                    }
                    return null;
                }();
                this.lastFormElement = function()
                {
                    var Q, P, O = M.elements.length;

                    for (Q = O - 1; Q >= 0; Q--)
                    {
                        P = M.elements[Q];

                        if (P.focus && !P.disabled && P.type != "hidden")
                        {
                            return P;
                        }
                    }
                    return null;
                }();

                if (this.cfg.getProperty("modal"))
                {
                    K = this.firstFormElement || this.firstButton;

                    if (K)
                    {
                        this.preventBackTab = new B(K,
                            {
                            shift: true,
                            keys: 9
                            },
                            {
                            fn: L.focusLast,
                            scope: L,
                            correctScope: true
                            });

                        this.showEvent.subscribe(this.preventBackTab.enable, this.preventBackTab, true);
                        this.hideEvent.subscribe(this.preventBackTab.disable, this.preventBackTab, true);
                    }
                    N = this.lastButton || this.lastFormElement;

                    if (N)
                    {
                        this.preventTabOut = new B(N,
                            {
                            shift: false,
                            keys: 9
                            },
                            {
                            fn: L.focusFirst,
                            scope: L,
                            correctScope: true
                            });

                        this.showEvent.subscribe(this.preventTabOut.enable, this.preventTabOut, true);
                        this.hideEvent.subscribe(this.preventTabOut.disable, this.preventTabOut, true);
                    }
                }
            }
        },
        configClose: function(M, K, N)
        {
            var O = K[0];

            function L(Q, P)
{
    P.cancel();
}

            if (O)
            {
                if (!this.close)
                {
                    this.close = document.createElement("div");
                    D.addClass(this.close, "container-close");
                    this.close.innerHTML = "&#160;";
                    this.innerElement.appendChild(this.close);
                    J.on(this.close, "click", L, this);
                }
                else
                {
                    this.close.style.display = "block";
                }
            }
            else
            {
                if (this.close)
                {
                    this.close.style.display = "none";
                }
            }
        },
        configButtons: function(U, T, O)
        {
            var P = TOOLTIP.widget.Button, W = T[0], M = this.innerElement, V, R, L, S, Q, K, N;
            C.call(this);
            this._aButtons = null;

            if (E.isArray(W))
            {
                Q = document.createElement("span");
                Q.className = "button-group";
                S = W.length;
                this._aButtons = [];

                for (N = 0; N < S; N++)
                {
                    V = W[N];

                    if (P)
                    {
                        L = new P(
                            {
                            label: V.text,
                            container: Q
                            });

                        R = L.get("element");

                        if (V.isDefault)
                        {
                            L.addClass("default");
                            this.defaultHtmlButton = R;
                        }

                        if (E.isFunction(V.handler))
                        {
                            L.set("onclick",
                                {
                                fn: V.handler,
                                obj: this,
                                scope: this
                                });
                        }
                        else
                        {
                            if (E.isObject(V.handler) && E.isFunction(V.handler.fn))
                            {
                                L.set("onclick",
                                    {
                                    fn: V.handler.fn,
                                    obj: ((!E.isUndefined(V.handler.obj)) ? V.handler.obj : this),
                                    scope: (V.handler.scope || this)
                                    });
                            }
                        }

                        this._aButtons[this._aButtons.length] = L;
                    }
                    else
                    {
                        R = document.createElement("button");
                        R.setAttribute("type", "button");

                        if (V.isDefault)
                        {
                            R.className = "default";
                            this.defaultHtmlButton = R;
                        }
                        R.innerHTML = V.text;

                        if (E.isFunction(V.handler))
                        {
                            J.on(R, "click", V.handler, this, true);
                        }
                        else
                        {
                            if (E.isObject(V.handler) && E.isFunction(V.handler.fn))
                            {
                                J.on(R, "click", V.handler.fn, ((!E.isUndefined(V.handler.obj))
                                    ? V.handler.obj : this), (V.handler.scope || this));
                            }
                        }
                        Q.appendChild(R);
                        this._aButtons[this._aButtons.length] = R;
                    }
                    V.htmlButton = R;

                    if (N === 0)
                    {
                        this.firstButton = R;
                    }

                    if (N == (S - 1))
                    {
                        this.lastButton = R;
                    }
                }
                this.setFooter(Q);
                K = this.footer;

                if (D.inDocument(this.element) && !D.isAncestor(M, K))
                {
                    M.appendChild(K);
                }
                this.buttonSpan = Q;
            }
            else
            {
                Q = this.buttonSpan;
                K = this.footer;

                if (Q && K)
                {
                    K.removeChild(Q);
                    this.buttonSpan = null;
                    this.firstButton = null;
                    this.lastButton = null;
                    this.defaultHtmlButton = null;
                }
            }
            this.cfg.refireEvent("iframe");
            this.cfg.refireEvent("underlay");
        },
        getButtons: function()
        {
            var K = this._aButtons;

            if (K)
            {
                return K;
            }
        },
        focusFirst: function(N, L, P)
        {
            var M = this.firstFormElement, K;

            if (L)
            {
                K = L[1];

                if (K)
                {
                    J.stopEvent(K);
                }
            }

            if (M)
            {
                try
                {
                    M.focus();
                }
                catch (O)
                {
                }
            }
            else
            {
                this.focusDefaultButton();
            }
        },
        focusLast: function(N, L, P)
        {
            var Q = this.cfg.getProperty("buttons"), M = this.lastFormElement, K;

            if (L)
            {
                K = L[1];

                if (K)
                {
                    J.stopEvent(K);
                }
            }

            if (Q && E.isArray(Q))
            {
                this.focusLastButton();
            }
            else
            {
                if (M)
                {
                    try
                    {
                        M.focus();
                    }
                    catch (O)
                    {
                    }
                }
            }
        },
        focusDefaultButton: function()
        {
            var K = this.defaultHtmlButton;

            if (K)
            {
                try
                {
                    K.focus();
                }
                catch (L)
                {
                }
            }
        },
        blurButtons: function()
        {
            var P = this.cfg.getProperty("buttons"), M, O, L, K;

            if (P && E.isArray(P))
            {
                M = P.length;

                if (M > 0)
                {
                    K = (M - 1);

                    do
                    {
                        O = P[K];

                        if (O)
                        {
                            L = O.htmlButton;

                            if (L)
                            {
                                try
                                {
                                    L.blur();
                                }
                                catch (N)
                                {
                                }
                            }
                        }
                    } while (K--);
                }
            }
        },
        focusFirstButton: function()
        {
            var N = this.cfg.getProperty("buttons"), M, K;

            if (N && E.isArray(N))
            {
                M = N[0];

                if (M)
                {
                    K = M.htmlButton;

                    if (K)
                    {
                        try
                        {
                            K.focus();
                        }
                        catch (L)
                        {
                        }
                    }
                }
            }
        },
        focusLastButton: function()
        {
            var O = this.cfg.getProperty("buttons"), L, N, K;

            if (O && E.isArray(O))
            {
                L = O.length;

                if (L > 0)
                {
                    N = O[(L - 1)];

                    if (N)
                    {
                        K = N.htmlButton;

                        if (K)
                        {
                            try
                            {
                                K.focus();
                            }
                            catch (M)
                            {
                            }
                        }
                    }
                }
            }
        },
        configPostMethod: function(L, K, M)
        {
            this.registerForm();
        },
        validate: function()
        {
            return true;
        },
        submit: function()
        {
            if (this.validate())
            {
                this.beforeSubmitEvent.fire();
                this.doSubmit();
                this.submitEvent.fire();

                if (this.cfg.getProperty("hideaftersubmit"))
                {
                    this.hide();
                }
                return true;
            }
            else
            {
                return false;
            }
        },
        cancel: function()
        {
            this.cancelEvent.fire();
            this.hide();
        },
        getData: function()
        {
            var a = this.form, M, T, W, O, U, R, Q, L, X, N, Y, b, K, P, c, Z, V;

            function S(e)
{
    var d = e.tagName.toUpperCase();
    return((d == "INPUT" || d == "TEXTAREA" || d == "SELECT") && e.name == O);
}

            if (a)
            {
                M = a.elements;
                T = M.length;
                W = {
};

                for (Z = 0; Z < T; Z++)
                {
                    O = M[Z].name;
                    U = D.getElementsBy(S, "*", a);
                    R = U.length;

                    if (R > 0)
                    {
                        if (R == 1)
                        {
                            U = U[0];
                            Q = U.type;
                            L = U.tagName.toUpperCase();

                            switch (L)
                            {
                                case "INPUT":
                                    if (Q == "checkbox")
                                    {
                                        W[O] = U.checked;
                                    }
                                    else
                                    {
                                        if (Q != "radio")
                                        {
                                            W[O] = U.value;
                                        }
                                    }
                                    break;

                                case "TEXTAREA":
                                    W[O] = U.value;
                                    break;

                                case "SELECT":
                                    X = U.options;
                                    N = X.length;
                                    Y = [];

                                    for (V = 0; V < N; V++)
                                    {
                                        b = X[V];

                                        if (b.selected)
                                        {
                                            K = b.value;

                                            if (!K || K === "")
                                            {
                                                K = b.text;
                                            }
                                            Y[Y.length] = K;
                                        }
                                    }
                                    W[O] = Y;
                                    break;
                            }
                        }
                        else
                        {
                            Q = U[0].type;

                            switch (Q)
                            {
                                case "radio":
                                    for (V = 0; V < R; V++)
                                    {
                                        P = U[V];

                                        if (P.checked)
                                        {
                                            W[O] = P.value;
                                            break;
                                        }
                                    }
                                    break;

                                case "checkbox":
                                    Y = [];

                                    for (V = 0; V < R; V++)
                                    {
                                        c = U[V];

                                        if (c.checked)
                                        {
                                            Y[Y.length] = c.value;
                                        }
                                    }
                                    W[O] = Y;
                                    break;
                            }
                        }
                    }
                }
            }
            return W;
        },
        destroy: function()
        {
            C.call(this);
            this._aButtons = null;
            var K = this.element.getElementsByTagName("form"), L;

            if (K.length > 0)
            {
                L = K[0];

                if (L)
                {
                    J.purgeElement(L);

                    if (L.parentNode)
                    {
                        L.parentNode.removeChild(L);
                    }
                    this.form = null;
                }
            }
            F.superclass.destroy.call(this);
        },
        toString: function()
        {
            return "Dialog " + this.id;
        }
        });
}());
(function()
{
    TOOLTIP.widget.SimpleDialog = function(E, D)
    {
        TOOLTIP.widget.SimpleDialog.superclass.constructor.call(this, E, D);
 };
    var C = TOOLTIP.util.Dom, B = TOOLTIP.widget.SimpleDialog, A =
        {
        "ICON":
            {
            key: "icon",
            value: "none",
            suppressEvent: true
            },
        "TEXT":
            {
            key: "text",
            value: "",
            suppressEvent: true,
            supercedes: ["icon"]
            }
 };

    B.ICON_BLOCK = "blckicon";
    B.ICON_ALARM = "alrticon";
    B.ICON_HELP = "hlpicon";
    B.ICON_INFO = "infoicon";
    B.ICON_WARN = "warnicon";
    B.ICON_TIP = "tipicon";
    B.ICON_CSS_CLASSNAME = "yui-icon";
    B.CSS_SIMPLEDIALOG = "yui-simple-dialog";
    TOOLTIP.extend(B, TOOLTIP.widget.Dialog,
        {
        initDefaultConfig: function()
        {
            B.superclass.initDefaultConfig.call(this);
            this.cfg.addProperty(A.ICON.key,
                {
                handler: this.configIcon,
                value: A.ICON.value,
                suppressEvent: A.ICON.suppressEvent
                });

            this.cfg.addProperty(A.TEXT.key,
                {
                handler: this.configText,
                value: A.TEXT.value,
                suppressEvent: A.TEXT.suppressEvent,
                supercedes: A.TEXT.supercedes
                });
        },
        init: function(E, D)
        {
            B.superclass.init.call(this, E);
            this.beforeInitEvent.fire(B);
            C.addClass(this.element, B.CSS_SIMPLEDIALOG);
            this.cfg.queueProperty("postmethod", "manual");

            if (D)
            {
                this.cfg.applyConfig(D, true);
            }
            this.beforeRenderEvent.subscribe(function()
            {
                if (!this.body)
                {
                    this.setBody("");
                }
            }, this, true);
            this.initEvent.fire(B);
        },
        registerForm: function()
        {
            B.superclass.registerForm.call(this);
            this.form.innerHTML += '<input type="hidden" name="' + this.id + '" value=""/>';
        },
        configIcon: function(F, E, J)
        {
            var K = E[0], D = this.body, I = B.ICON_CSS_CLASSNAME, H, G;

            if (K && K != "none")
            {
                H = C.getElementsByClassName(I, "*", D);

                if (H)
                {
                    G = H.parentNode;

                    if (G)
                    {
                        G.removeChild(H);
                        H = null;
                    }
                }

                if (K.indexOf(".") == -1)
                {
                    H = document.createElement("span");
                    H.className = (I + " " + K);
                    H.innerHTML = "&#160;";
                }
                else
                {
                    H = document.createElement("img");
                    H.src = (this.imageRoot + K);
                    H.className = I;
                }

                if (H)
                {
                    D.insertBefore(H, D.firstChild);
                }
            }
        },
        configText: function(E, D, F)
        {
            var G = D[0];

            if (G)
            {
                this.setBody(G);
                this.cfg.refireEvent("icon");
            }
        },
        toString: function()
        {
            return "SimpleDialog " + this.id;
        }
        });
}());
(function()
{
    TOOLTIP.widget.ContainerEffect = function(F, I, H, E, G)
    {
        if (!G)
        {
            G = TOOLTIP.util.Anim;
        }
        this.overlay = F;
        this.attrIn = I;
        this.attrOut = H;
        this.targetElement = E || F.element;
        this.animClass = G;
 };
    var B = TOOLTIP.util.Dom, D = TOOLTIP.util.CustomEvent, C = TOOLTIP.util.Easing, A = TOOLTIP.widget.ContainerEffect;
    A.FADE = function(E, G)
    {
        var I =
            {
            attributes:
                {
                opacity:
                    {
                    from: 0,
                    to: 1
                    }
                },
            duration: G,
            method: C.easeIn
 };

        var F =
            {
            attributes:
                {
                opacity:
                    {
                    to: 0
                    }
                },
            duration: G,
            method: C.easeOut
 };

        var H = new A(E, I, F, E.element);
        H.handleUnderlayStart = function()
        {
            var K = this.overlay.underlay;

            if (K && TOOLTIP.env.ua.ie)
            {
                var J = (K.filters && K.filters.length > 0);

                if (J)
                {
                    B.addClass(E.element, "yui-effect-fade");
                }
            }
 };
        H.handleUnderlayComplete = function()
        {
            var J = this.overlay.underlay;

            if (J && TOOLTIP.env.ua.ie)
            {
                B.removeClass(E.element, "yui-effect-fade");
            }
 };
        H.handleStartAnimateIn = function(K, J, L)
        {
            B.addClass(L.overlay.element, "hide-select");

            if (!L.overlay.underlay)
            {
                L.overlay.cfg.refireEvent("underlay");
            }
            L.handleUnderlayStart();
            B.setStyle(L.overlay.element, "visibility", "visible");
            B.setStyle(L.overlay.element, "opacity", 0);
 };
        H.handleCompleteAnimateIn = function(K, J, L)
        {
            B.removeClass(L.overlay.element, "hide-select");

            if (L.overlay.element.style.filter)
            {
                L.overlay.element.style.filter = null;
            }
            L.handleUnderlayComplete();
            L.overlay.cfg.refireEvent("iframe");
            L.animateInCompleteEvent.fire();
 };
        H.handleStartAnimateOut = function(K, J, L)
        {
            B.addClass(L.overlay.element, "hide-select");
            L.handleUnderlayStart();
 };
        H.handleCompleteAnimateOut = function(K, J, L)
        {
            B.removeClass(L.overlay.element, "hide-select");

            if (L.overlay.element.style.filter)
            {
                L.overlay.element.style.filter = null;
            }
            B.setStyle(L.overlay.element, "visibility", "hidden");
            B.setStyle(L.overlay.element, "opacity", 1);
            L.handleUnderlayComplete();
            L.overlay.cfg.refireEvent("iframe");
            L.animateOutCompleteEvent.fire();
 };
        H.init();
        return H;
 };
    A.SLIDE = function(G, I)
    {
        var F = G.cfg.getProperty("x") || B.getX(G.element), K = G.cfg.getProperty("y") || B.getY(G.element),
            J = B.getClientWidth(), H = G.element.offsetWidth, E = new A(G,
            {
            attributes:
                {
                points:
                    {
                    to:
                        [
                        F,
                        K
                        ]
                    }
                },
            duration: I,
            method: C.easeIn
            },
            {
            attributes:
                {
                points:
                    {
                    to:
                        [
                        (J + 25),
                        K
                        ]
                    }
                },
            duration: I,
            method: C.easeOut
            }, G.element, TOOLTIP.util.Motion);

        E.handleStartAnimateIn = function(M, L, N)
        {
            N.overlay.element.style.left = ((-25) - H) + "px";
            N.overlay.element.style.top = K + "px";
 };
        E.handleTweenAnimateIn = function(O, N, P)
        {
            var Q = B.getXY(P.overlay.element), M = Q[0], L = Q[1];

            if (B.getStyle(P.overlay.element, "visibility") == "hidden" && M < F)
            {
                B.setStyle(P.overlay.element, "visibility", "visible");
            }
            P.overlay.cfg.setProperty("xy",
                [
                M,
                L
                ], true);

            P.overlay.cfg.refireEvent("iframe");
 };
        E.handleCompleteAnimateIn = function(M, L, N)
        {
            N.overlay.cfg.setProperty("xy",
                [
                F,
                K
                ], true);

            N.startX = F;
            N.startY = K;
            N.overlay.cfg.refireEvent("iframe");
            N.animateInCompleteEvent.fire();
 };
        E.handleStartAnimateOut = function(M, L, P)
        {
            var N = B.getViewportWidth(), Q = B.getXY(P.overlay.element), O = Q[1];
            P.animOut.attributes.points.to =
                [
                (N + 25),
                O
                ];
 };

        E.handleTweenAnimateOut = function(N, M, O)
        {
            var Q = B.getXY(O.overlay.element), L = Q[0], P = Q[1];
            O.overlay.cfg.setProperty("xy",
                [
                L,
                P
                ], true);

            O.overlay.cfg.refireEvent("iframe");
 };
        E.handleCompleteAnimateOut = function(M, L, N)
        {
            B.setStyle(N.overlay.element, "visibility", "hidden");
            N.overlay.cfg.setProperty("xy",
                [
                F,
                K
 ]);

            N.animateOutCompleteEvent.fire();
 };
        E.init();
        return E;
 };
    A.prototype =
        {
        init: function()
        {
            this.beforeAnimateInEvent = this.createEvent("beforeAnimateIn");
            this.beforeAnimateInEvent.signature = D.LIST;
            this.beforeAnimateOutEvent = this.createEvent("beforeAnimateOut");
            this.beforeAnimateOutEvent.signature = D.LIST;
            this.animateInCompleteEvent = this.createEvent("animateInComplete");
            this.animateInCompleteEvent.signature = D.LIST;
            this.animateOutCompleteEvent = this.createEvent("animateOutComplete");
            this.animateOutCompleteEvent.signature = D.LIST;
            this.animIn = new this.animClass(this.targetElement, this.attrIn.attributes, this.attrIn.duration, this.attrIn.method);
            this.animIn.onStart.subscribe(this.handleStartAnimateIn, this);
            this.animIn.onTween.subscribe(this.handleTweenAnimateIn, this);
            this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn, this);
            this.animOut = new this.animClass(this.targetElement, this.attrOut.attributes, this.attrOut.duration, this.attrOut.method);
            this.animOut.onStart.subscribe(this.handleStartAnimateOut, this);
            this.animOut.onTween.subscribe(this.handleTweenAnimateOut, this);
            this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut, this);
        },
        animateIn: function()
        {
            this.beforeAnimateInEvent.fire();
            this.animIn.animate();
        },
        animateOut: function()
        {
            this.beforeAnimateOutEvent.fire();
            this.animOut.animate();
        },
        handleStartAnimateIn: function(F, E, G)
        {
        },
        handleTweenAnimateIn: function(F, E, G)
        {
        },
        handleCompleteAnimateIn: function(F, E, G)
        {
        },
        handleStartAnimateOut: function(F, E, G)
        {
        },
        handleTweenAnimateOut: function(F, E, G)
        {
        },
        handleCompleteAnimateOut: function(F, E, G)
        {
        },
        toString: function()
        {
            var E = "ContainerEffect";

            if (this.overlay)
            {
                E += " [" + this.overlay.toString() + "]";
            }
            return E;
        }
 };
    TOOLTIP.lang.augmentProto(A, TOOLTIP.util.EventProvider);
})();
TOOLTIP.register("container", TOOLTIP.widget.Module, { version: "2.5.2", build: "1076"    });

//*----------------------------------------------------------------------------*/
var ToolTipids = [];

//*----------------------------------------------------------------------------*/
TOOLTIP.namespace("example.container");
TOOLTIP.example.container.init = function()
{
    var ttA = new TOOLTIP.widget.Tooltip("ttA", { context: ToolTipids ,autodismissdelay:20000} );
};
TOOLTIP.util.Event.addListener(window, "load", TOOLTIP.example.container.init);

//*----------------------------------------------------------------------------*/


