(function() {
    var W = this,
    ab,
    F = W.jQuery,
    S = W.$,
    T = W.jQuery = W.$ = function(b, a) {
        return new T.fn.init(b, a)
    },
    M = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
    ac = /^.[^:#\[\.,]*$/;
    T.fn = T.prototype = {
        init: function(e, b) {
            e = e || document;
            if (e.nodeType) {
                this[0] = e;
                this.length = 1;
                this.context = e;
                return this
            }
            if (typeof e === "string") {
                var c = M.exec(e);
                if (c && (c[1] || !b)) {
                    if (c[1]) {
                        e = T.clean([c[1]], b)
                    } else {
                        var a = document.getElementById(c[3]);
                        if (a && a.id != c[3]) {
                            return T().find(e)
                        }
                        var d = T(a || []);
                        d.context = document;
                        d.selector = e;
                        return d
                    }
                } else {
                    return T(b).find(e)
                }
            } else {
                if (T.isFunction(e)) {
                    return T(document).ready(e)
                }
            }
            if (e.selector && e.context) {
                this.selector = e.selector;
                this.context = e.context
            }
            return this.setArray(T.isArray(e) ? e: T.makeArray(e))
        },
        selector: "",
        jquery: "1.3.2",
        size: function() {
            return this.length
        },
        get: function(a) {
            return a === ab ? Array.prototype.slice.call(this) : this[a]
        },
        pushStack: function(c, a, d) {
            var b = T(c);
            b.prevObject = this;
            b.context = this.context;
            if (a === "find") {
                b.selector = this.selector + (this.selector ? " ": "") + d
            } else {
                if (a) {
                    b.selector = this.selector + "." + a + "(" + d + ")"
                }
            }
            return b
        },
        setArray: function(a) {
            this.length = 0;
            Array.prototype.push.apply(this, a);
            return this
        },
        each: function(a, b) {
            return T.each(this, a, b)
        },
        index: function(a) {
            return T.inArray(a && a.jquery ? a[0] : a, this)
        },
        attr: function(c, a, b) {
            var d = c;
            if (typeof c === "string") {
                if (a === ab) {
                    return this[0] && T[b || "attr"](this[0], c)
                } else {
                    d = {};
                    d[c] = a
                }
            }
            return this.each(function(e) {
                for (c in d) {
                    T.attr(b ? this.style: this, c, T.prop(this, d[c], b, e, c))
                }
            })
        },
        css: function(b, a) {
            if ((b == "width" || b == "height") && parseFloat(a) < 0) {
                a = ab
            }
            return this.attr(b, a, "curCSS")
        },
        text: function(a) {
            if (typeof a !== "object" && a != null) {
                return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(a))
            }
            var b = "";
            T.each(a || this,
            function() {
                T.each(this.childNodes,
                function() {
                    if (this.nodeType != 8) {
                        b += this.nodeType != 1 ? this.nodeValue: T.fn.text([this])
                    }
                })
            });
            return b
        },
        wrapAll: function(b) {
            if (this[0]) {
                var a = T(b, this[0].ownerDocument).clone();
                if (this[0].parentNode) {
                    a.insertBefore(this[0])
                }
                a.map(function() {
                    var c = this;
                    while (c.firstChild) {
                        c = c.firstChild
                    }
                    return c
                }).append(this)
            }
            return this
        },
        wrapInner: function(a) {
            return this.each(function() {
                T(this).contents().wrapAll(a)
            })
        },
        wrap: function(a) {
            return this.each(function() {
                T(this).wrapAll(a)
            })
        },
        append: function() {
            return this.domManip(arguments, true,
            function(a) {
                if (this.nodeType == 1) {
                    this.appendChild(a)
                }
            })
        },
        prepend: function() {
            return this.domManip(arguments, true,
            function(a) {
                if (this.nodeType == 1) {
                    this.insertBefore(a, this.firstChild)
                }
            })
        },
        before: function() {
            return this.domManip(arguments, false,
            function(a) {
                this.parentNode.insertBefore(a, this)
            })
        },
        after: function() {
            return this.domManip(arguments, false,
            function(a) {
                this.parentNode.insertBefore(a, this.nextSibling)
            })
        },
        end: function() {
            return this.prevObject || T([])
        },
        push: [].push,
        sort: [].sort,
        splice: [].splice,
        find: function(b) {
            if (this.length === 1) {
                var a = this.pushStack([], "find", b);
                a.length = 0;
                T.find(b, this[0], a);
                return a
            } else {
                return this.pushStack(T.unique(T.map(this,
                function(c) {
                    return T.find(b, c)
                })), "find", b)
            }
        },
        clone: function(b) {
            var d = this.map(function() {
                if (!T.support.noCloneEvent && !T.isXMLDoc(this)) {
                    var f = this.outerHTML;
                    if (!f) {
                        var e = this.ownerDocument.createElement("div");
                        e.appendChild(this.cloneNode(true));
                        f = e.innerHTML
                    }
                    return T.clean([f.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]
                } else {
                    return this.cloneNode(true)
                }
            });
            if (b === true) {
                var a = this.find("*").andSelf(),
                c = 0;
                d.find("*").andSelf().each(function() {
                    if (this.nodeName !== a[c].nodeName) {
                        return
                    }
                    var g = T.data(a[c], "events");
                    for (var e in g) {
                        for (var f in g[e]) {
                            T.event.add(this, e, g[e][f], g[e][f].data)
                        }
                    }
                    c++
                })
            }
            return d
        },
        filter: function(a) {
            return this.pushStack(T.isFunction(a) && T.grep(this,
            function(b, c) {
                return a.call(b, c)
            }) || T.multiFilter(a, T.grep(this,
            function(b) {
                return b.nodeType === 1
            })), "filter", a)
        },
        closest: function(c) {
            var a = T.expr.match.POS.test(c) ? T(c) : null,
            b = 0;
            return this.map(function() {
                var d = this;
                while (d && d.ownerDocument) {
                    if (a ? a.index(d) > -1: T(d).is(c)) {
                        T.data(d, "closest", b);
                        return d
                    }
                    d = d.parentNode;
                    b++
                }
            })
        },
        not: function(b) {
            if (typeof b === "string") {
                if (ac.test(b)) {
                    return this.pushStack(T.multiFilter(b, this, true), "not", b)
                } else {
                    b = T.multiFilter(b, this)
                }
            }
            var a = b.length && b[b.length - 1] !== ab && !b.nodeType;
            return this.filter(function() {
                return a ? T.inArray(this, b) < 0: this != b
            })
        },
        add: function(a) {
            return this.pushStack(T.unique(T.merge(this.get(), typeof a === "string" ? T(a) : T.makeArray(a))))
        },
        is: function(a) {
            return !! a && T.multiFilter(a, this).length > 0
        },
        hasClass: function(a) {
            return !! a && this.is("." + a)
        },
        val: function(c) {
            if (c === ab) {
                var i = this[0];
                if (i) {
                    if (T.nodeName(i, "option")) {
                        return (i.attributes.value || {}).specified ? i.value: i.text
                    }
                    if (T.nodeName(i, "select")) {
                        var e = i.selectedIndex,
                        b = [],
                        a = i.options,
                        f = i.type == "select-one";
                        if (e < 0) {
                            return null
                        }
                        for (var h = f ? e: 0, d = f ? e + 1: a.length; h < d; h++) {
                            var g = a[h];
                            if (g.selected) {
                                c = T(g).val();
                                if (f) {
                                    return c
                                }
                                b.push(c)
                            }
                        }
                        return b
                    }
                    return (i.value || "").replace(/\r/g, "")
                }
                return ab
            }
            if (typeof c === "number") {
                c += ""
            }
            return this.each(function() {
                if (this.nodeType != 1) {
                    return
                }
                if (T.isArray(c) && /radio|checkbox/.test(this.type)) {
                    this.checked = (T.inArray(this.value, c) >= 0 || T.inArray(this.name, c) >= 0)
                } else {
                    if (T.nodeName(this, "select")) {
                        var j = T.makeArray(c);
                        T("option", this).each(function() {
                            this.selected = (T.inArray(this.value, j) >= 0 || T.inArray(this.text, j) >= 0)
                        });
                        if (!j.length) {
                            this.selectedIndex = -1
                        }
                    } else {
                        this.value = c
                    }
                }
            })
        },
        html: function(a) {
            return a === ab ? (this[0] ? this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : null) : this.empty().append(a)
        },
        replaceWith: function(a) {
            return this.after(a).remove()
        },
        eq: function(a) {
            return this.slice(a, +a + 1)
        },
        slice: function() {
            return this.pushStack(Array.prototype.slice.apply(this, arguments), "slice", Array.prototype.slice.call(arguments).join(","))
        },
        map: function(a) {
            return this.pushStack(T.map(this,
            function(b, c) {
                return a.call(b, c, b)
            }))
        },
        andSelf: function() {
            return this.add(this.prevObject)
        },
        domManip: function(d, a, b) {
            if (this[0]) {
                var e = (this[0].ownerDocument || this[0]).createDocumentFragment(),
                h = T.clean(d, (this[0].ownerDocument || this[0]), e),
                f = e.firstChild;
                if (f) {
                    for (var g = 0, i = this.length; g < i; g++) {
                        b.call(c(this[g], f), this.length > 1 || g > 0 ? e.cloneNode(true) : e)
                    }
                }
                if (h) {
                    T.each(h, E)
                }
            }
            return this;
            function c(k, j) {
                return a && T.nodeName(k, "table") && T.nodeName(j, "tr") ? (k.getElementsByTagName("tbody")[0] || k.appendChild(k.ownerDocument.createElement("tbody"))) : k
            }
        }
    };
    T.fn.init.prototype = T.fn;
    function E(b, a) {
        if (a.src) {
            T.ajax({
                url: a.src,
                async: false,
                dataType: "script"
            })
        } else {
            T.globalEval(a.text || a.textContent || a.innerHTML || "")
        }
        if (a.parentNode) {
            a.parentNode.removeChild(a)
        }
    }
    function ad() {
        return + new Date
    }
    T.extend = T.fn.extend = function() {
        var c = arguments[0] || {},
        e = 1,
        d = arguments.length,
        h = false,
        f;
        if (typeof c === "boolean") {
            h = c;
            c = arguments[1] || {};
            e = 2
        }
        if (typeof c !== "object" && !T.isFunction(c)) {
            c = {}
        }
        if (d == e) {
            c = this; --e
        }
        for (; e < d; e++) {
            if ((f = arguments[e]) != null) {
                for (var g in f) {
                    var b = c[g],
                    a = f[g];
                    if (c === a) {
                        continue
                    }
                    if (h && a && typeof a === "object" && !a.nodeType) {
                        c[g] = T.extend(h, b || (a.length != null ? [] : {}), a)
                    } else {
                        if (a !== ab) {
                            c[g] = a
                        }
                    }
                }
            }
        }
        return c
    };
    var ag = /z-?index|font-?weight|opacity|zoom|line-?height/i,
    Q = document.defaultView || {},
    L = Object.prototype.toString;
    T.extend({
        noConflict: function(a) {
            W.$ = S;
            if (a) {
                W.jQuery = F
            }
            return T
        },
        isFunction: function(a) {
            return L.call(a) === "[object Function]"
        },
        isArray: function(a) {
            return L.call(a) === "[object Array]"
        },
        isXMLDoc: function(a) {
            return a.nodeType === 9 && a.documentElement.nodeName !== "HTML" || !!a.ownerDocument && T.isXMLDoc(a.ownerDocument)
        },
        globalEval: function(a) {
            if (a && /\S/.test(a)) {
                var b = document.getElementsByTagName("head")[0] || document.documentElement,
                c = document.createElement("script");
                c.type = "text/javascript";
                if (T.support.scriptEval) {
                    c.appendChild(document.createTextNode(a))
                } else {
                    c.text = a
                }
                b.insertBefore(c, b.firstChild);
                b.removeChild(c)
            }
        },
        nodeName: function(a, b) {
            return a.nodeName && a.nodeName.toUpperCase() == b.toUpperCase()
        },
        each: function(e, a, f) {
            var g,
            d = 0,
            c = e.length;
            if (f) {
                if (c === ab) {
                    for (g in e) {
                        if (a.apply(e[g], f) === false) {
                            break
                        }
                    }
                } else {
                    for (; d < c;) {
                        if (a.apply(e[d++], f) === false) {
                            break
                        }
                    }
                }
            } else {
                if (c === ab) {
                    for (g in e) {
                        if (a.call(e[g], g, e[g]) === false) {
                            break
                        }
                    }
                } else {
                    for (var b = e[0]; d < c && a.call(b, d, b) !== false; b = e[++d]) {}
                }
            }
            return e
        },
        prop: function(b, a, c, d, e) {
            if (T.isFunction(a)) {
                a = a.call(b, d)
            }
            return typeof a === "number" && c == "curCSS" && !ag.test(e) ? a + "px": a
        },
        className: {
            add: function(b, a) {
                T.each((a || "").split(/\s+/),
                function(d, c) {
                    if (b.nodeType == 1 && !T.className.has(b.className, c)) {
                        b.className += (b.className ? " ": "") + c
                    }
                })
            },
            remove: function(b, a) {
                if (b.nodeType == 1) {
                    b.className = a !== ab ? T.grep(b.className.split(/\s+/),
                    function(c) {
                        return ! T.className.has(a, c)
                    }).join(" ") : ""
                }
            },
            has: function(a, b) {
                return a && T.inArray(b, (a.className || a).toString().split(/\s+/)) > -1
            }
        },
        swap: function(b, c, a) {
            var e = {};
            for (var d in c) {
                e[d] = b.style[d];
                b.style[d] = c[d]
            }
            a.call(b);
            for (var d in c) {
                b.style[d] = e[d]
            }
        },
        css: function(e, g, c, h) {
            if (g == "width" || g == "height") {
                var a,
                f = {
                    position: "absolute",
                    visibility: "hidden",
                    display: "block"
                },
                b = g == "width" ? ["Left", "Right"] : ["Top", "Bottom"];
                function d() {
                    a = g == "width" ? e.offsetWidth: e.offsetHeight;
                    if (h === "border") {
                        return
                    }
                    T.each(b,
                    function() {
                        if (!h) {
                            a -= parseFloat(T.curCSS(e, "padding" + this, true)) || 0
                        }
                        if (h === "margin") {
                            a += parseFloat(T.curCSS(e, "margin" + this, true)) || 0
                        } else {
                            a -= parseFloat(T.curCSS(e, "border" + this + "Width", true)) || 0
                        }
                    })
                }
                if (e.offsetWidth !== 0) {
                    d()
                } else {
                    T.swap(e, f, d)
                }
                return Math.max(0, Math.round(a))
            }
            return T.curCSS(e, g, c)
        },
        curCSS: function(e, h, g) {
            var b,
            i = e.style;
            if (h == "opacity" && !T.support.opacity) {
                b = T.attr(i, "opacity");
                return b == "" ? "1": b
            }
            if (h.match(/float/i)) {
                h = H
            }
            if (!g && i && i[h]) {
                b = i[h]
            } else {
                if (Q.getComputedStyle) {
                    if (h.match(/float/i)) {
                        h = "float"
                    }
                    h = h.replace(/([A-Z])/g, "-$1").toLowerCase();
                    var a = Q.getComputedStyle(e, null);
                    if (a) {
                        b = a.getPropertyValue(h)
                    }
                    if (h == "opacity" && b == "") {
                        b = "1"
                    }
                } else {
                    if (e.currentStyle) {
                        var d = h.replace(/\-(\w)/g,
                        function(k, j) {
                            return j.toUpperCase()
                        });
                        b = e.currentStyle[h] || e.currentStyle[d];
                        if (!/^\d+(px)?$/i.test(b) && /^\d/.test(b)) {
                            var f = i.left,
                            c = e.runtimeStyle.left;
                            e.runtimeStyle.left = e.currentStyle.left;
                            i.left = b || 0;
                            b = i.pixelLeft + "px";
                            i.left = f;
                            e.runtimeStyle.left = c
                        }
                    }
                }
            }
            return b
        },
        clean: function(g, b, d) {
            b = b || document;
            if (typeof b.createElement === "undefined") {
                b = b.ownerDocument || b[0] && b[0].ownerDocument || document
            }
            if (!d && g.length === 1 && typeof g[0] === "string") {
                var e = /^<(\w+)\s*\/?>$/.exec(g[0]);
                if (e) {
                    return [b.createElement(e[1])]
                }
            }
            var f = [],
            h = [],
            a = b.createElement("div");
            T.each(g,
            function(l, i) {
                if (typeof i === "number") {
                    i += ""
                }
                if (!i) {
                    return
                }
                if (typeof i === "string") {
                    i = i.replace(/(<(\w+)[^>]*?)\/>/g,
                    function(q, p, r) {
                        return r.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? q: p + "></" + r + ">"
                    });
                    var m = i.replace(/^\s+/, "").substring(0, 10).toLowerCase();
                    var k = !m.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !m.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || m.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !m.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!m.indexOf("<td") || !m.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !m.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || !T.support.htmlSerialize && [1, "div<div>", "</div>"] || [0, "", ""];
                    a.innerHTML = k[1] + i + k[2];
                    while (k[0]--) {
                        a = a.lastChild
                    }
                    if (!T.support.tbody) {
                        var j = /<tbody/i.test(i),
                        n = !m.indexOf("<table") && !j ? a.firstChild && a.firstChild.childNodes: k[1] == "<table>" && !j ? a.childNodes: [];
                        for (var o = n.length - 1; o >= 0; --o) {
                            if (T.nodeName(n[o], "tbody") && !n[o].childNodes.length) {
                                n[o].parentNode.removeChild(n[o])
                            }
                        }
                    }
                    if (!T.support.leadingWhitespace && /^\s/.test(i)) {
                        a.insertBefore(b.createTextNode(i.match(/^\s*/)[0]), a.firstChild)
                    }
                    i = T.makeArray(a.childNodes)
                }
                if (i.nodeType) {
                    f.push(i)
                } else {
                    f = T.merge(f, i)
                }
            });
            if (d) {
                for (var c = 0; f[c]; c++) {
                    if (T.nodeName(f[c], "script") && (!f[c].type || f[c].type.toLowerCase() === "text/javascript")) {
                        h.push(f[c].parentNode ? f[c].parentNode.removeChild(f[c]) : f[c])
                    } else {
                        if (f[c].nodeType === 1) {
                            f.splice.apply(f, [c + 1, 0].concat(T.makeArray(f[c].getElementsByTagName("script"))))
                        }
                        d.appendChild(f[c])
                    }
                }
                return h
            }
            return f
        },
        attr: function(c, f, b) {
            if (!c || c.nodeType == 3 || c.nodeType == 8) {
                return ab
            }
            var e = !T.isXMLDoc(c),
            a = b !== ab;
            f = e && T.props[f] || f;
            if (c.tagName) {
                var g = /href|src|style/.test(f);
                if (f == "selected" && c.parentNode) {
                    c.parentNode.selectedIndex
                }
                if (f in c && e && !g) {
                    if (a) {
                        if (f == "type" && T.nodeName(c, "input") && c.parentNode) {
                            throw "type property can't be changed"
                        }
                        c[f] = b
                    }
                    if (T.nodeName(c, "form") && c.getAttributeNode(f)) {
                        return c.getAttributeNode(f).nodeValue
                    }
                    if (f == "tabIndex") {
                        var d = c.getAttributeNode("tabIndex");
                        return d && d.specified ? d.value: c.nodeName.match(/(button|input|object|select|textarea)/i) ? 0: c.nodeName.match(/^(a|area)$/i) && c.href ? 0: ab
                    }
                    return c[f]
                }
                if (!T.support.style && e && f == "style") {
                    return T.attr(c.style, "cssText", b)
                }
                if (a) {
                    c.setAttribute(f, "" + b)
                }
                var h = !T.support.hrefNormalized && e && g ? c.getAttribute(f, 2) : c.getAttribute(f);
                return h === null ? ab: h
            }
            if (!T.support.opacity && f == "opacity") {
                if (a) {
                    c.zoom = 1;
                    c.filter = (c.filter || "").replace(/alpha\([^)]*\)/, "") + (parseInt(b) + "" == "NaN" ? "": "alpha(opacity=" + b * 100 + ")")
                }
                return c.filter && c.filter.indexOf("opacity=") >= 0 ? (parseFloat(c.filter.match(/opacity=([^)]*)/)[1]) / 100) + "": ""
            }
            f = f.replace(/-([a-z])/ig,
            function(j, i) {
                return i.toUpperCase()
            });
            if (a) {
                c[f] = b
            }
            return c[f]
        },
        trim: function(a) {
            return (a || "").replace(/^\s+|\s+$/g, "")
        },
        makeArray: function(a) {
            var c = [];
            if (a != null) {
                var b = a.length;
                if (b == null || typeof a === "string" || T.isFunction(a) || a.setInterval) {
                    c[0] = a
                } else {
                    while (b) {
                        c[--b] = a[b]
                    }
                }
            }
            return c
        },
        inArray: function(b, a) {
            for (var d = 0, c = a.length; d < c; d++) {
                if (a[d] === b) {
                    return d
                }
            }
            return - 1
        },
        merge: function(b, e) {
            var d = 0,
            c,
            a = b.length;
            if (!T.support.getAll) {
                while ((c = e[d++]) != null) {
                    if (c.nodeType != 8) {
                        b[a++] = c
                    }
                }
            } else {
                while ((c = e[d++]) != null) {
                    b[a++] = c
                }
            }
            return b
        },
        unique: function(a) {
            var f = [],
            g = {};
            try {
                for (var e = 0, d = a.length; e < d; e++) {
                    var b = T.data(a[e]);
                    if (!g[b]) {
                        g[b] = true;
                        f.push(a[e])
                    }
                }
            } catch(c) {
                f = a
            }
            return f
        },
        grep: function(e, a, f) {
            var d = [];
            for (var c = 0, b = e.length; c < b; c++) {
                if (!f != !a(e[c], c)) {
                    d.push(e[c])
                }
            }
            return d
        },
        map: function(f, a) {
            var e = [];
            for (var d = 0, c = f.length; d < c; d++) {
                var b = a(f[d], d);
                if (b != null) {
                    e[e.length] = b
                }
            }
            return e.concat.apply([], e)
        }
    });
    var O = navigator.userAgent.toLowerCase();
    T.browser = {
        version: (O.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, "0"])[1],
        safari: /webkit/.test(O),
        opera: /opera/.test(O),
        msie: /msie/.test(O) && !/opera/.test(O),
        mozilla: /mozilla/.test(O) && !/(compatible|webkit)/.test(O)
    };
    T.each({
        parent: function(a) {
            return a.parentNode
        },
        parents: function(a) {
            return T.dir(a, "parentNode")
        },
        next: function(a) {
            return T.nth(a, 2, "nextSibling")
        },
        prev: function(a) {
            return T.nth(a, 2, "previousSibling")
        },
        nextAll: function(a) {
            return T.dir(a, "nextSibling")
        },
        prevAll: function(a) {
            return T.dir(a, "previousSibling")
        },
        siblings: function(a) {
            return T.sibling(a.parentNode.firstChild, a)
        },
        children: function(a) {
            return T.sibling(a.firstChild)
        },
        contents: function(a) {
            return T.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document: T.makeArray(a.childNodes)
        }
    },
    function(b, a) {
        T.fn[b] = function(d) {
            var c = T.map(this, a);
            if (d && typeof d == "string") {
                c = T.multiFilter(d, c)
            }
            return this.pushStack(T.unique(c), b, d)
        }
    });
    T.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    },
    function(b, a) {
        T.fn[b] = function(h) {
            var e = [],
            c = T(h);
            for (var d = 0, g = c.length; d < g; d++) {
                var f = (d > 0 ? this.clone(true) : this).get();
                T.fn[a].apply(T(c[d]), f);
                e = e.concat(f)
            }
            return this.pushStack(e, b, h)
        }
    });
    T.each({
        removeAttr: function(a) {
            T.attr(this, a, "");
            if (this.nodeType == 1) {
                this.removeAttribute(a)
            }
        },
        addClass: function(a) {
            T.className.add(this, a)
        },
        removeClass: function(a) {
            T.className.remove(this, a)
        },
        toggleClass: function(a, b) {
            if (typeof b !== "boolean") {
                b = !T.className.has(this, a)
            }
            T.className[b ? "add": "remove"](this, a)
        },
        remove: function(a) {
            if (!a || T.filter(a, [this]).length) {
                T("*", this).add([this]).each(function() {
                    T.event.remove(this);
                    T.removeData(this)
                });
                if (this.parentNode) {
                    this.parentNode.removeChild(this)
                }
            }
        },
        empty: function() {
            T(this).children().remove();
            while (this.firstChild) {
                this.removeChild(this.firstChild)
            }
        }
    },
    function(b, a) {
        T.fn[b] = function() {
            return this.each(a, arguments)
        }
    });
    function Y(b, a) {
        return b[0] && parseInt(T.curCSS(b[0], a, true), 10) || 0
    }
    var aa = "jQuery" + ad(),
    I = 0,
    R = {};
    T.extend({
        cache: {},
        data: function(c, d, b) {
            c = c == W ? R: c;
            var a = c[aa];
            if (!a) {
                a = c[aa] = ++I
            }
            if (d && !T.cache[a]) {
                T.cache[a] = {}
            }
            if (b !== ab) {
                T.cache[a][d] = b
            }
            return d ? T.cache[a][d] : a
        },
        removeData: function(c, d) {
            c = c == W ? R: c;
            var a = c[aa];
            if (d) {
                if (T.cache[a]) {
                    delete T.cache[a][d];
                    d = "";
                    for (d in T.cache[a]) {
                        break
                    }
                    if (!d) {
                        T.removeData(c)
                    }
                }
            } else {
                try {
                    delete c[aa]
                } catch(b) {
                    if (c.removeAttribute) {
                        c.removeAttribute(aa)
                    }
                }
                delete T.cache[a]
            }
        },
        queue: function(c, d, a) {
            if (c) {
                d = (d || "fx") + "queue";
                var b = T.data(c, d);
                if (!b || T.isArray(a)) {
                    b = T.data(c, d, T.makeArray(a))
                } else {
                    if (a) {
                        b.push(a)
                    }
                }
            }
            return b
        },
        dequeue: function(a, b) {
            var d = T.queue(a, b),
            c = d.shift();
            if (!b || b === "fx") {
                c = d[0]
            }
            if (c !== ab) {
                c.call(a)
            }
        }
    });
    T.fn.extend({
        data: function(d, b) {
            var a = d.split(".");
            a[1] = a[1] ? "." + a[1] : "";
            if (b === ab) {
                var c = this.triggerHandler("getData" + a[1] + "!", [a[0]]);
                if (c === ab && this.length) {
                    c = T.data(this[0], d)
                }
                return c === ab && a[1] ? this.data(a[0]) : c
            } else {
                return this.trigger("setData" + a[1] + "!", [a[0], b]).each(function() {
                    T.data(this, d, b)
                })
            }
        },
        removeData: function(a) {
            return this.each(function() {
                T.removeData(this, a)
            })
        },
        queue: function(b, a) {
            if (typeof b !== "string") {
                a = b;
                b = "fx"
            }
            if (a === ab) {
                return T.queue(this[0], b)
            }
            return this.each(function() {
                var c = T.queue(this, b, a);
                if (b == "fx" && c.length == 1) {
                    c[0].call(this)
                }
            })
        },
        dequeue: function(a) {
            return this.each(function() {
                T.dequeue(this, a)
            })
        }
    }); (function() {
        var b = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
        h = 0,
        l = Object.prototype.toString;
        var n = function(r, v, ai, D) {
            ai = ai || [];
            v = v || document;
            if (v.nodeType !== 1 && v.nodeType !== 9) {
                return []
            }
            if (!r || typeof r !== "string") {
                return ai
            }
            var q = [],
            t,
            A,
            x,
            w,
            C,
            u,
            s = true;
            b.lastIndex = 0;
            while ((t = b.exec(r)) !== null) {
                q.push(t[1]);
                if (t[2]) {
                    u = RegExp.rightContext;
                    break
                }
            }
            if (q.length > 1 && g.exec(r)) {
                if (q.length === 2 && k.relative[q[0]]) {
                    A = j(q[0] + q[1], v)
                } else {
                    A = k.relative[q[0]] ? [v] : n(q.shift(), v);
                    while (q.length) {
                        r = q.shift();
                        if (k.relative[r]) {
                            r += q.shift()
                        }
                        A = j(r, A)
                    }
                }
            } else {
                var B = D ? {
                    expr: q.pop(),
                    set: o(D)
                }: n.find(q.pop(), q.length === 1 && v.parentNode ? v.parentNode: v, c(v));
                A = n.filter(B.expr, B.set);
                if (q.length > 0) {
                    x = o(A)
                } else {
                    s = false
                }
                while (q.length) {
                    var y = q.pop(),
                    z = y;
                    if (!k.relative[y]) {
                        y = ""
                    } else {
                        z = q.pop()
                    }
                    if (z == null) {
                        z = v
                    }
                    k.relative[y](x, z, c(v))
                }
            }
            if (!x) {
                x = A
            }
            if (!x) {
                throw "Syntax error, unrecognized expression: " + (y || r)
            }
            if (l.call(x) === "[object Array]") {
                if (!s) {
                    ai.push.apply(ai, x)
                } else {
                    if (v.nodeType === 1) {
                        for (var p = 0; x[p] != null; p++) {
                            if (x[p] && (x[p] === true || x[p].nodeType === 1 && i(v, x[p]))) {
                                ai.push(A[p])
                            }
                        }
                    } else {
                        for (var p = 0; x[p] != null; p++) {
                            if (x[p] && x[p].nodeType === 1) {
                                ai.push(A[p])
                            }
                        }
                    }
                }
            } else {
                o(x, ai)
            }
            if (u) {
                n(u, v, ai, D);
                if (m) {
                    hasDuplicate = false;
                    ai.sort(m);
                    if (hasDuplicate) {
                        for (var p = 1; p < ai.length; p++) {
                            if (ai[p] === ai[p - 1]) {
                                ai.splice(p--, 1)
                            }
                        }
                    }
                }
            }
            return ai
        };
        n.matches = function(q, p) {
            return n(q, null, null, p)
        };
        n.find = function(p, w, x) {
            var q,
            s;
            if (!p) {
                return []
            }
            for (var t = 0, u = k.order.length; t < u; t++) {
                var r = k.order[t],
                s;
                if ((s = k.match[r].exec(p))) {
                    var v = RegExp.leftContext;
                    if (v.substr(v.length - 1) !== "\\") {
                        s[1] = (s[1] || "").replace(/\\/g, "");
                        q = k.find[r](s, w, x);
                        if (q != null) {
                            p = p.replace(k.match[r], "");
                            break
                        }
                    }
                }
            }
            if (!q) {
                q = w.getElementsByTagName("*")
            }
            return {
                set: q,
                expr: p
            }
        };
        n.filter = function(C, D, z, t) {
            var u = C,
            x = [],
            p = D,
            r,
            w,
            q = D && D[0] && c(D[0]);
            while (C && D.length) {
                for (var ai in k.filter) {
                    if ((r = k.match[ai].exec(C)) != null) {
                        var v = k.filter[ai],
                        y,
                        A;
                        w = false;
                        if (p == x) {
                            x = []
                        }
                        if (k.preFilter[ai]) {
                            r = k.preFilter[ai](r, p, z, x, t, q);
                            if (!r) {
                                w = y = true
                            } else {
                                if (r === true) {
                                    continue
                                }
                            }
                        }
                        if (r) {
                            for (var s = 0; (A = p[s]) != null; s++) {
                                if (A) {
                                    y = v(A, r, s, p);
                                    var B = t ^ !!y;
                                    if (z && y != null) {
                                        if (B) {
                                            w = true
                                        } else {
                                            p[s] = false
                                        }
                                    } else {
                                        if (B) {
                                            x.push(A);
                                            w = true
                                        }
                                    }
                                }
                            }
                        }
                        if (y !== ab) {
                            if (!z) {
                                p = x
                            }
                            C = C.replace(k.match[ai], "");
                            if (!w) {
                                return []
                            }
                            break
                        }
                    }
                }
                if (C == u) {
                    if (w == null) {
                        throw "Syntax error, unrecognized expression: " + C
                    } else {
                        break
                    }
                }
                u = C
            }
            return p
        };
        var k = n.selectors = {
            order: ["ID", "NAME", "TAG"],
            match: {
                ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
                ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
                CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
            },
            attrMap: {
                "class": "className",
                "for": "htmlFor"
            },
            attrHandle: {
                href: function(p) {
                    return p.getAttribute("href")
                }
            },
            relative: {
                "+": function(p, w, q) {
                    var s = typeof w === "string",
                    x = s && !/\W/.test(w),
                    r = s && !x;
                    if (x && !q) {
                        w = w.toUpperCase()
                    }
                    for (var t = 0, u = p.length, v; t < u; t++) {
                        if ((v = p[t])) {
                            while ((v = v.previousSibling) && v.nodeType !== 1) {}
                            p[t] = r || v && v.nodeName === w ? v || false: v === w
                        }
                    }
                    if (r) {
                        n.filter(w, p, true)
                    }
                },
                ">": function(u, r, t) {
                    var w = typeof r === "string";
                    if (w && !/\W/.test(r)) {
                        r = t ? r: r.toUpperCase();
                        for (var q = 0, s = u.length; q < s; q++) {
                            var v = u[q];
                            if (v) {
                                var p = v.parentNode;
                                u[q] = p.nodeName === r ? p: false
                            }
                        }
                    } else {
                        for (var q = 0, s = u.length; q < s; q++) {
                            var v = u[q];
                            if (v) {
                                u[q] = w ? v.parentNode: v.parentNode === r
                            }
                        }
                        if (w) {
                            n.filter(r, u, true)
                        }
                    }
                },
                "": function(p, r, t) {
                    var q = h++,
                    s = a;
                    if (!r.match(/\W/)) {
                        var u = r = t ? r: r.toUpperCase();
                        s = d
                    }
                    s("parentNode", r, q, p, u, t)
                },
                "~": function(p, r, t) {
                    var q = h++,
                    s = a;
                    if (typeof r === "string" && !r.match(/\W/)) {
                        var u = r = t ? r: r.toUpperCase();
                        s = d
                    }
                    s("previousSibling", r, q, p, u, t)
                }
            },
            find: {
                ID: function(r, q, p) {
                    if (typeof q.getElementById !== "undefined" && !p) {
                        var s = q.getElementById(r[1]);
                        return s ? [s] : []
                    }
                },
                NAME: function(q, u, t) {
                    if (typeof u.getElementsByName !== "undefined") {
                        var r = [],
                        v = u.getElementsByName(q[1]);
                        for (var p = 0, s = v.length; p < s; p++) {
                            if (v[p].getAttribute("name") === q[1]) {
                                r.push(v[p])
                            }
                        }
                        return r.length === 0 ? null: r
                    }
                },
                TAG: function(q, p) {
                    return p.getElementsByTagName(q[1])
                }
            },
            preFilter: {
                CLASS: function(p, r, q, s, u, t) {
                    p = " " + p[1].replace(/\\/g, "") + " ";
                    if (t) {
                        return p
                    }
                    for (var w = 0, v; (v = r[w]) != null; w++) {
                        if (v) {
                            if (u ^ (v.className && (" " + v.className + " ").indexOf(p) >= 0)) {
                                if (!q) {
                                    s.push(v)
                                }
                            } else {
                                if (q) {
                                    r[w] = false
                                }
                            }
                        }
                    }
                    return false
                },
                ID: function(p) {
                    return p[1].replace(/\\/g, "")
                },
                TAG: function(q, r) {
                    for (var p = 0; r[p] === false; p++) {}
                    return r[p] && c(r[p]) ? q[1] : q[1].toUpperCase()
                },
                CHILD: function(q) {
                    if (q[1] == "nth") {
                        var p = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(q[2] == "even" && "2n" || q[2] == "odd" && "2n+1" || !/\D/.test(q[2]) && "0n+" + q[2] || q[2]);
                        q[2] = (p[1] + (p[2] || 1)) - 0;
                        q[3] = p[3] - 0
                    }
                    q[0] = h++;
                    return q
                },
                ATTR: function(v, r, q, s, u, t) {
                    var p = v[1].replace(/\\/g, "");
                    if (!t && k.attrMap[p]) {
                        v[1] = k.attrMap[p]
                    }
                    if (v[2] === "~=") {
                        v[4] = " " + v[4] + " "
                    }
                    return v
                },
                PSEUDO: function(u, r, q, s, t) {
                    if (u[1] === "not") {
                        if (u[3].match(b).length > 1 || /^\w/.test(u[3])) {
                            u[3] = n(u[3], null, null, r)
                        } else {
                            var p = n.filter(u[3], r, q, true ^ t);
                            if (!q) {
                                s.push.apply(s, p)
                            }
                            return false
                        }
                    } else {
                        if (k.match.POS.test(u[0]) || k.match.CHILD.test(u[0])) {
                            return true
                        }
                    }
                    return u
                },
                POS: function(p) {
                    p.unshift(true);
                    return p
                }
            },
            filters: {
                enabled: function(p) {
                    return p.disabled === false && p.type !== "hidden"
                },
                disabled: function(p) {
                    return p.disabled === true
                },
                checked: function(p) {
                    return p.checked === true
                },
                selected: function(p) {
                    p.parentNode.selectedIndex;
                    return p.selected === true
                },
                parent: function(p) {
                    return !! p.firstChild
                },
                empty: function(p) {
                    return ! p.firstChild
                },
                has: function(p, q, r) {
                    return !! n(r[3], p).length
                },
                header: function(p) {
                    return /h\d/i.test(p.nodeName)
                },
                text: function(p) {
                    return "text" === p.type
                },
                radio: function(p) {
                    return "radio" === p.type
                },
                checkbox: function(p) {
                    return "checkbox" === p.type
                },
                file: function(p) {
                    return "file" === p.type
                },
                password: function(p) {
                    return "password" === p.type
                },
                submit: function(p) {
                    return "submit" === p.type
                },
                image: function(p) {
                    return "image" === p.type
                },
                reset: function(p) {
                    return "reset" === p.type
                },
                button: function(p) {
                    return "button" === p.type || p.nodeName.toUpperCase() === "BUTTON"
                },
                input: function(p) {
                    return /input|select|textarea|button/i.test(p.nodeName)
                }
            },
            setFilters: {
                first: function(p, q) {
                    return q === 0
                },
                last: function(q, r, s, p) {
                    return r === p.length - 1
                },
                even: function(p, q) {
                    return q % 2 === 0
                },
                odd: function(p, q) {
                    return q % 2 === 1
                },
                lt: function(p, q, r) {
                    return q < r[3] - 0
                },
                gt: function(p, q, r) {
                    return q > r[3] - 0
                },
                nth: function(p, q, r) {
                    return r[3] - 0 == q
                },
                eq: function(p, q, r) {
                    return r[3] - 0 == q
                }
            },
            filter: {
                PSEUDO: function(u, q, p, t) {
                    var r = q[1],
                    w = k.filters[r];
                    if (w) {
                        return w(u, p, q, t)
                    } else {
                        if (r === "contains") {
                            return (u.textContent || u.innerText || "").indexOf(q[3]) >= 0
                        } else {
                            if (r === "not") {
                                var v = q[3];
                                for (var p = 0, s = v.length; p < s; p++) {
                                    if (v[p] === u) {
                                        return false
                                    }
                                }
                                return true
                            }
                        }
                    }
                },
                CHILD: function(w, t) {
                    var q = t[1],
                    v = w;
                    switch (q) {
                    case "only":
                    case "first":
                        while (v = v.previousSibling) {
                            if (v.nodeType === 1) {
                                return false
                            }
                        }
                        if (q == "first") {
                            return true
                        }
                        v = w;
                    case "last":
                        while (v = v.nextSibling) {
                            if (v.nodeType === 1) {
                                return false
                            }
                        }
                        return true;
                    case "nth":
                        var u = t[2],
                        x = t[3];
                        if (u == 1 && x == 0) {
                            return true
                        }
                        var r = t[0],
                        y = w.parentNode;
                        if (y && (y.sizcache !== r || !w.nodeIndex)) {
                            var s = 0;
                            for (v = y.firstChild; v; v = v.nextSibling) {
                                if (v.nodeType === 1) {
                                    v.nodeIndex = ++s
                                }
                            }
                            y.sizcache = r
                        }
                        var p = w.nodeIndex - x;
                        if (u == 0) {
                            return p == 0
                        } else {
                            return (p % u == 0 && p / u >= 0)
                        }
                    }
                },
                ID: function(p, q) {
                    return p.nodeType === 1 && p.getAttribute("id") === q
                },
                TAG: function(p, q) {
                    return (q === "*" && p.nodeType === 1) || p.nodeName === q
                },
                CLASS: function(p, q) {
                    return (" " + (p.className || p.getAttribute("class")) + " ").indexOf(q) > -1
                },
                ATTR: function(u, p) {
                    var q = p[1],
                    s = k.attrHandle[q] ? k.attrHandle[q](u) : u[q] != null ? u[q] : u.getAttribute(q),
                    t = s + "",
                    v = p[2],
                    r = p[4];
                    return s == null ? v === "!=": v === "=" ? t === r: v === "*=" ? t.indexOf(r) >= 0: v === "~=" ? (" " + t + " ").indexOf(r) >= 0: !r ? t && s !== false: v === "!=" ? t != r: v === "^=" ? t.indexOf(r) === 0: v === "$=" ? t.substr(t.length - r.length) === r: v === "|=" ? t === r || t.substr(0, r.length + 1) === r + "-": false
                },
                POS: function(u, r, q, t) {
                    var s = r[2],
                    p = k.setFilters[s];
                    if (p) {
                        return p(u, q, r, t)
                    }
                }
            }
        };
        var g = k.match.POS;
        for (var e in k.match) {
            k.match[e] = RegExp(k.match[e].source + /(?![^\[]*\])(?![^\(]*\))/.source)
        }
        var o = function(p, q) {
            p = Array.prototype.slice.call(p);
            if (q) {
                q.push.apply(q, p);
                return q
            }
            return p
        };
        try {
            Array.prototype.slice.call(document.documentElement.childNodes)
        } catch(f) {
            o = function(t, p) {
                var r = p || [];
                if (l.call(t) === "[object Array]") {
                    Array.prototype.push.apply(r, t)
                } else {
                    if (typeof t.length === "number") {
                        for (var q = 0, s = t.length; q < s; q++) {
                            r.push(t[q])
                        }
                    } else {
                        for (var q = 0; t[q]; q++) {
                            r.push(t[q])
                        }
                    }
                }
                return r
            }
        }
        var m;
        if (document.documentElement.compareDocumentPosition) {
            m = function(q, r) {
                var p = q.compareDocumentPosition(r) & 4 ? -1: q === r ? 0: 1;
                if (p === 0) {
                    hasDuplicate = true
                }
                return p
            }
        } else {
            if ("sourceIndex" in document.documentElement) {
                m = function(q, r) {
                    var p = q.sourceIndex - r.sourceIndex;
                    if (p === 0) {
                        hasDuplicate = true
                    }
                    return p
                }
            } else {
                if (document.createRange) {
                    m = function(p, r) {
                        var q = p.ownerDocument.createRange(),
                        s = r.ownerDocument.createRange();
                        q.selectNode(p);
                        q.collapse(true);
                        s.selectNode(r);
                        s.collapse(true);
                        var t = q.compareBoundaryPoints(Range.START_TO_END, s);
                        if (t === 0) {
                            hasDuplicate = true
                        }
                        return t
                    }
                }
            }
        } (function() {
            var q = document.createElement("form"),
            p = "script" + (new Date).getTime();
            q.innerHTML = "<input name='" + p + "'/>";
            var r = document.documentElement;
            r.insertBefore(q, r.firstChild);
            if ( !! document.getElementById(p)) {
                k.find.ID = function(v, u, t) {
                    if (typeof u.getElementById !== "undefined" && !t) {
                        var s = u.getElementById(v[1]);
                        return s ? s.id === v[1] || typeof s.getAttributeNode !== "undefined" && s.getAttributeNode("id").nodeValue === v[1] ? [s] : ab: []
                    }
                };
                k.filter.ID = function(t, s) {
                    var u = typeof t.getAttributeNode !== "undefined" && t.getAttributeNode("id");
                    return t.nodeType === 1 && u && u.nodeValue === s
                }
            }
            r.removeChild(q)
        })(); (function() {
            var p = document.createElement("div");
            p.appendChild(document.createComment(""));
            if (p.getElementsByTagName("*").length > 0) {
                k.find.TAG = function(s, t) {
                    var u = t.getElementsByTagName(s[1]);
                    if (s[1] === "*") {
                        var q = [];
                        for (var r = 0; u[r]; r++) {
                            if (u[r].nodeType === 1) {
                                q.push(u[r])
                            }
                        }
                        u = q
                    }
                    return u
                }
            }
            p.innerHTML = "<a href='#'></a>";
            if (p.firstChild && typeof p.firstChild.getAttribute !== "undefined" && p.firstChild.getAttribute("href") !== "#") {
                k.attrHandle.href = function(q) {
                    return q.getAttribute("href", 2)
                }
            }
        })();
        if (document.querySelectorAll) { (function() {
                var q = n,
                p = document.createElement("div");
                p.innerHTML = "<p class='TEST'></p>";
                if (p.querySelectorAll && p.querySelectorAll(".TEST").length === 0) {
                    return
                }
                n = function(u, v, s, r) {
                    v = v || document;
                    if (!r && v.nodeType === 9 && !c(v)) {
                        try {
                            return o(v.querySelectorAll(u), s)
                        } catch(t) {}
                    }
                    return q(u, v, s, r)
                };
                n.find = q.find;
                n.filter = q.filter;
                n.selectors = q.selectors;
                n.matches = q.matches
            })()
        }
        if (document.getElementsByClassName && document.documentElement.getElementsByClassName) { (function() {
                var p = document.createElement("div");
                p.innerHTML = "<div class='test e'></div><div class='test'></div>";
                if (p.getElementsByClassName("e").length === 0) {
                    return
                }
                p.lastChild.className = "e";
                if (p.getElementsByClassName("e").length === 1) {
                    return
                }
                k.order.splice(1, 0, "CLASS");
                k.find.CLASS = function(s, r, q) {
                    if (typeof r.getElementsByClassName !== "undefined" && !q) {
                        return r.getElementsByClassName(s[1])
                    }
                }
            })()
        }
        function d(v, q, r, x, p, y) {
            var z = v == "previousSibling" && !y;
            for (var t = 0, u = x.length; t < u; t++) {
                var w = x[t];
                if (w) {
                    if (z && w.nodeType === 1) {
                        w.sizcache = r;
                        w.sizset = t
                    }
                    w = w[v];
                    var s = false;
                    while (w) {
                        if (w.sizcache === r) {
                            s = x[w.sizset];
                            break
                        }
                        if (w.nodeType === 1 && !y) {
                            w.sizcache = r;
                            w.sizset = t
                        }
                        if (w.nodeName === q) {
                            s = w;
                            break
                        }
                        w = w[v]
                    }
                    x[t] = s
                }
            }
        }
        function a(v, q, r, x, p, y) {
            var z = v == "previousSibling" && !y;
            for (var t = 0, u = x.length; t < u; t++) {
                var w = x[t];
                if (w) {
                    if (z && w.nodeType === 1) {
                        w.sizcache = r;
                        w.sizset = t
                    }
                    w = w[v];
                    var s = false;
                    while (w) {
                        if (w.sizcache === r) {
                            s = x[w.sizset];
                            break
                        }
                        if (w.nodeType === 1) {
                            if (!y) {
                                w.sizcache = r;
                                w.sizset = t
                            }
                            if (typeof q !== "string") {
                                if (w === q) {
                                    s = true;
                                    break
                                }
                            } else {
                                if (n.filter(q, [w]).length > 0) {
                                    s = w;
                                    break
                                }
                            }
                        }
                        w = w[v]
                    }
                    x[t] = s
                }
            }
        }
        var i = document.compareDocumentPosition ?
        function(p, q) {
            return p.compareDocumentPosition(q) & 16
        }: function(p, q) {
            return p !== q && (p.contains ? p.contains(q) : true)
        };
        var c = function(p) {
            return p.nodeType === 9 && p.documentElement.nodeName !== "HTML" || !!p.ownerDocument && c(p.ownerDocument)
        };
        var j = function(s, u) {
            var p = [],
            w = "",
            v,
            q = u.nodeType ? [u] : u;
            while ((v = k.match.PSEUDO.exec(s))) {
                w += v[0];
                s = s.replace(k.match.PSEUDO, "")
            }
            s = k.relative[s] ? s + "*": s;
            for (var t = 0, r = q.length; t < r; t++) {
                n(s, q[t], p)
            }
            return n.filter(w, p)
        };
        T.find = n;
        T.filter = n.filter;
        T.expr = n.selectors;
        T.expr[":"] = T.expr.filters;
        n.selectors.filters.hidden = function(p) {
            return p.offsetWidth === 0 || p.offsetHeight === 0
        };
        n.selectors.filters.visible = function(p) {
            return p.offsetWidth > 0 || p.offsetHeight > 0
        };
        n.selectors.filters.animated = function(p) {
            return T.grep(T.timers,
            function(q) {
                return p === q.elem
            }).length
        };
        T.multiFilter = function(p, r, q) {
            if (q) {
                p = ":not(" + p + ")"
            }
            return n.matches(p, r)
        };
        T.dir = function(q, r) {
            var s = [],
            p = q[r];
            while (p && p != document) {
                if (p.nodeType == 1) {
                    s.push(p)
                }
                p = p[r]
            }
            return s
        };
        T.nth = function(t, s, q, p) {
            s = s || 1;
            var r = 0;
            for (; t; t = t[q]) {
                if (t.nodeType == 1 && ++r == s) {
                    break
                }
            }
            return t
        };
        T.sibling = function(p, q) {
            var r = [];
            for (; p; p = p.nextSibling) {
                if (p.nodeType == 1 && p != q) {
                    r.push(p)
                }
            }
            return r
        };
        return;
        W.Sizzle = n
    })();
    T.event = {
        add: function(c, f, d, a) {
            if (c.nodeType == 3 || c.nodeType == 8) {
                return
            }
            if (c.setInterval && c != W) {
                c = W
            }
            if (!d.guid) {
                d.guid = this.guid++
            }
            if (a !== ab) {
                var e = d;
                d = this.proxy(e);
                d.data = a
            }
            var g = T.data(c, "events") || T.data(c, "events", {}),
            b = T.data(c, "handle") || T.data(c, "handle",
            function() {
                return typeof T !== "undefined" && !T.event.triggered ? T.event.handle.apply(arguments.callee.elem, arguments) : ab
            });
            b.elem = c;
            T.each(f.split(/\s+/),
            function(k, j) {
                var i = j.split(".");
                j = i.shift();
                d.type = i.slice().sort().join(".");
                var h = g[j];
                if (T.event.specialAll[j]) {
                    T.event.specialAll[j].setup.call(c, a, i)
                }
                if (!h) {
                    h = g[j] = {};
                    if (!T.event.special[j] || T.event.special[j].setup.call(c, a, i) === false) {
                        if (c.addEventListener) {
                            c.addEventListener(j, b, false)
                        } else {
                            if (c.attachEvent) {
                                c.attachEvent("on" + j, b)
                            }
                        }
                    }
                }
                h[d.guid] = d;
                T.event.global[j] = true
            });
            c = null
        },
        guid: 1,
        global: {},
        remove: function(b, e, c) {
            if (b.nodeType == 3 || b.nodeType == 8) {
                return
            }
            var f = T.data(b, "events"),
            g,
            h;
            if (f) {
                if (e === ab || (typeof e === "string" && e.charAt(0) == ".")) {
                    for (var d in f) {
                        this.remove(b, d + (e || ""))
                    }
                } else {
                    if (e.type) {
                        c = e.handler;
                        e = e.type
                    }
                    T.each(e.split(/\s+/),
                    function(m, k) {
                        var i = k.split(".");
                        k = i.shift();
                        var l = RegExp("(^|\\.)" + i.slice().sort().join(".*\\.") + "(\\.|$)");
                        if (f[k]) {
                            if (c) {
                                delete f[k][c.guid]
                            } else {
                                for (var j in f[k]) {
                                    if (l.test(f[k][j].type)) {
                                        delete f[k][j]
                                    }
                                }
                            }
                            if (T.event.specialAll[k]) {
                                T.event.specialAll[k].teardown.call(b, i)
                            }
                            for (g in f[k]) {
                                break
                            }
                            if (!g) {
                                if (!T.event.special[k] || T.event.special[k].teardown.call(b, i) === false) {
                                    if (b.removeEventListener) {
                                        b.removeEventListener(k, T.data(b, "handle"), false)
                                    } else {
                                        if (b.detachEvent) {
                                            b.detachEvent("on" + k, T.data(b, "handle"))
                                        }
                                    }
                                }
                                g = null;
                                delete f[k]
                            }
                        }
                    })
                }
                for (g in f) {
                    break
                }
                if (!g) {
                    var a = T.data(b, "handle");
                    if (a) {
                        a.elem = null
                    }
                    T.removeData(b, "events");
                    T.removeData(b, "handle")
                }
            }
        },
        trigger: function(d, b, e, h) {
            var f = d.type || d;
            if (!h) {
                d = typeof d === "object" ? d[aa] ? d: T.extend(T.Event(f), d) : T.Event(f);
                if (f.indexOf("!") >= 0) {
                    d.type = f = f.slice(0, -1);
                    d.exclusive = true
                }
                if (!e) {
                    d.stopPropagation();
                    if (this.global[f]) {
                        T.each(T.cache,
                        function() {
                            if (this.events && this.events[f]) {
                                T.event.trigger(d, b, this.handle.elem)
                            }
                        })
                    }
                }
                if (!e || e.nodeType == 3 || e.nodeType == 8) {
                    return ab
                }
                d.result = ab;
                d.target = e;
                b = T.makeArray(b);
                b.unshift(d)
            }
            d.currentTarget = e;
            var c = T.data(e, "handle");
            if (c) {
                c.apply(e, b)
            }
            if ((!e[f] || (T.nodeName(e, "a") && f == "click")) && e["on" + f] && e["on" + f].apply(e, b) === false) {
                d.result = false
            }
            if (!h && e[f] && !d.isDefaultPrevented() && !(T.nodeName(e, "a") && f == "click")) {
                this.triggered = true;
                try {
                    e[f]()
                } catch(a) {}
            }
            this.triggered = false;
            if (!d.isPropagationStopped()) {
                var g = e.parentNode || e.ownerDocument;
                if (g) {
                    T.event.trigger(d, b, g, true)
                }
            }
        },
        handle: function(b) {
            var c,
            h;
            b = arguments[0] = T.event.fix(b || W.event);
            b.currentTarget = this;
            var a = b.type.split(".");
            b.type = a.shift();
            c = !a.length && !b.exclusive;
            var d = RegExp("(^|\\.)" + a.slice().sort().join(".*\\.") + "(\\.|$)");
            h = (T.data(this, "events") || {})[b.type];
            for (var f in h) {
                var e = h[f];
                if (c || d.test(e.type)) {
                    b.handler = e;
                    b.data = e.data;
                    var g = e.apply(this, arguments);
                    if (g !== ab) {
                        b.result = g;
                        if (g === false) {
                            b.preventDefault();
                            b.stopPropagation()
                        }
                    }
                    if (b.isImmediatePropagationStopped()) {
                        break
                    }
                }
            }
        },
        props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
        fix: function(c) {
            if (c[aa]) {
                return c
            }
            var e = c;
            c = T.Event(e);
            for (var d = this.props.length, a; d;) {
                a = this.props[--d];
                c[a] = e[a]
            }
            if (!c.target) {
                c.target = c.srcElement || document
            }
            if (c.target.nodeType == 3) {
                c.target = c.target.parentNode
            }
            if (!c.relatedTarget && c.fromElement) {
                c.relatedTarget = c.fromElement == c.target ? c.toElement: c.fromElement
            }
            if (c.pageX == null && c.clientX != null) {
                var b = document.documentElement,
                f = document.body;
                c.pageX = c.clientX + (b && b.scrollLeft || f && f.scrollLeft || 0) - (b.clientLeft || 0);
                c.pageY = c.clientY + (b && b.scrollTop || f && f.scrollTop || 0) - (b.clientTop || 0)
            }
            if (!c.which && ((c.charCode || c.charCode === 0) ? c.charCode: c.keyCode)) {
                c.which = c.charCode || c.keyCode
            }
            if (!c.metaKey && c.ctrlKey) {
                c.metaKey = c.ctrlKey
            }
            if (!c.which && c.button) {
                c.which = (c.button & 1 ? 1: (c.button & 2 ? 3: (c.button & 4 ? 2: 0)))
            }
            return c
        },
        proxy: function(a, b) {
            b = b ||
            function() {
                return a.apply(this, arguments)
            };
            b.guid = a.guid = a.guid || b.guid || this.guid++;
            return b
        },
        special: {
            ready: {
                setup: P,
                teardown: function() {}
            }
        },
        specialAll: {
            live: {
                setup: function(b, a) {
                    T.event.add(this, a[0], af)
                },
                teardown: function(a) {
                    if (a.length) {
                        var c = 0,
                        b = RegExp("(^|\\.)" + a[0] + "(\\.|$)");
                        T.each((T.data(this, "events").live || {}),
                        function() {
                            if (b.test(this.type)) {
                                c++
                            }
                        });
                        if (c < 1) {
                            T.event.remove(this, a[0], af)
                        }
                    }
                }
            }
        }
    };
    T.Event = function(a) {
        if (!this.preventDefault) {
            return new T.Event(a)
        }
        if (a && a.type) {
            this.originalEvent = a;
            this.type = a.type
        } else {
            this.type = a
        }
        this.timeStamp = ad();
        this[aa] = true
    };
    function X() {
        return false
    }
    function J() {
        return true
    }
    T.Event.prototype = {
        preventDefault: function() {
            this.isDefaultPrevented = J;
            var a = this.originalEvent;
            if (!a) {
                return
            }
            if (a.preventDefault) {
                a.preventDefault()
            }
            a.returnValue = false
        },
        stopPropagation: function() {
            this.isPropagationStopped = J;
            var a = this.originalEvent;
            if (!a) {
                return
            }
            if (a.stopPropagation) {
                a.stopPropagation()
            }
            a.cancelBubble = true
        },
        stopImmediatePropagation: function() {
            this.isImmediatePropagationStopped = J;
            this.stopPropagation()
        },
        isDefaultPrevented: X,
        isPropagationStopped: X,
        isImmediatePropagationStopped: X
    };
    var ah = function(b) {
        var c = b.relatedTarget;
        while (c && c != this) {
            try {
                c = c.parentNode
            } catch(a) {
                c = this
            }
        }
        if (c != this) {
            b.type = b.data;
            T.event.handle.apply(this, arguments)
        }
    };
    T.each({
        mouseover: "mouseenter",
        mouseout: "mouseleave"
    },
    function(a, b) {
        T.event.special[b] = {
            setup: function() {
                T.event.add(this, a, ah, b)
            },
            teardown: function() {
                T.event.remove(this, a, ah)
            }
        }
    });
    T.fn.extend({
        bind: function(b, a, c) {
            return b == "unload" ? this.one(b, a, c) : this.each(function() {
                T.event.add(this, b, c || a, c && a)
            })
        },
        one: function(b, a, c) {
            var d = T.event.proxy(c || a,
            function(e) {
                T(this).unbind(e, d);
                return (c || a).apply(this, arguments)
            });
            return this.each(function() {
                T.event.add(this, b, d, c && a)
            })
        },
        unbind: function(a, b) {
            return this.each(function() {
                T.event.remove(this, a, b)
            })
        },
        trigger: function(b, a) {
            return this.each(function() {
                T.event.trigger(b, a, this)
            })
        },
        triggerHandler: function(c, a) {
            if (this[0]) {
                var b = T.Event(c);
                b.preventDefault();
                b.stopPropagation();
                T.event.trigger(b, a, this[0]);
                return b.result
            }
        },
        toggle: function(a) {
            var c = arguments,
            b = 1;
            while (b < c.length) {
                T.event.proxy(a, c[b++])
            }
            return this.click(T.event.proxy(a,
            function(d) {
                this.lastToggle = (this.lastToggle || 0) % b;
                d.preventDefault();
                return c[this.lastToggle++].apply(this, arguments) || false
            }))
        },
        hover: function(b, a) {
            return this.mouseenter(b).mouseleave(a)
        },
        ready: function(a) {
            P();
            if (T.isReady) {
                a.call(document, T)
            } else {
                T.readyList.push(a)
            }
            return this
        },
        live: function(a, b) {
            var c = T.event.proxy(b);
            c.guid += this.selector + a;
            T(document).bind(Z(a, this.selector), this.selector, c);
            return this
        },
        die: function(a, b) {
            T(document).unbind(Z(a, this.selector), b ? {
                guid: b.guid + this.selector + a
            }: null);
            return this
        }
    });
    function af(a) {
        var d = RegExp("(^|\\.)" + a.type + "(\\.|$)"),
        b = true,
        c = [];
        T.each(T.data(this, "events").live || [],
        function(g, f) {
            if (d.test(f.type)) {
                var e = T(a.target).closest(f.data)[0];
                if (e) {
                    c.push({
                        elem: e,
                        fn: f
                    })
                }
            }
        });
        c.sort(function(e, f) {
            return T.data(e.elem, "closest") - T.data(f.elem, "closest")
        });
        T.each(c,
        function() {
            if (this.fn.call(this.elem, a, this.fn.data) === false) {
                return (b = false)
            }
        });
        return b
    }
    function Z(a, b) {
        return ["live", a, b.replace(/\./g, "`").replace(/ /g, "|")].join(".")
    }
    T.extend({
        isReady: false,
        readyList: [],
        ready: function() {
            if (!T.isReady) {
                T.isReady = true;
                if (T.readyList) {
                    T.each(T.readyList,
                    function() {
                        this.call(document, T)
                    });
                    T.readyList = null
                }
                T(document).triggerHandler("ready")
            }
        }
    });
    var G = false;
    function P() {
        if (G) {
            return
        }
        G = true;
        if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded",
            function() {
                document.removeEventListener("DOMContentLoaded", arguments.callee, false);
                T.ready()
            },
            false)
        } else {
            if (document.attachEvent) {
                document.attachEvent("onreadystatechange",
                function() {
                    if (document.readyState === "complete") {
                        document.detachEvent("onreadystatechange", arguments.callee);
                        T.ready()
                    }
                });
                if (document.documentElement.doScroll && W == W.top) { (function() {
                        if (T.isReady) {
                            return
                        }
                        try {
                            document.documentElement.doScroll("left")
                        } catch(a) {
                            setTimeout(arguments.callee, 0);
                            return
                        }
                        T.ready()
                    })()
                }
            }
        }
        T.event.add(W, "load", T.ready)
    }
    T.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),
    function(a, b) {
        T.fn[b] = function(c) {
            return c ? this.bind(b, c) : this.trigger(b)
        }
    });
    T(W).bind("unload",
    function() {
        for (var a in T.cache) {
            if (a != 1 && T.cache[a].handle) {
                T.event.remove(T.cache[a].handle.elem)
            }
        }
    }); (function() {
        T.support = {};
        var f = document.documentElement,
        e = document.createElement("script"),
        a = document.createElement("div"),
        b = "script" + (new Date).getTime();
        a.style.display = "none";
        a.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
        var d = a.getElementsByTagName("*"),
        g = a.getElementsByTagName("a")[0];
        if (!d || !d.length || !g) {
            return
        }
        T.support = {
            leadingWhitespace: a.firstChild.nodeType == 3,
            tbody: !a.getElementsByTagName("tbody").length,
            objectAll: !!a.getElementsByTagName("object")[0].getElementsByTagName("*").length,
            htmlSerialize: !!a.getElementsByTagName("link").length,
            style: /red/.test(g.getAttribute("style")),
            hrefNormalized: g.getAttribute("href") === "/a",
            opacity: g.style.opacity === "0.5",
            cssFloat: !!g.style.cssFloat,
            scriptEval: false,
            noCloneEvent: true,
            boxModel: null
        };
        e.type = "text/javascript";
        try {
            e.appendChild(document.createTextNode("window." + b + "=1;"))
        } catch(c) {}
        f.insertBefore(e, f.firstChild);
        if (W[b]) {
            T.support.scriptEval = true;
            delete W[b]
        }
        f.removeChild(e);
        if (a.attachEvent && a.fireEvent) {
            a.attachEvent("onclick",
            function() {
                T.support.noCloneEvent = false;
                a.detachEvent("onclick", arguments.callee)
            });
            a.cloneNode(true).fireEvent("onclick")
        }
        T(function() {
            var h = document.createElement("div");
            h.style.width = h.style.paddingLeft = "1px";
            document.body.appendChild(h);
            T.boxModel = T.support.boxModel = h.offsetWidth === 2;
            document.body.removeChild(h).style.display = "none"
        })
    })();
    var H = T.support.cssFloat ? "cssFloat": "styleFloat";
    T.props = {
        "for": "htmlFor",
        "class": "className",
        "float": H,
        cssFloat: H,
        styleFloat: H,
        readonly: "readOnly",
        maxlength: "maxLength",
        cellspacing: "cellSpacing",
        rowspan: "rowSpan",
        tabindex: "tabIndex"
    };
    T.fn.extend({
        _load: T.fn.load,
        load: function(e, b, a) {
            if (typeof e !== "string") {
                return this._load(e)
            }
            var c = e.indexOf(" ");
            if (c >= 0) {
                var g = e.slice(c, e.length);
                e = e.slice(0, c)
            }
            var d = "GET";
            if (b) {
                if (T.isFunction(b)) {
                    a = b;
                    b = null
                } else {
                    if (typeof b === "object") {
                        b = T.param(b);
                        d = "POST"
                    }
                }
            }
            var f = this;
            T.ajax({
                url: e,
                type: d,
                dataType: "html",
                data: b,
                complete: function(i, h) {
                    if (h == "success" || h == "notmodified") {
                        f.html(g ? T("<div/>").append(i.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(g) : i.responseText)
                    }
                    if (a) {
                        f.each(a, [i.responseText, h, i])
                    }
                }
            });
            return this
        },
        serialize: function() {
            return T.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                return this.elements ? T.makeArray(this.elements) : this
            }).filter(function() {
                return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password|search/i.test(this.type))
            }).map(function(c, b) {
                var a = T(this).val();
                return a == null ? null: T.isArray(a) ? T.map(a,
                function(d, e) {
                    return {
                        name: b.name,
                        value: d
                    }
                }) : {
                    name: b.name,
                    value: a
                }
            }).get()
        }
    });
    T.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),
    function(b, a) {
        T.fn[a] = function(c) {
            return this.bind(a, c)
        }
    });
    var N = ad();
    T.extend({
        get: function(d, b, a, c) {
            if (T.isFunction(b)) {
                a = b;
                b = null
            }
            return T.ajax({
                type: "GET",
                url: d,
                data: b,
                success: a,
                dataType: c
            })
        },
        getScript: function(b, a) {
            return T.get(b, null, a, "script")
        },
        getJSON: function(c, b, a) {
            return T.get(c, b, a, "json")
        },
        post: function(d, b, a, c) {
            if (T.isFunction(b)) {
                a = b;
                b = {}
            }
            return T.ajax({
                type: "POST",
                url: d,
                data: b,
                success: a,
                dataType: c
            })
        },
        ajaxSetup: function(a) {
            T.extend(T.ajaxSettings, a)
        },
        ajaxSettings: {
            url: location.href,
            global: true,
            type: "GET",
            contentType: "application/x-www-form-urlencoded",
            processData: true,
            async: true,
            xhr: function() {
                return W.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest()
            },
            accepts: {
                xml: "application/xml, text/xml",
                html: "text/html",
                script: "text/javascript, application/javascript",
                json: "application/json, text/javascript",
                text: "text/plain",
                _default: "*/*"
            }
        },
        lastModified: {},
        ajax: function(k) {
            k = T.extend(true, k, T.extend(true, {},
            T.ajaxSettings, k));
            var a,
            r = /=\?(&|$)/g,
            f,
            b,
            q = k.type.toUpperCase();
            if (k.data && k.processData && typeof k.data !== "string") {
                k.data = T.param(k.data)
            }
            if (k.dataType == "jsonp") {
                if (q == "GET") {
                    if (!k.url.match(r)) {
                        k.url += (k.url.match(/\?/) ? "&": "?") + (k.jsonp || "callback") + "=?"
                    }
                } else {
                    if (!k.data || !k.data.match(r)) {
                        k.data = (k.data ? k.data + "&": "") + (k.jsonp || "callback") + "=?"
                    }
                }
                k.dataType = "json"
            }
            if (k.dataType == "json" && (k.data && k.data.match(r) || k.url.match(r))) {
                a = "jsonp" + N++;
                if (k.data) {
                    k.data = (k.data + "").replace(r, "=" + a + "$1")
                }
                k.url = k.url.replace(r, "=" + a + "$1");
                k.dataType = "script";
                W[a] = function(u) {
                    b = u;
                    o();
                    l();
                    W[a] = ab;
                    try {
                        delete W[a]
                    } catch(t) {}
                    if (p) {
                        p.removeChild(d)
                    }
                }
            }
            if (k.dataType == "script" && k.cache == null) {
                k.cache = false
            }
            if (k.cache === false && q == "GET") {
                var s = ad();
                var c = k.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + s + "$2");
                k.url = c + ((c == k.url) ? (k.url.match(/\?/) ? "&": "?") + "_=" + s: "")
            }
            if (k.data && q == "GET") {
                k.url += (k.url.match(/\?/) ? "&": "?") + k.data;
                k.data = null
            }
            if (k.global && !T.active++) {
                T.event.trigger("ajaxStart")
            }
            var g = /^(\w+:)?\/\/([^\/?#]+)/.exec(k.url);
            if (k.dataType == "script" && q == "GET" && g && (g[1] && g[1] != location.protocol || g[2] != location.host)) {
                var p = document.getElementsByTagName("head")[0];
                var d = document.createElement("script");
                d.src = k.url;
                if (k.scriptCharset) {
                    d.charset = k.scriptCharset
                }
                if (!a) {
                    var i = false;
                    d.onload = d.onreadystatechange = function() {
                        if (!i && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
                            i = true;
                            o();
                            l();
                            d.onload = d.onreadystatechange = null;
                            p.removeChild(d)
                        }
                    }
                }
                p.appendChild(d);
                return ab
            }
            var m = false;
            var n = k.xhr();
            if (k.username) {
                n.open(q, k.url, k.async, k.username, k.password)
            } else {
                n.open(q, k.url, k.async)
            }
            try {
                if (k.data) {
                    n.setRequestHeader("Content-Type", k.contentType)
                }
                if (k.ifModified) {
                    n.setRequestHeader("If-Modified-Since", T.lastModified[k.url] || "Thu, 01 Jan 1970 00:00:00 GMT")
                }
                n.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                n.setRequestHeader("Accept", k.dataType && k.accepts[k.dataType] ? k.accepts[k.dataType] + ", */*": k.accepts._default)
            } catch(e) {}
            if (k.beforeSend && k.beforeSend(n, k) === false) {
                if (k.global && !--T.active) {
                    T.event.trigger("ajaxStop")
                }
                n.abort();
                return false
            }
            if (k.global) {
                T.event.trigger("ajaxSend", [n, k])
            }
            var j = function(v) {
                if (n.readyState == 0) {
                    if (h) {
                        clearInterval(h);
                        h = null;
                        if (k.global && !--T.active) {
                            T.event.trigger("ajaxStop")
                        }
                    }
                } else {
                    if (!m && n && (n.readyState == 4 || v == "timeout")) {
                        m = true;
                        if (h) {
                            clearInterval(h);
                            h = null
                        }
                        f = v == "timeout" ? "timeout": !T.httpSuccess(n) ? "error": k.ifModified && T.httpNotModified(n, k.url) ? "notmodified": "success";
                        if (f == "success") {
                            try {
                                b = T.httpData(n, k.dataType, k)
                            } catch(t) {
                                f = "parsererror"
                            }
                        }
                        if (f == "success") {
                            var u;
                            try {
                                u = n.getResponseHeader("Last-Modified")
                            } catch(t) {}
                            if (k.ifModified && u) {
                                T.lastModified[k.url] = u
                            }
                            if (!a) {
                                o()
                            }
                        } else {
                            T.handleError(k, n, f)
                        }
                        l();
                        if (v) {
                            n.abort()
                        }
                        if (k.async) {
                            n = null
                        }
                    }
                }
            };
            if (k.async) {
                var h = setInterval(j, 13);
                if (k.timeout > 0) {
                    setTimeout(function() {
                        if (n && !m) {
                            j("timeout")
                        }
                    },
                    k.timeout)
                }
            }
            try {
                n.send(k.data)
            } catch(e) {
                T.handleError(k, n, null, e)
            }
            if (!k.async) {
                j()
            }
            function o() {
                if (k.success) {
                    k.success(b, f)
                }
                if (k.global) {
                    T.event.trigger("ajaxSuccess", [n, k])
                }
            }
            function l() {
                if (k.complete) {
                    k.complete(n, f)
                }
                if (k.global) {
                    T.event.trigger("ajaxComplete", [n, k])
                }
                if (k.global && !--T.active) {
                    T.event.trigger("ajaxStop")
                }
            }
            return n
        },
        handleError: function(c, a, d, b) {
            if (c.error) {
                c.error(a, d, b)
            }
            if (c.global) {
                T.event.trigger("ajaxError", [a, c, b])
            }
        },
        active: 0,
        httpSuccess: function(a) {
            try {
                return ! a.status && location.protocol == "file:" || (a.status >= 200 && a.status < 300) || a.status == 304 || a.status == 1223
            } catch(b) {}
            return false
        },
        httpNotModified: function(b, d) {
            try {
                var a = b.getResponseHeader("Last-Modified");
                return b.status == 304 || a == T.lastModified[d]
            } catch(c) {}
            return false
        },
        httpData: function(a, c, d) {
            var e = a.getResponseHeader("content-type"),
            f = c == "xml" || !c && e && e.indexOf("xml") >= 0,
            b = f ? a.responseXML: a.responseText;
            if (f && b.documentElement.tagName == "parsererror") {
                throw "parsererror"
            }
            if (d && d.dataFilter) {
                b = d.dataFilter(b, c)
            }
            if (typeof b === "string") {
                if (c == "script") {
                    T.globalEval(b)
                }
                if (c == "json") {
                    b = W["eval"]("(" + b + ")")
                }
            }
            return b
        },
        param: function(d) {
            var b = [];
            function a(f, e) {
                b[b.length] = encodeURIComponent(f) + "=" + encodeURIComponent(e)
            }
            if (T.isArray(d) || d.jquery) {
                T.each(d,
                function() {
                    a(this.name, this.value)
                })
            } else {
                for (var c in d) {
                    if (T.isArray(d[c])) {
                        T.each(d[c],
                        function() {
                            a(c, this)
                        })
                    } else {
                        a(c, T.isFunction(d[c]) ? d[c]() : d[c])
                    }
                }
            }
            return b.join("&").replace(/%20/g, "+")
        }
    });
    var V = {},
    U,
    ae = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]];
    function K(b, c) {
        var a = {};
        T.each(ae.concat.apply([], ae.slice(0, c)),
        function() {
            a[this] = b
        });
        return a
    }
    T.fn.extend({
        show: function(c, a) {
            if (c) {
                return this.animate(K("show", 3), c, a)
            } else {
                for (var e = 0, g = this.length; e < g; e++) {
                    var h = T.data(this[e], "olddisplay");
                    this[e].style.display = h || "";
                    if (T.css(this[e], "display") === "none") {
                        var f = this[e].tagName,
                        b;
                        if (V[f]) {
                            b = V[f]
                        } else {
                            var d = T("<" + f + " />").appendTo("body");
                            b = d.css("display");
                            if (b === "none") {
                                b = "block"
                            }
                            d.remove();
                            V[f] = b
                        }
                        T.data(this[e], "olddisplay", b)
                    }
                }
                for (var e = 0, g = this.length; e < g; e++) {
                    this[e].style.display = T.data(this[e], "olddisplay") || ""
                }
                return this
            }
        },
        hide: function(b, a) {
            if (b) {
                return this.animate(K("hide", 3), b, a)
            } else {
                for (var c = 0, d = this.length; c < d; c++) {
                    var e = T.data(this[c], "olddisplay");
                    if (!e && e !== "none") {
                        T.data(this[c], "olddisplay", T.css(this[c], "display"))
                    }
                }
                for (var c = 0, d = this.length; c < d; c++) {
                    this[c].style.display = "none"
                }
                return this
            }
        },
        _toggle: T.fn.toggle,
        toggle: function(a, b) {
            var c = typeof a === "boolean";
            return T.isFunction(a) && T.isFunction(b) ? this._toggle.apply(this, arguments) : a == null || c ? this.each(function() {
                var d = c ? a: T(this).is(":hidden");
                T(this)[d ? "show": "hide"]()
            }) : this.animate(K("toggle", 3), a, b)
        },
        fadeTo: function(c, a, b) {
            return this.animate({
                opacity: a
            },
            c, b)
        },
        animate: function(a, d, b, c) {
            var e = T.speed(d, b, c);
            return this[e.queue === false ? "each": "queue"](function() {
                var g = T.extend({},
                e),
                i,
                f = this.nodeType == 1 && T(this).is(":hidden"),
                h = this;
                for (i in a) {
                    if (a[i] == "hide" && f || a[i] == "show" && !f) {
                        return g.complete.call(this)
                    }
                    if ((i == "height" || i == "width") && this.style) {
                        g.display = T.css(this, "display");
                        g.overflow = this.style.overflow
                    }
                }
                if (g.overflow != null) {
                    this.style.overflow = "hidden"
                }
                g.curAnim = T.extend({},
                a);
                T.each(a,
                function(o, k) {
                    var l = new T.fx(h, g, o);
                    if (/toggle|show|hide/.test(k)) {
                        l[k == "toggle" ? f ? "show": "hide": k](a)
                    } else {
                        var m = k.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
                        j = l.cur(true) || 0;
                        if (m) {
                            var p = parseFloat(m[2]),
                            n = m[3] || "px";
                            if (n != "px") {
                                h.style[o] = (p || 1) + n;
                                j = ((p || 1) / l.cur(true)) * j;
                                h.style[o] = j + n
                            }
                            if (m[1]) {
                                p = ((m[1] == "-=" ? -1: 1) * p) + j
                            }
                            l.custom(j, p, n)
                        } else {
                            l.custom(j, k, "")
                        }
                    }
                });
                return true
            })
        },
        stop: function(b, c) {
            var a = T.timers;
            if (b) {
                this.queue([])
            }
            this.each(function() {
                for (var d = a.length - 1; d >= 0; d--) {
                    if (a[d].elem == this) {
                        if (c) {
                            a[d](true)
                        }
                        a.splice(d, 1)
                    }
                }
            });
            if (!c) {
                this.dequeue()
            }
            return this
        }
    });
    T.each({
        slideDown: K("show", 1),
        slideUp: K("hide", 1),
        slideToggle: K("toggle", 1),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        }
    },
    function(b, a) {
        T.fn[b] = function(d, c) {
            return this.animate(a, d, c)
        }
    });
    T.extend({
        speed: function(b, a, c) {
            var d = typeof b === "object" ? b: {
                complete: c || !c && a || T.isFunction(b) && b,
                duration: b,
                easing: c && a || a && !T.isFunction(a) && a
            };
            d.duration = T.fx.off ? 0: typeof d.duration === "number" ? d.duration: T.fx.speeds[d.duration] || T.fx.speeds._default;
            d.old = d.complete;
            d.complete = function() {
                if (d.queue !== false) {
                    T(this).dequeue()
                }
                if (T.isFunction(d.old)) {
                    d.old.call(this)
                }
            };
            return d
        },
        easing: {
            linear: function(b, a, d, c) {
                return d + c * b
            },
            swing: function(b, a, d, c) {
                return (( - Math.cos(b * Math.PI) / 2) + 0.5) * c + d
            }
        },
        timers: [],
        fx: function(b, c, a) {
            this.options = c;
            this.elem = b;
            this.prop = a;
            if (!c.orig) {
                c.orig = {}
            }
        }
    });
    T.fx.prototype = {
        update: function() {
            if (this.options.step) {
                this.options.step.call(this.elem, this.now, this)
            } (T.fx.step[this.prop] || T.fx.step._default)(this);
            if ((this.prop == "height" || this.prop == "width") && this.elem.style) {
                this.elem.style.display = "block"
            }
        },
        cur: function(a) {
            if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) {
                return this.elem[this.prop]
            }
            var b = parseFloat(T.css(this.elem, this.prop, a));
            return b && b > -10000 ? b: parseFloat(T.curCSS(this.elem, this.prop)) || 0
        },
        custom: function(a, b, c) {
            this.startTime = ad();
            this.start = a;
            this.end = b;
            this.unit = c || this.unit || "px";
            this.now = this.start;
            this.pos = this.state = 0;
            var e = this;
            function d(f) {
                return e.step(f)
            }
            d.elem = this.elem;
            if (d() && T.timers.push(d) && !U) {
                U = setInterval(function() {
                    var f = T.timers;
                    for (var g = 0; g < f.length; g++) {
                        if (!f[g]()) {
                            f.splice(g--, 1)
                        }
                    }
                    if (!f.length) {
                        clearInterval(U);
                        U = ab
                    }
                },
                13)
            }
        },
        show: function() {
            this.options.orig[this.prop] = T.attr(this.elem.style, this.prop);
            this.options.show = true;
            this.custom(this.prop == "width" || this.prop == "height" ? 1: 0, this.cur());
            T(this.elem).show()
        },
        hide: function() {
            this.options.orig[this.prop] = T.attr(this.elem.style, this.prop);
            this.options.hide = true;
            this.custom(this.cur(), 0)
        },
        step: function(c) {
            var d = ad();
            if (c || d >= this.options.duration + this.startTime) {
                this.now = this.end;
                this.pos = this.state = 1;
                this.update();
                this.options.curAnim[this.prop] = true;
                var f = true;
                for (var e in this.options.curAnim) {
                    if (this.options.curAnim[e] !== true) {
                        f = false
                    }
                }
                if (f) {
                    if (this.options.display != null) {
                        this.elem.style.overflow = this.options.overflow;
                        this.elem.style.display = this.options.display;
                        if (T.css(this.elem, "display") == "none") {
                            this.elem.style.display = "block"
                        }
                    }
                    if (this.options.hide) {
                        T(this.elem).hide()
                    }
                    if (this.options.hide || this.options.show) {
                        for (var b in this.options.curAnim) {
                            T.attr(this.elem.style, b, this.options.orig[b])
                        }
                    }
                    this.options.complete.call(this.elem)
                }
                return false
            } else {
                var a = d - this.startTime;
                this.state = a / this.options.duration;
                this.pos = T.easing[this.options.easing || (T.easing.swing ? "swing": "linear")](this.state, a, 0, 1, this.options.duration);
                this.now = this.start + ((this.end - this.start) * this.pos);
                this.update()
            }
            return true
        }
    };
    T.extend(T.fx, {
        speeds: {
            slow: 600,
            fast: 200,
            _default: 400
        },
        step: {
            opacity: function(a) {
                T.attr(a.elem.style, "opacity", a.now)
            },
            _default: function(a) {
                if (a.elem.style && a.elem.style[a.prop] != null) {
                    a.elem.style[a.prop] = a.now + a.unit
                } else {
                    a.elem[a.prop] = a.now
                }
            }
        }
    });
    if (document.documentElement.getBoundingClientRect) {
        T.fn.offset = function() {
            if (!this[0]) {
                return {
                    top: 0,
                    left: 0
                }
            }
            if (this[0] === this[0].ownerDocument.body) {
                return T.offset.bodyOffset(this[0])
            }
            var f = this[0].getBoundingClientRect(),
            c = this[0].ownerDocument,
            g = c.body,
            h = c.documentElement,
            a = h.clientTop || g.clientTop || 0,
            b = h.clientLeft || g.clientLeft || 0,
            d = f.top + (self.pageYOffset || T.boxModel && h.scrollTop || g.scrollTop) - a,
            e = f.left + (self.pageXOffset || T.boxModel && h.scrollLeft || g.scrollLeft) - b;
            return {
                top: d,
                left: e
            }
        }
    } else {
        T.fn.offset = function() {
            if (!this[0]) {
                return {
                    top: 0,
                    left: 0
                }
            }
            if (this[0] === this[0].ownerDocument.body) {
                return T.offset.bodyOffset(this[0])
            }
            T.offset.initialized || T.offset.initialize();
            var f = this[0],
            i = f.offsetParent,
            j = f,
            a = f.ownerDocument,
            c,
            h = a.documentElement,
            e = a.body,
            d = a.defaultView,
            k = d.getComputedStyle(f, null),
            b = f.offsetTop,
            g = f.offsetLeft;
            while ((f = f.parentNode) && f !== e && f !== h) {
                c = d.getComputedStyle(f, null);
                b -= f.scrollTop,
                g -= f.scrollLeft;
                if (f === i) {
                    b += f.offsetTop,
                    g += f.offsetLeft;
                    if (T.offset.doesNotAddBorder && !(T.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(f.tagName))) {
                        b += parseInt(c.borderTopWidth, 10) || 0,
                        g += parseInt(c.borderLeftWidth, 10) || 0
                    }
                    j = i,
                    i = f.offsetParent
                }
                if (T.offset.subtractsBorderForOverflowNotVisible && c.overflow !== "visible") {
                    b += parseInt(c.borderTopWidth, 10) || 0,
                    g += parseInt(c.borderLeftWidth, 10) || 0
                }
                k = c
            }
            if (k.position === "relative" || k.position === "static") {
                b += e.offsetTop,
                g += e.offsetLeft
            }
            if (k.position === "fixed") {
                b += Math.max(h.scrollTop, e.scrollTop),
                g += Math.max(h.scrollLeft, e.scrollLeft)
            }
            return {
                top: b,
                left: g
            }
        }
    }
    T.offset = {
        initialize: function() {
            if (this.initialized) {
                return
            }
            var c = document.body,
            i = document.createElement("div"),
            g,
            h,
            a,
            f,
            b,
            j,
            e = c.style.marginTop,
            d = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
            b = {
                position: "absolute",
                top: 0,
                left: 0,
                margin: 0,
                border: 0,
                width: "1px",
                height: "1px",
                visibility: "hidden"
            };
            for (j in b) {
                i.style[j] = b[j]
            }
            i.innerHTML = d;
            c.insertBefore(i, c.firstChild);
            g = i.firstChild,
            h = g.firstChild,
            f = g.nextSibling.firstChild.firstChild;
            this.doesNotAddBorder = (h.offsetTop !== 5);
            this.doesAddBorderForTableAndCells = (f.offsetTop === 5);
            g.style.overflow = "hidden",
            g.style.position = "relative";
            this.subtractsBorderForOverflowNotVisible = (h.offsetTop === -5);
            c.style.marginTop = "1px";
            this.doesNotIncludeMarginInBodyOffset = (c.offsetTop === 0);
            c.style.marginTop = e;
            c.removeChild(i);
            this.initialized = true
        },
        bodyOffset: function(c) {
            T.offset.initialized || T.offset.initialize();
            var a = c.offsetTop,
            b = c.offsetLeft;
            if (T.offset.doesNotIncludeMarginInBodyOffset) {
                a += parseInt(T.curCSS(c, "marginTop", true), 10) || 0,
                b += parseInt(T.curCSS(c, "marginLeft", true), 10) || 0
            }
            return {
                top: a,
                left: b
            }
        }
    };
    T.fn.extend({
        position: function() {
            var b = 0,
            c = 0,
            e;
            if (this[0]) {
                var d = this.offsetParent(),
                a = this.offset(),
                f = /^body|html$/i.test(d[0].tagName) ? {
                    top: 0,
                    left: 0
                }: d.offset();
                a.top -= Y(this, "marginTop");
                a.left -= Y(this, "marginLeft");
                f.top += Y(d, "borderTopWidth");
                f.left += Y(d, "borderLeftWidth");
                e = {
                    top: a.top - f.top,
                    left: a.left - f.left
                }
            }
            return e
        },
        offsetParent: function() {
            var a = this[0].offsetParent || document.body;
            while (a && (!/^body|html$/i.test(a.tagName) && T.css(a, "position") == "static")) {
                a = a.offsetParent
            }
            return T(a)
        }
    });
    T.each(["Left", "Top"],
    function(b, c) {
        var a = "scroll" + c;
        T.fn[a] = function(d) {
            if (!this[0]) {
                return null
            }
            return d !== ab ? this.each(function() {
                this == W || this == document ? W.scrollTo(!b ? d: T(W).scrollLeft(), b ? d: T(W).scrollTop()) : this[a] = d
            }) : this[0] == W || this[0] == document ? self[b ? "pageYOffset": "pageXOffset"] || T.boxModel && document.documentElement[a] || document.body[a] : this[0][a]
        }
    });
    T.each(["Height", "Width"],
    function(b, d) {
        var f = b ? "Left": "Top",
        c = b ? "Right": "Bottom",
        e = d.toLowerCase();
        T.fn["inner" + d] = function() {
            return this[0] ? T.css(this[0], e, false, "padding") : null
        };
        T.fn["outer" + d] = function(g) {
            return this[0] ? T.css(this[0], e, false, g ? "margin": "border") : null
        };
        var a = d.toLowerCase();
        T.fn[a] = function(g) {
            return this[0] == W ? document.compatMode == "CSS1Compat" && document.documentElement["client" + d] || document.body["client" + d] : this[0] == document ? Math.max(document.documentElement["client" + d], document.body["scroll" + d], document.documentElement["scroll" + d], document.body["offset" + d], document.documentElement["offset" + d]) : g === ab ? (this.length ? T.css(this[0], a) : null) : this.css(a, typeof g === "string" ? g: g + "px")
        }
    })
})(); (function(f) {
    f.tools = f.tools || {
        version: {}
    };
    f.tools.version.tabs = "1.0.1";
    f.tools.addTabEffect = function(b, a) {
        d[b] = a
    };
    var d = {
        "default": function(a) {
            this.getPanes().hide().eq(a).show()
        },
        fade: function(a) {
            this.getPanes().hide().eq(a).fadeIn(this.getConf().fadeInSpeed)
        },
        slide: function(a) {
            this.getCurrentPane().slideUp("fast");
            this.getPanes().eq(a).slideDown()
        },
        horizontal: function(a) {
            if (!f._hW) {
                f._hW = this.getPanes().eq(0).width()
            }
            this.getCurrentPane().animate({
                width: 0
            },
            function() {
                f(this).hide()
            });
            this.getPanes().eq(a).animate({
                width: f._hW
            },
            function() {
                f(this).show()
            })
        }
    };
    function e(k, j, c) {
        var l = this;
        var b;
        function a(h, g) {
            f(l).bind(h,
            function(i, n) {
                if (g && g.call(this, n.index) === false && n) {
                    n.proceed = false
                }
            });
            return l
        }
        f.each(c,
        function(h, g) {
            if (f.isFunction(g)) {
                a(h, g)
            }
        });
        f.extend(this, {
            click: function(i) {
                if (i === b) {
                    return l
                }
                var g = l.getCurrentPane();
                var h = k.eq(i);
                if (typeof i == "string") {
                    h = k.filter("[href=" + i + "]");
                    i = k.index(h)
                }
                if (!h.length) {
                    if (b >= 0) {
                        return l
                    }
                    i = c.initialIndex;
                    h = k.eq(i)
                }
                var n = {
                    index: i,
                    proceed: true
                };
                f(l).triggerHandler("onBeforeClick", n);
                if (!n.proceed) {
                    return l
                }
                h.addClass(c.current);
                d[c.effect].call(l, i);
                f(l).triggerHandler("onClick", n);
                k.removeClass(c.current);
                h.addClass(c.current);
                b = i;
                return l
            },
            getConf: function() {
                return c
            },
            getTabs: function() {
                return k
            },
            getPanes: function() {
                return j
            },
            getCurrentPane: function() {
                return j.eq(b)
            },
            getCurrentTab: function() {
                return k.eq(b)
            },
            getIndex: function() {
                return b
            },
            next: function() {
                return l.click(b + 1)
            },
            prev: function() {
                return l.click(b - 1)
            },
            onBeforeClick: function(g) {
                return a("onBeforeClick", g)
            },
            onClick: function(g) {
                return a("onClick", g)
            }
        });
        k.each(function(g) {
            f(this).bind(c.event,
            function(h) {
                l.click(g);
                if (!c.history) {
                    return h.preventDefault()
                }
            })
        });
        if (c.history) {
            k.history(function(h, g) {
                l.click(g || 0)
            })
        }
        if (location.hash) {
            l.click(location.hash)
        } else {
            l.click(c.initialIndex)
        }
        j.find("a[href^=#]").click(function() {
            l.click(f(this).attr("href"))
        })
    }
    f.fn.tabs = function(a, h) {
        var c = this.eq(typeof conf == "number" ? conf: 0).data("tabs");
        if (c) {
            return c
        }
        var b = {
            tabs: "a",
            current: "current",
            onBeforeClick: null,
            onClick: null,
            effect: "default",
            history: false,
            initialIndex: 0,
            event: "click",
            api: false
        };
        if (f.isFunction(h)) {
            h = {
                onBeforeClick: h
            }
        }
        f.extend(b, h);
        this.each(function() {
            var j = f(this).find(b.tabs);
            if (!j.length) {
                j = f(this).children()
            }
            var g = a.jquery ? a: f(a);
            c = new e(j, g, b);
            f(this).data("tabs", c)
        });
        return b.api ? c: this
    }
})(jQuery); (function(d) {
    var f,
    e;
    d.prototype.history = function(a) {
        var b = this;
        if (d.browser.msie) {
            if (!e) {
                e = d("<iframe />").hide().get(0);
                d("body").append(e);
                setInterval(function() {
                    var h = e.contentWindow.document;
                    var c = h.location.hash;
                    if (f !== c) {
                        d.event.trigger("hash", c);
                        f = c
                    }
                },
                100)
            }
            b.bind("click.hash",
            function(c) {
                var h = e.contentWindow.document;
                h.open().close();
                h.location.hash = d(this).attr("href")
            });
            b.eq(0).triggerHandler("click.hash")
        } else {
            setInterval(function() {
                var c = location.hash;
                if (b.filter("[href*=" + c + "]").length && c !== f) {
                    f = c;
                    d.event.trigger("hash", c)
                }
            },
            100)
        }
        d(window).bind("hash", a);
        return this
    }
})(jQuery); (function(f) {
    f.tools = f.tools || {
        version: {}
    };
    f.tools.version.tooltip = "1.0.2";
    var d = {
        toggle: [function() {
            this.getTip().show()
        },
        function() {
            this.getTip().hide()
        }],
        fade: [function() {
            this.getTip().fadeIn(this.getConf().fadeInSpeed)
        },
        function() {
            this.getTip().fadeOut(this.getConf().fadeOutSpeed)
        }]
    };
    f.tools.addTipEffect = function(c, a, b) {
        d[c] = [a, b]
    };
    f.tools.addTipEffect("slideup",
    function() {
        var b = this.getConf();
        var a = b.slideOffset || 10;
        this.getTip().css({
            opacity: 0
        }).animate({
            top: "-=" + a,
            opacity: b.opacity
        },
        b.slideInSpeed || 200).show()
    },
    function() {
        var b = this.getConf();
        var a = b.slideOffset || 10;
        this.getTip().animate({
            top: "-=" + a,
            opacity: 0
        },
        b.slideOutSpeed || 200,
        function() {
            f(this).hide().animate({
                top: "+=" + (a * 2)
            },
            0)
        })
    });
    function e(l, m) {
        var n = this;
        var c = l.next();
        if (m.tip) {
            if (m.tip.indexOf("#") != -1) {
                c = f(m.tip)
            } else {
                c = l.nextAll(m.tip).eq(0);
                if (!c.length) {
                    c = l.parent().nextAll(m.tip).eq(0)
                }
            }
        }
        function a(h, g) {
            f(n).bind(h,
            function(j, i) {
                if (g && g.call(this) === false && i) {
                    i.proceed = false
                }
            });
            return n
        }
        f.each(m,
        function(h, g) {
            if (f.isFunction(g)) {
                a(h, g)
            }
        });
        var k = l.is("input, textarea");
        l.bind(k ? "focus": "mouseover",
        function(g) {
            g.target = this;
            n.show(g);
            c.hover(function() {
                n.show()
            },
            function() {
                n.hide()
            })
        });
        l.bind(k ? "blur": "mouseout",
        function() {
            n.hide()
        });
        c.css("opacity", m.opacity);
        var b = 0;
        f.extend(n, {
            show: function(p) {
                if (p) {
                    l = f(p.target)
                }
                clearTimeout(b);
                if (c.is(":animated") || c.is(":visible")) {
                    return n
                }
                var s = {
                    proceed: true
                };
                f(n).trigger("onBeforeShow", s);
                if (!s.proceed) {
                    return n
                }
                var t = l.position().top - c.outerHeight();
                var i = c.outerHeight() + l.outerHeight();
                var j = m.position[0];
                if (j == "center") {
                    t += i / 2
                }
                if (j == "bottom") {
                    t += i
                }
                var h = l.outerWidth() + c.outerWidth();
                var g = l.position().left + l.outerWidth();
                j = m.position[1];
                if (j == "center") {
                    g -= h / 2
                }
                if (j == "left") {
                    g -= h
                }
                t += m.offset[0];
                g += m.offset[1];
                c.css({
                    position: "absolute",
                    top: t,
                    left: g
                });
                d[m.effect][0].call(n);
                f(n).trigger("onShow");
                return n
            },
            hide: function() {
                clearTimeout(b);
                b = setTimeout(function() {
                    if (!c.is(":visible")) {
                        return n
                    }
                    var g = {
                        proceed: true
                    };
                    f(n).trigger("onBeforeHide", g);
                    if (!g.proceed) {
                        return n
                    }
                    d[m.effect][1].call(n);
                    f(n).trigger("onHide")
                },
                m.delay || 1);
                return n
            },
            isShown: function() {
                return c.is(":visible, :animated")
            },
            getConf: function() {
                return m
            },
            getTip: function() {
                return c
            },
            getTrigger: function() {
                return l
            },
            onBeforeShow: function(g) {
                return a("onBeforeShow", g)
            },
            onShow: function(g) {
                return a("onShow", g)
            },
            onBeforeHide: function(g) {
                return a("onBeforeHide", g)
            },
            onHide: function(g) {
                return a("onHide", g)
            }
        })
    }
    f.prototype.tooltip = function(c) {
        var b = this.eq(typeof c == "number" ? c: 0).data("tooltip");
        if (b) {
            return b
        }
        var a = {
            tip: null,
            effect: "slideup",
            delay: 30,
            opacity: 1,
            position: ["top", "center"],
            offset: [0, 0],
            api: false
        };
        if (f.isFunction(c)) {
            c = {
                onBeforeShow: c
            }
        }
        f.extend(a, c);
        this.each(function() {
            b = new e(f(this), a);
            f(this).data("tooltip", b)
        });
        return a.api ? b: this
    }
})(jQuery); (function(d) {
    d.tools = d.tools || {
        version: {}
    };
    d.tools.version.scrollable = "1.0.5";
    var f = null;
    function e(c, v) {
        var F = this;
        if (!f) {
            f = F
        }
        function u(h, g) {
            d(F).bind(h,
            function(i, j) {
                if (g && g.call(this, j.index) === false && j) {
                    j.proceed = false
                }
            });
            return F
        }
        d.each(v,
        function(h, g) {
            if (d.isFunction(g)) {
                u(h, g)
            }
        });
        var E = !v.vertical;
        var C = d(v.items, c);
        var y = 0;
        function w(g, h) {
            return g.indexOf("#") != -1 ? d(g).eq(0) : h.siblings(g).eq(0)
        }
        var b = w(v.navi, c);
        var B = w(v.prev, c);
        var z = w(v.next, c);
        var A = w(v.prevPage, c);
        var t = w(v.nextPage, c);
        d.extend(F, {
            getIndex: function() {
                return y
            },
            getConf: function() {
                return v
            },
            getSize: function() {
                return F.getItems().size()
            },
            getPageAmount: function() {
                return Math.ceil(this.getSize() / v.size)
            },
            getPageIndex: function() {
                return Math.ceil(y / v.size)
            },
            getRoot: function() {
                return c
            },
            getItemWrap: function() {
                return C
            },
            getItems: function() {
                return C.children()
            },
            getVisibleItems: function() {
                return F.getItems().slice(y, y + v.size)
            },
            seekTo: function(l, n, h) {
                if (n === undefined) {
                    n = v.speed
                }
                if (d.isFunction(n)) {
                    h = n;
                    n = v.speed
                }
                if (l < 0) {
                    l = 0
                }
                if (l > F.getSize() - v.size) {
                    return F
                }
                var g = F.getItems().eq(l);
                if (!g.length) {
                    return F
                }
                var o = {
                    index: l,
                    proceed: true
                };
                d(F).trigger("onBeforeSeek", o);
                if (!o.proceed) {
                    return F
                }
                if (E) {
                    var m = -g.position().left;
                    C.animate({
                        left: m
                    },
                    n, v.easing, h ?
                    function() {
                        h.call(F)
                    }: null)
                } else {
                    var i = -g.position().top;
                    C.animate({
                        top: i
                    },
                    n, v.easing, h ?
                    function() {
                        h.call(F)
                    }: null)
                }
                if (b.length) {
                    var k = v.activeClass;
                    var j = Math.ceil(l / v.size);
                    j = Math.min(j, b.children().length - 1);
                    b.children().removeClass(k).eq(j).addClass(k)
                }
                if (l === 0) {
                    B.add(A).addClass(v.disabledClass)
                } else {
                    B.add(A).removeClass(v.disabledClass)
                }
                if (l >= F.getSize() - v.size) {
                    z.add(t).addClass(v.disabledClass)
                } else {
                    z.add(t).removeClass(v.disabledClass)
                }
                f = F;
                y = l;
                d(F).trigger("onSeek", {
                    index: l
                });
                return F
            },
            move: function(h, i, j) {
                var g = y + h;
                if (v.loop && g > (F.getSize() - v.size)) {
                    g = 0
                }
                return this.seekTo(g, i, j)
            },
            next: function(g, h) {
                return this.move(1, g, h)
            },
            prev: function(g, h) {
                return this.move( - 1, g, h)
            },
            movePage: function(g, h, i) {
                return this.move(v.size * g, h, i)
            },
            setPage: function(g, l, i) {
                var j = v.size;
                var k = j * g;
                var h = k + j >= this.getSize();
                if (h) {
                    k = this.getSize() - v.size
                }
                return this.seekTo(k, l, i)
            },
            prevPage: function(g, h) {
                return this.setPage(this.getPageIndex() - 1, g, h)
            },
            nextPage: function(g, h) {
                return this.setPage(this.getPageIndex() + 1, g, h)
            },
            begin: function(g, h) {
                return this.seekTo(0, g, h)
            },
            end: function(g, h) {
                return this.seekTo(this.getSize() - v.size, g, h)
            },
            reload: function() {
                return a()
            },
            click: function(j, g, i) {
                var h = F.getItems().eq(j);
                var k = v.activeClass;
                if (j < 0 || j >= this.getSize()) {
                    return F
                }
                if (v.size == 2) {
                    if (j == F.getIndex()) {
                        j--
                    }
                    F.getItems().removeClass(k);
                    h.addClass(k);
                    return this.seekTo(j, g, i)
                }
                if (!h.hasClass(k)) {
                    F.getItems().removeClass(k);
                    h.addClass(k);
                    var l = Math.floor(v.size / 2);
                    var m = j - l;
                    if (m > F.getSize() - v.size) {
                        m = F.getSize() - v.size
                    }
                    if (m !== j) {
                        return this.seekTo(m, g, i)
                    }
                }
                return F
            },
            onBeforeSeek: function(g) {
                return u("onBeforeSeek", g)
            },
            onSeek: function(g) {
                return u("onSeek", g)
            }
        });
        if (d.isFunction(d.fn.mousewheel)) {
            c.bind("mousewheel.scrollable",
            function(h, g) {
                var i = d.browser.opera ? 1: -1;
                F.move(g > 0 ? i: -i, 50);
                return false
            })
        }
        B.addClass(v.disabledClass).click(function() {
            F.prev()
        });
        z.click(function() {
            F.next()
        });
        t.click(function() {
            F.nextPage()
        });
        A.addClass(v.disabledClass).click(function() {
            F.prevPage()
        });
        if (v.keyboard) {
            d(document).unbind("keydown.scrollable").bind("keydown.scrollable",
            function(h) {
                var g = f;
                if (!g || h.altKey || h.ctrlKey) {
                    return
                }
                if (E && (h.keyCode == 37 || h.keyCode == 39)) {
                    g.move(h.keyCode == 37 ? -1: 1);
                    return h.preventDefault()
                }
                if (!E && (h.keyCode == 38 || h.keyCode == 40)) {
                    g.move(h.keyCode == 38 ? -1: 1);
                    return h.preventDefault()
                }
                return true
            })
        }
        function a() {
            if (b.is(":empty") || b.data("me") == F) {
                b.empty();
                b.data("me", F);
                for (var h = 0; h < F.getPageAmount(); h++) {
                    var g = d("<" + v.naviItem + "/>").attr("href", h).click(function(j) {
                        var k = d(this);
                        k.parent().children().removeClass(v.activeClass);
                        k.addClass(v.activeClass);
                        F.setPage(k.attr("href"));
                        return j.preventDefault()
                    });
                    if (h === 0) {
                        g.addClass(v.activeClass)
                    }
                    b.append(g)
                }
            } else {
                var i = b.children();
                i.each(function(k) {
                    var j = d(this);
                    j.attr("href", k);
                    if (k === 0) {
                        j.addClass(v.activeClass)
                    }
                    j.click(function() {
                        b.find("." + v.activeClass).removeClass(v.activeClass);
                        j.addClass(v.activeClass);
                        F.setPage(j.attr("href"))
                    })
                })
            }
            if (v.clickable) {
                F.getItems().each(function(j, k) {
                    var l = d(this);
                    if (!l.data("set")) {
                        l.bind("click.scrollable",
                        function() {
                            F.click(j)
                        });
                        l.data("set", true)
                    }
                })
            }
            if (v.hoverClass) {
                F.getItems().hover(function() {
                    d(this).addClass(v.hoverClass)
                },
                function() {
                    d(this).removeClass(v.hoverClass)
                })
            }
            return F
        }
        a();
        var D = null;
        function x() {
            if (D) {
                return
            }
            D = setInterval(function() {
                if (v.interval === 0) {
                    clearInterval(D);
                    D = 0;
                    return
                }
                F.next()
            },
            v.interval)
        }
        if (v.interval > 0) {
            c.hover(function() {
                clearInterval(D);
                D = 0
            },
            function() {
                x()
            });
            x()
        }
    }
    d.fn.scrollable = function(c) {
        var b = this.eq(typeof c == "number" ? c: 0).data("scrollable");
        if (b) {
            return b
        }
        var a = {
            size: 5,
            vertical: false,
            clickable: true,
            loop: false,
            interval: 0,
            speed: 400,
            keyboard: true,
            activeClass: "active",
            disabledClass: "disabled",
            hoverClass: null,
            easing: "swing",
            items: ".items",
            prev: ".prev",
            next: ".next",
            prevPage: ".prevPage",
            nextPage: ".nextPage",
            navi: ".navi",
            naviItem: "a",
            api: false,
            onBeforeSeek: null,
            onSeek: null
        };
        d.extend(a, c);
        this.each(function() {
            b = new e(d(this), a);
            d(this).data("scrollable", b)
        });
        return a.api ? b: this
    }
})(jQuery); (function(d) {
    d.tools = d.tools || {
        version: {}
    };
    d.tools.version.overlay = "1.0.4";
    var f = [];
    function e(y, C) {
        var a = this,
        b = d(window),
        A,
        o,
        D,
        x,
        v,
        t,
        u;
        var B = C.expose && d.tools.version.expose;
        function c(h, g) {
            d(a).bind(h,
            function(i, j) {
                if (g && g.call(this) === false && j) {
                    j.proceed = false
                }
            });
            return a
        }
        d.each(C,
        function(h, g) {
            if (d.isFunction(g)) {
                c(h, g)
            }
        });
        var w = C.target || y.attr("rel");
        var z = w ? d(w) : null;
        if (!z) {
            z = y
        } else {
            v = y
        }
        b.load(function() {
            t = z.attr("overlay");
            if (!t) {
                t = z.css("backgroundImage");
                if (!t) {
                    throw "background-image CSS property not set for overlay element: " + w
                }
                t = t.substring(t.indexOf("(") + 1, t.indexOf(")")).replace(/\"/g, "");
                z.css("backgroundImage", "none");
                z.attr("overlay", t)
            }
            D = z.outerWidth({
                margin: true
            });
            x = z.outerHeight({
                margin: true
            });
            o = d('<img src="' + t + '"/>');
            o.css({
                border: 0,
                position: "absolute",
                display: "none"
            }).width(D).attr("overlay", true);
            d("body").append(o);
            if (v) {
                v.bind("click.overlay",
                function(g) {
                    a.load(g.pageY - b.scrollTop(), g.pageX - b.scrollLeft());
                    return g.preventDefault()
                })
            }
            C.close = C.close || ".close";
            if (!z.find(C.close).length) {
                z.prepend('<div class="close"></div>')
            }
            A = z.find(C.close);
            A.bind("click.overlay",
            function() {
                a.close()
            });
            if (C.preload) {
                setTimeout(function() {
                    var g = new Image();
                    g.src = t
                },
                2000)
            }
        });
        d.extend(a, {
            load: function(g, h) {
                if (!o) {
                    b.load(function() {
                        a.load(g, h)
                    });
                    return a
                }
                if (a.isOpened()) {
                    return a
                }
                if (C.oneInstance) {
                    d.each(f,
                    function() {
                        this.close()
                    })
                }
                var i = {
                    proceed: true
                };
                d(a).trigger("onBeforeLoad", i);
                if (!i.proceed) {
                    return a
                }
                if (B) {
                    o.expose(C.expose);
                    u = o.expose().load()
                }
                g = g || C.start.top;
                h = h || C.start.left;
                var k = C.finish.top;
                var j = C.finish.left;
                if (k == "center") {
                    k = Math.max((b.height() - x) / 2, 0)
                }
                if (j == "center") {
                    j = Math.max((b.width() - D) / 2, 0)
                }
                if (!C.start.absolute) {
                    g += b.scrollTop();
                    h += b.scrollLeft()
                }
                if (!C.finish.absolute) {
                    k += b.scrollTop();
                    j += b.scrollLeft()
                }
                o.css({
                    top: g,
                    left: h,
                    width: C.start.width,
                    zIndex: C.zIndex
                }).show();
                o.animate({
                    top: k,
                    left: j,
                    width: D
                },
                C.speed,
                function() {
                    z.css({
                        position: "absolute",
                        top: k,
                        left: j
                    });
                    var l = o.css("zIndex");
                    A.add(z).css("zIndex", ++l);
                    z.fadeIn(C.fadeInSpeed,
                    function() {
                        d(a).trigger("onLoad")
                    })
                });
                return a
            },
            close: function() {
                if (!a.isOpened()) {
                    return a
                }
                var g = {
                    proceed: true
                };
                d(a).trigger("onBeforeClose", g);
                if (!g.proceed) {
                    return a
                }
                if (u) {
                    u.close()
                }
                if (o.is(":visible")) {
                    z.hide();
                    var h = C.start.top;
                    var i = C.start.left;
                    if (v) {
                        g = v.offset();
                        h = g.top + v.height() / 2;
                        i = g.left + v.width() / 2
                    }
                    o.animate({
                        top: h,
                        left: i,
                        width: 0
                    },
                    C.closeSpeed,
                    function() {
                        d(a).trigger("onClose", g)
                    })
                }
                return a
            },
            getBackgroundImage: function() {
                return o
            },
            getContent: function() {
                return z
            },
            getTrigger: function() {
                return v
            },
            isOpened: function() {
                return z.is(":visible")
            },
            getConf: function() {
                return C
            },
            onBeforeLoad: function(g) {
                return c("onBeforeLoad", g)
            },
            onLoad: function(g) {
                return c("onLoad", g)
            },
            onBeforeClose: function(g) {
                return c("onBeforeClose", g)
            },
            onClose: function(g) {
                return c("onClose", g)
            }
        });
        d(document).keydown(function(g) {
            if (g.keyCode == 27) {
                a.close()
            }
        });
        if (C.closeOnClick) {
            d(document).bind("click.overlay",
            function(h) {
                if (!z.is(":visible, :animated")) {
                    return
                }
                var g = d(h.target);
                if (g.attr("overlay")) {
                    return
                }
                if (g.parents("[overlay]").length) {
                    return
                }
                a.close()
            })
        }
    }
    d.fn.overlay = function(c) {
        var b = this.eq(typeof c == "number" ? c: 0).data("overlay");
        if (b) {
            return b
        }
        var h = d(window);
        var a = {
            start: {
                top: Math.round(h.height() / 2),
                left: Math.round(h.width() / 2),
                width: 0,
                absolute: false
            },
            finish: {
                top: 80,
                left: "center",
                absolute: false
            },
            speed: "normal",
            fadeInSpeed: "fast",
            closeSpeed: "fast",
            close: null,
            oneInstance: true,
            closeOnClick: true,
            preload: true,
            zIndex: 9999,
            api: false,
            expose: null,
            target: null
        };
        if (d.isFunction(c)) {
            c = {
                onBeforeLoad: c
            }
        }
        d.extend(true, a, c);
        this.each(function() {
            b = new e(d(this), a);
            f.push(b);
            d(this).data("overlay", b)
        });
        return a.api ? b: this
    }
})(jQuery); (function(d) {
    d.tools = d.tools || {
        version: {}
    };
    d.tools.version.expose = "1.0.3";
    function e() {
        var a = d(window).width();
        if (d.browser.mozilla) {
            return a
        }
        var b;
        if (window.innerHeight && window.scrollMaxY) {
            b = window.innerWidth + window.scrollMaxX
        } else {
            if (document.body.scrollHeight > document.body.offsetHeight) {
                b = document.body.scrollWidth
            } else {
                b = document.body.offsetWidth
            }
        }
        return b < a ? b + 20: a
    }
    function f(k, c) {
        var m = this,
        n = null,
        l = false,
        b = 0;
        function a(h, g) {
            d(m).bind(h,
            function(j, i) {
                if (g && g.call(this) === false && i) {
                    i.proceed = false
                }
            });
            return m
        }
        d.each(c,
        function(h, g) {
            if (d.isFunction(g)) {
                a(h, g)
            }
        });
        d(window).bind("resize.expose",
        function() {
            if (n) {
                n.css({
                    width: e(),
                    height: d(document).height()
                })
            }
        });
        d.extend(this, {
            getMask: function() {
                return n
            },
            getExposed: function() {
                return k
            },
            getConf: function() {
                return c
            },
            isLoaded: function() {
                return l
            },
            load: function() {
                if (l) {
                    return m
                }
                b = k.eq(0).css("zIndex");
                if (c.maskId) {
                    n = d("#" + c.maskId)
                }
                if (!n || !n.length) {
                    n = d("<div/>").css({
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: e(),
                        height: d(document).height(),
                        display: "none",
                        opacity: 0,
                        zIndex: c.zIndex
                    });
                    if (c.maskId) {
                        n.attr("id", c.maskId)
                    }
                    d("body").append(n);
                    var i = n.css("backgroundColor");
                    if (!i || i == "transparent" || i == "rgba(0, 0, 0, 0)") {
                        n.css("backgroundColor", c.color)
                    }
                    if (c.closeOnEsc) {
                        d(document).bind("keydown.unexpose",
                        function(j) {
                            if (j.keyCode == 27) {
                                m.close()
                            }
                        })
                    }
                    if (c.closeOnClick) {
                        n.bind("click.unexpose",
                        function() {
                            m.close()
                        })
                    }
                }
                var g = {
                    proceed: true
                };
                d(m).trigger("onBeforeLoad", g);
                if (!g.proceed) {
                    return m
                }
                d.each(k,
                function() {
                    var j = d(this);
                    if (!/relative|absolute|fixed/i.test(j.css("position"))) {
                        j.css("position", "relative")
                    }
                });
                k.css({
                    zIndex: c.zIndex + 1
                });
                var h = n.height();
                if (!this.isLoaded()) {
                    n.css({
                        opacity: 0,
                        display: "block"
                    }).fadeTo(c.loadSpeed, c.opacity,
                    function() {
                        if (n.height() != h) {
                            n.css("height", h)
                        }
                        d(m).trigger("onLoad")
                    })
                }
                l = true;
                return m
            },
            close: function() {
                if (!l) {
                    return m
                }
                var g = {
                    proceed: true
                };
                d(m).trigger("onBeforeClose", g);
                if (g.proceed === false) {
                    return m
                }
                n.fadeOut(c.closeSpeed,
                function() {
                    d(m).trigger("onClose");
                    k.css({
                        zIndex: d.browser.msie ? b: null
                    })
                });
                l = false;
                return m
            },
            onBeforeLoad: function(g) {
                return a("onBeforeLoad", g)
            },
            onLoad: function(g) {
                return a("onLoad", g)
            },
            onBeforeClose: function(g) {
                return a("onBeforeClose", g)
            },
            onClose: function(g) {
                return a("onClose", g)
            }
        })
    }
    d.fn.expose = function(c) {
        var b = this.eq(typeof c == "number" ? c: 0).data("expose");
        if (b) {
            return b
        }
        var a = {
            maskId: null,
            loadSpeed: "slow",
            closeSpeed: "fast",
            closeOnClick: true,
            closeOnEsc: true,
            zIndex: 9998,
            opacity: 0.8,
            color: "#456",
            api: false
        };
        if (typeof c == "string") {
            c = {
                color: c
            }
        }
        d.extend(a, c);
        this.each(function() {
            b = new f(d(this), a);
            d(this).data("expose", b)
        });
        return a.api ? b: this
    }
})(jQuery);
jQuery.fn.truncate = function(a, b, e) {
    e = jQuery.extend({
        chars: /\s/,
        trail: ["...", ""]
    },
    e);
    var c = {};
    var f = $.browser.msie;
    function d(g) {
        if (f) {
            g.style.removeAttribute("filter")
        }
    }
    return this.each(function() {
        var m = jQuery(this);
        var h = m.html().replace(/\r\n/gim, "");
        var l = h;
        var q = /<\/?[^<>]*\/?>/gim;
        var i;
        var r = {};
        var p = $("*").index(this);
        while ((i = q.exec(l)) != null) {
            r[i.index] = i[0]
        }
        l = jQuery.trim(l.split(q).join(""));
        var j = l.length;
        var n;
        if (b == 1) {
            n = a
        } else {
            var o = a / b;
            n = a - o;
            if (j > n) {
                n--;
                var k = l.charAt(n);
                while (!k.match(e.chars)) {
                    n--;
                    k = l.charAt(n);
                    if (n == 0) {
                        break
                    }
                }
                if (n == 0) {
                    n = a - o;
                    k = l.charAt(n);
                    while (!k.match(e.chars)) {
                        n++;
                        if (n >= j) {
                            break
                        }
                        k = l.charAt(n)
                    }
                }
                n = n + o - 1
            }
        }
        if (n < j) {
            while (n < l.length) {
                k = l.charAt(n);
                if (k.match(e.chars)) {
                    l = l.substring(0, n);
                    break
                }
                n--
            }
            if (h.search(q) != -1) {
                var g = 0;
                for (eachEl in r) {
                    l = [l.substring(0, eachEl), r[eachEl], l.substring(eachEl, l.length)].join("");
                    if (eachEl < l.length) {
                        g = l.length
                    }
                }
                m.html([l.substring(0, g), l.substring(g, l.length).replace(/<(\w+)[^>]*>.*<\/\1>/gim, "").replace(/<(br|hr|img|input)[^<>]*\/?>/gim, "")].join(""))
            } else {
                m.html(l)
            }
            c[p] = h;
            m.html(["<div class='truncate_less'>", m.html(), e.trail[0], "</div>"].join("")).find(".truncate_show", this).click(function() {
                if (m.find(".truncate_more").length == 0) {
                    m.append(["<div class='truncate_more' style='display: none;'>", c[p], e.trail[1], "</div>"].join("")).find(".truncate_hide").click(function() {
                        m.find(".truncate_more").css("background", "#fff").fadeOut("normal",
                        function() {
                            m.find(".truncate_less").css("background", "#fff").fadeIn("normal",
                            function() {
                                d(this);
                                $(this).css("background", "none")
                            });
                            d(this)
                        });
                        return false
                    })
                }
                m.find(".truncate_less").fadeOut("normal",
                function() {
                    m.find(".truncate_more").fadeIn("normal",
                    function() {
                        d(this)
                    });
                    d(this)
                });
                jQuery(".truncate_show", m).click(function() {
                    m.find(".truncate_less").css("background", "#fff").fadeOut("normal",
                    function() {
                        m.find(".truncate_more").css("background", "#fff").fadeIn("normal",
                        function() {
                            d(this);
                            $(this).css("background", "none")
                        });
                        d(this)
                    });
                    return false
                });
                return false
            })
        }
    })
};
var Cufon = (function() {
    var P = function() {
        return P.replace.apply(null, arguments)
    };
    var D = P.DOM = {
        ready: (function() {
            var c = false,
            a = {
                loaded: 1,
                complete: 1
            };
            var d = [],
            b = function() {
                if (c) {
                    return
                }
                c = true;
                for (var e; e = d.shift(); e()) {}
            };
            if (document.addEventListener) {
                document.addEventListener("DOMContentLoaded", b, false);
                window.addEventListener("pageshow", b, false)
            }
            if (!window.opera && document.readyState) { (function() {
                    a[document.readyState] ? b() : setTimeout(arguments.callee, 10)
                })()
            }
            if (document.readyState && document.createStyleSheet) { (function() {
                    try {
                        document.body.doScroll("left");
                        b()
                    } catch(e) {
                        setTimeout(arguments.callee, 1)
                    }
                })()
            }
            K(window, "load", b);
            return function(e) {
                if (!arguments.length) {
                    b()
                } else {
                    c ? e() : d.push(e)
                }
            }
        })(),
        root: function() {
            return document.documentElement || document.body
        }
    };
    var O = P.CSS = {
        Size: function(a, b) {
            this.value = parseFloat(a);
            this.unit = String(a).match(/[a-z%]*$/)[0] || "px";
            this.convert = function(c) {
                return c / b * this.value
            };
            this.convertFrom = function(c) {
                return c / this.value * b
            };
            this.toString = function() {
                return this.value + this.unit
            }
        },
        addClass: function(b, c) {
            var a = b.className;
            b.className = a + (a && " ") + c;
            return b
        },
        color: S(function(a) {
            var b = {};
            b.color = a.replace(/^rgba\((.*?),\s*([\d.]+)\)/,
            function(d, e, c) {
                b.opacity = parseFloat(c);
                return "rgb(" + e + ")"
            });
            return b
        }),
        fontStretch: S(function(a) {
            if (typeof a == "number") {
                return a
            }
            if (/%$/.test(a)) {
                return parseFloat(a) / 100
            }
            return {
                "ultra-condensed": 0.5,
                "extra-condensed": 0.625,
                condensed: 0.75,
                "semi-condensed": 0.875,
                "semi-expanded": 1.125,
                expanded: 1.25,
                "extra-expanded": 1.5,
                "ultra-expanded": 2
            } [a] || 1
        }),
        getStyle: function(a) {
            var b = document.defaultView;
            if (b && b.getComputedStyle) {
                return new ab(b.getComputedStyle(a, null))
            }
            if (a.currentStyle) {
                return new ab(a.currentStyle)
            }
            return new ab(a.style)
        },
        gradient: S(function(b) {
            var a = {
                id: b,
                type: b.match(/^-([a-z]+)-gradient\(/)[1],
                stops: []
            },
            e = b.substr(b.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
            for (var c = 0, f = e.length, d; c < f; ++c) {
                d = e[c].split("=", 2).reverse();
                a.stops.push([d[1] || c / (f - 1), d[0]])
            }
            return a
        }),
        hasClass: function(a, b) {
            return RegExp("(?:^|\\s)" + b + "(?=\\s|$)").test(a.className)
        },
        quotedList: S(function(a) {
            var b = [],
            c = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,
            d;
            while (d = c.exec(a)) {
                b.push(d[3] || d[1])
            }
            return b
        }),
        recognizesMedia: S(function(a) {
            var c = document.createElement("style"),
            d,
            e,
            f;
            c.type = "text/css";
            c.media = a;
            try {
                c.appendChild(document.createTextNode("/**/"))
            } catch(b) {}
            e = V("head")[0];
            e.insertBefore(c, e.firstChild);
            d = (c.sheet || c.styleSheet);
            f = d && !d.disabled;
            e.removeChild(c);
            return f
        }),
        removeClass: function(a, b) {
            var c = RegExp("(?:^|\\s+)" + b + "(?=\\s|$)", "g");
            a.className = a.className.replace(c, "");
            return a
        },
        supports: function(a, b) {
            var c = document.createElement("span").style;
            if (c[a] === undefined) {
                return false
            }
            c[a] = b;
            return c[a] === b
        },
        textAlign: function(a, b, d, c) {
            if (b.get("textAlign") == "right") {
                if (d > 0) {
                    a = " " + a
                }
            } else {
                if (d < c - 1) {
                    a += " "
                }
            }
            return a
        },
        textDecoration: function(a, b) {
            if (!b) {
                b = this.getStyle(a)
            }
            var e = {
                underline: null,
                overline: null,
                "line-through": null
            };
            for (var f = a; f.parentNode && f.parentNode.nodeType == 1;) {
                var c = true;
                for (var d in e) {
                    if (!R(e, d) || e[d]) {
                        continue
                    }
                    if (b.get("textDecoration").indexOf(d) != -1) {
                        e[d] = b.get("color")
                    }
                    c = false
                }
                if (c) {
                    break
                }
                b = this.getStyle(f = f.parentNode)
            }
            return e
        },
        textShadow: S(function(b) {
            if (b == "none") {
                return null
            }
            var c = [],
            a = {},
            f,
            e = 0;
            var d = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
            while (f = d.exec(b)) {
                if (f[0] == ",") {
                    c.push(a);
                    a = {};
                    e = 0
                } else {
                    if (f[1]) {
                        a.color = f[1]
                    } else {
                        a[["offX", "offY", "blur"][e++]] = f[2]
                    }
                }
            }
            c.push(a);
            return c
        }),
        textTransform: (function() {
            var a = {
                uppercase: function(b) {
                    return b.toUpperCase()
                },
                lowercase: function(b) {
                    return b.toLowerCase()
                },
                capitalize: function(b) {
                    return b.replace(/\b./g,
                    function(c) {
                        return c.toUpperCase()
                    })
                }
            };
            return function(b, c) {
                var d = a[c.get("textTransform")];
                return d ? d(b) : b
            }
        })(),
        whiteSpace: (function() {
            var a = {
                inline: 1,
                "inline-block": 1,
                "run-in": 1
            };
            return function(b, d, c) {
                if (a[d.get("display")]) {
                    return b
                }
                if (!c.previousSibling) {
                    b = b.replace(/^\s+/, "")
                }
                if (!c.nextSibling) {
                    b = b.replace(/\s+$/, "")
                }
                return b
            }
        })()
    };
    O.ready = (function() {
        var c = !O.recognizesMedia("all"),
        i = false;
        var a = [],
        f = function() {
            c = true;
            for (var j; j = a.shift(); j()) {}
        };
        var e = V("link"),
        d = V("style");
        function b(j) {
            return j.disabled || g(j.sheet, j.media || "screen")
        }
        function g(p, m) {
            if (!O.recognizesMedia(m || "all")) {
                return true
            }
            if (!p || p.disabled) {
                return false
            }
            try {
                var l = p.cssRules,
                n;
                if (l) {
                    search: for (var j = 0, k = l.length; n = l[j], j < k; ++j) {
                        switch (n.type) {
                        case 2:
                            break;
                        case 3:
                            if (!g(n.styleSheet, n.media.mediaText)) {
                                return false
                            }
                            break;
                        default:
                            break search
                        }
                    }
                }
            } catch(o) {}
            return true
        }
        function h() {
            if (document.createStyleSheet) {
                return true
            }
            var j,
            k;
            for (k = 0; j = e[k]; ++k) {
                if (j.rel.toLowerCase() == "stylesheet" && !b(j)) {
                    return false
                }
            }
            for (k = 0; j = d[k]; ++k) {
                if (!b(j)) {
                    return false
                }
            }
            return true
        }
        D.ready(function() {
            if (!i) {
                i = O.getStyle(document.body).isUsable()
            }
            if (c || (i && h())) {
                f()
            } else {
                setTimeout(arguments.callee, 10)
            }
        });
        return function(j) {
            if (c) {
                j()
            } else {
                a.push(j)
            }
        }
    })();
    function I(a) {
        var b = this.face = a.face;
        this.glyphs = a.glyphs;
        this.w = a.w;
        this.baseSize = parseInt(b["units-per-em"], 10);
        this.family = b["font-family"].toLowerCase();
        this.weight = b["font-weight"];
        this.style = b["font-style"] || "normal";
        this.viewBox = (function() {
            var c = b.bbox.split(/\s+/);
            var d = {
                minX: parseInt(c[0], 10),
                minY: parseInt(c[1], 10),
                maxX: parseInt(c[2], 10),
                maxY: parseInt(c[3], 10)
            };
            d.width = d.maxX - d.minX;
            d.height = d.maxY - d.minY;
            d.toString = function() {
                return [this.minX, this.minY, this.width, this.height].join(" ")
            };
            return d
        })();
        this.ascent = -parseInt(b.ascent, 10);
        this.descent = -parseInt(b.descent, 10);
        this.height = -this.ascent + this.descent
    }
    function W() {
        var a = {},
        b = {
            oblique: "italic",
            italic: "oblique"
        };
        this.add = function(c) { (a[c.style] || (a[c.style] = {}))[c.weight] = c
        };
        this.get = function(f, e) {
            var g = a[f] || a[b[f]] || a.normal || a.italic || a.oblique;
            if (!g) {
                return null
            }
            e = {
                normal: 400,
                bold: 700
            } [e] || parseInt(e, 10);
            if (g[e]) {
                return g[e]
            }
            var i = {
                1: 1,
                99: 0
            } [e % 100],
            c = [],
            h,
            j;
            if (i === undefined) {
                i = e > 400
            }
            if (e == 500) {
                e = 400
            }
            for (var d in g) {
                if (!R(g, d)) {
                    continue
                }
                d = parseInt(d, 10);
                if (!h || d < h) {
                    h = d
                }
                if (!j || d > j) {
                    j = d
                }
                c.push(d)
            }
            if (e < h) {
                e = h
            }
            if (e > j) {
                e = j
            }
            c.sort(function(l, k) {
                return (i ? (l > e && k > e) ? l < k: l > k: (l < e && k < e) ? l > k: l < k) ? -1: 1
            });
            return g[c[0]]
        }
    }
    function J() {
        function b(f, e) {
            if (f.contains) {
                return f.contains(e)
            }
            return f.compareDocumentPosition(e) & 16
        }
        function d(e) {
            var f = e.relatedTarget;
            if (!f || b(this, f)) {
                return
            }
            c(this)
        }
        function a(e) {
            c(this)
        }
        function c(e) {
            setTimeout(function() {
                P.replace(e, Y.get(e).options, true)
            },
            10)
        }
        this.attach = function(e) {
            if (e.onmouseenter === undefined) {
                K(e, "mouseover", d);
                K(e, "mouseout", d)
            } else {
                K(e, "mouseenter", a);
                K(e, "mouseleave", a)
            }
        }
    }
    function G() {
        var b = [],
        a = {};
        function c(d) {
            var g = [],
            e;
            for (var f = 0; e = d[f]; ++f) {
                g[f] = b[a[e]]
            }
            return g
        }
        this.add = function(d, e) {
            a[d] = b.push(e) - 1
        };
        this.repeat = function() {
            var f = arguments.length ? c(arguments) : b,
            e;
            for (var d = 0; e = f[d++];) {
                P.replace(e[0], e[1], true)
            }
        }
    }
    function M() {
        var a = {},
        c = 0;
        function b(d) {
            return d.cufid || (d.cufid = ++c)
        }
        this.get = function(e) {
            var d = b(e);
            return a[d] || (a[d] = {})
        }
    }
    function ab(c) {
        var a = {},
        b = {};
        this.extend = function(e) {
            for (var d in e) {
                if (R(e, d)) {
                    a[d] = e[d]
                }
            }
            return this
        };
        this.get = function(d) {
            return a[d] != undefined ? a[d] : c[d]
        };
        this.getSize = function(d, e) {
            return b[d] || (b[d] = new O.Size(this.get(d), e))
        };
        this.isUsable = function() {
            return !! c
        }
    }
    function K(b, c, a) {
        if (b.addEventListener) {
            b.addEventListener(c, a, false)
        } else {
            if (b.attachEvent) {
                b.attachEvent("on" + c,
                function() {
                    return a.call(b, window.event)
                })
            }
        }
    }
    function F(b, c) {
        var a = Y.get(b);
        if (a.options) {
            return b
        }
        if (c.hover && c.hoverables[b.nodeName.toLowerCase()]) {
            aa.attach(b)
        }
        a.options = c;
        return b
    }
    function S(b) {
        var a = {};
        return function(c) {
            if (!R(a, c)) {
                a[c] = b.apply(null, arguments)
            }
            return a[c]
        }
    }
    function Z(a, b) {
        var e = O.quotedList(b.get("fontFamily").toLowerCase()),
        c;
        for (var d = 0; c = e[d]; ++d) {
            if (T[c]) {
                return T[c].get(b.get("fontStyle"), b.get("fontWeight"))
            }
        }
        return null
    }
    function V(a) {
        return document.getElementsByTagName(a)
    }
    function R(a, b) {
        return a.hasOwnProperty(b)
    }
    function U() {
        var e = {},
        c,
        a;
        for (var b = 0, d = arguments.length; c = arguments[b], b < d; ++b) {
            for (a in c) {
                if (R(c, a)) {
                    e[a] = c[a]
                }
            }
        }
        return e
    }
    function N(m, e, b, d, l, a) {
        var g = document.createDocumentFragment(),
        j;
        if (e === "") {
            return g
        }
        var f = d.separate;
        var i = e.split(L[f]),
        c = (f == "words");
        if (c && H) {
            if (/^\s/.test(e)) {
                i.unshift("")
            }
            if (/\s$/.test(e)) {
                i.push("")
            }
        }
        for (var h = 0, k = i.length; h < k; ++h) {
            j = B[d.engine](m, c ? O.textAlign(i[h], b, h, k) : i[h], b, d, l, a, h < k - 1);
            if (j) {
                g.appendChild(j)
            }
        }
        return g
    }
    function Q(b, d) {
        var c = O.getStyle(F(b, d)).extend(d);
        var a = Z(b, c),
        i,
        f,
        g,
        h,
        e;
        for (i = b.firstChild; i; i = g) {
            f = i.nodeType;
            g = i.nextSibling;
            if (f == 3) {
                if (h) {
                    h.appendData(i.data);
                    b.removeChild(i)
                } else {
                    h = i
                }
                if (g) {
                    continue
                }
            }
            if (h) {
                b.replaceChild(N(a, O.whiteSpace(h.data, c, h), c, d, i, b), h);
                h = null
            }
            if (f == 1 && i.firstChild) {
                if (O.hasClass(i, "cufon")) {
                    B[d.engine](a, null, c, d, i, b)
                } else {
                    arguments.callee(i, d)
                }
            }
        }
    }
    var H = " ".split(/\s+/).length == 0;
    var Y = new M();
    var aa = new J();
    var C = new G();
    var X = false;
    var B = {},
    T = {},
    E = {
        enableTextDecoration: false,
        engine: null,
        forceHitArea: false,
        hover: false,
        hoverables: {
            a: true
        },
        printable: true,
        selector: (window.Sizzle || (window.jQuery &&
        function(a) {
            return jQuery(a)
        }) || (window.dojo && dojo.query) || (window.Ext && Ext.query) || (window.$$ &&
        function(a) {
            return $$(a)
        }) || (window.$ &&
        function(a) {
            return $(a)
        }) || (document.querySelectorAll &&
        function(a) {
            return document.querySelectorAll(a)
        }) || V),
        separate: "words",
        textShadow: "none"
    };
    var L = {
        words: /[^\S\u00a0]+/,
        characters: "",
        none: /^/
    };
    P.now = function() {
        D.ready();
        return P
    };
    P.refresh = function() {
        C.repeat.apply(C, arguments);
        return P
    };
    P.registerEngine = function(a, b) {
        if (!b) {
            return P
        }
        B[a] = b;
        return P.set("engine", a)
    };
    P.registerFont = function(a) {
        var c = new I(a),
        b = c.family;
        if (!T[b]) {
            T[b] = new W()
        }
        T[b].add(c);
        return P.set("fontFamily", '"' + b + '"')
    };
    P.replace = function(a, b, c) {
        b = U(E, b);
        if (!b.engine) {
            return P
        }
        if (!X) {
            O.addClass(D.root(), "cufon-active cufon-loading");
            O.ready(function() {
                O.addClass(O.removeClass(D.root(), "cufon-loading"), "cufon-ready")
            });
            X = true
        }
        if (b.hover) {
            b.forceHitArea = true
        }
        if (typeof b.textShadow == "string") {
            b.textShadow = O.textShadow(b.textShadow)
        }
        if (typeof b.color == "string" && /^-/.test(b.color)) {
            b.textGradient = O.gradient(b.color)
        }
        if (!c) {
            C.add(a, arguments)
        }
        if (a.nodeType || typeof a == "string") {
            a = [a]
        }
        O.ready(function() {
            for (var e = 0, f = a.length; e < f; ++e) {
                var d = a[e];
                if (typeof d == "string") {
                    P.replace(b.selector(d), b, true)
                } else {
                    Q(d, b)
                }
            }
        });
        return P
    };
    P.set = function(b, a) {
        E[b] = a;
        return P
    };
    return P
})();
Cufon.registerEngine("canvas", (function() {
    var g = document.createElement("canvas");
    if (!g || !g.getContext || !g.getContext.apply) {
        return
    }
    g = null;
    var h = Cufon.CSS.supports("display", "inline-block");
    var j = !h && (document.compatMode == "BackCompat" || /frameset|transitional/i.test(document.doctype.publicId));
    var i = document.createElement("style");
    i.type = "text/css";
    i.appendChild(document.createTextNode((".cufon-canvas{text-indent:0;}@media screen,projection{.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle;" + (j ? "": "font-size:1px;line-height:1px;") + "}.cufon-canvas .cufon-alt{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}" + (h ? ".cufon-canvas canvas{position:relative;}": ".cufon-canvas canvas{position:absolute;}") + "}@media print{.cufon-canvas{padding:0;}.cufon-canvas canvas{display:none;}.cufon-canvas .cufon-alt{display:inline;}}").replace(/;/g, "!important;")));
    document.getElementsByTagName("head")[0].appendChild(i);
    function k(a, r) {
        var c = 0,
        d = 0;
        var s = [],
        b = /([mrvxe])([^a-z]*)/g,
        f;
        generate: for (var q = 0; f = b.exec(a); ++q) {
            var e = f[2].split(",");
            switch (f[1]) {
            case "v":
                s[q] = {
                    m: "bezierCurveTo",
                    a: [c + ~~e[0], d + ~~e[1], c + ~~e[2], d + ~~e[3], c += ~~e[4], d += ~~e[5]]
                };
                break;
            case "r":
                s[q] = {
                    m: "lineTo",
                    a: [c += ~~e[0], d += ~~e[1]]
                };
                break;
            case "m":
                s[q] = {
                    m: "moveTo",
                    a: [c = ~~e[0], d = ~~e[1]]
                };
                break;
            case "x":
                s[q] = {
                    m: "closePath"
                };
                break;
            case "e":
                break generate
            }
            r[s[q].m].apply(r, s[q].a)
        }
        return s
    }
    function l(a, b) {
        for (var c = 0, d = a.length; c < d; ++c) {
            var e = a[c];
            b[e.m].apply(b, e.a)
        }
    }
    return function(aF, aD, a, aL, av, aC) {
        var a3 = (aD === null);
        if (a3) {
            aD = av.alt
        }
        var az = aF.viewBox;
        var a1 = a.getSize("fontSize", aF.baseSize);
        var c = a.get("letterSpacing");
        c = (c == "normal") ? 0: a1.convertFrom(parseInt(c, 10));
        var ax = 0,
        b = 0,
        d = 0,
        aH = 0;
        var aB = aL.textShadow,
        f = [];
        if (aB) {
            for (var aG = aB.length; aG--;) {
                var aq = aB[aG];
                var x = a1.convertFrom(parseFloat(aq.offX));
                var an = a1.convertFrom(parseFloat(aq.offY));
                f[aG] = [x, an];
                if (an < ax) {
                    ax = an
                }
                if (x > b) {
                    b = x
                }
                if (an > d) {
                    d = an
                }
                if (x < aH) {
                    aH = x
                }
            }
        }
        var aw = Cufon.CSS.textTransform(aD, a).split(""),
        aP;
        var a2 = aF.glyphs,
        aJ,
        aZ,
        aO;
        var a5 = 0,
        aV,
        ar = [];
        for (var aG = 0, aK = 0, aR = aw.length; aG < aR; ++aG) {
            aJ = a2[aP = aw[aG]] || aF.missingGlyph;
            if (!aJ) {
                continue
            }
            if (aZ) {
                a5 -= aO = aZ[aP] || 0;
                ar[aK - 1] -= aO
            }
            a5 += aV = ar[aK++] = ~~ (aJ.w || aF.w) + c;
            aZ = aJ.k
        }
        if (aV === undefined) {
            return null
        }
        b += az.width - aV;
        aH += az.minX;
        var aN,
        a0;
        if (a3) {
            aN = av;
            a0 = av.firstChild
        } else {
            aN = document.createElement("span");
            aN.className = "cufon cufon-canvas";
            aN.alt = aD;
            a0 = document.createElement("canvas");
            aN.appendChild(a0);
            if (aL.printable) {
                var aM = document.createElement("span");
                aM.className = "cufon-alt";
                aM.appendChild(document.createTextNode(aD));
                aN.appendChild(aM)
            }
        }
        var au = aN.style;
        var ao = a0.style;
        var a4 = a1.convert(az.height);
        var ay = Math.ceil(a4);
        var e = ay / a4;
        var ap = e * Cufon.CSS.fontStretch(a.get("fontStretch"));
        var y = a5 * ap;
        var aS = Math.ceil(a1.convert(y + b - aH));
        var aX = Math.ceil(a1.convert(az.height - ax + d));
        a0.width = aS;
        a0.height = aX;
        ao.width = aS + "px";
        ao.height = aX + "px";
        ax += az.minY;
        ao.top = Math.round(a1.convert(ax - aF.ascent)) + "px";
        ao.left = Math.round(a1.convert(aH)) + "px";
        var aQ = Math.ceil(a1.convert(y)) + "px";
        if (h) {
            au.width = aQ;
            au.height = a1.convert(aF.height) + "px"
        } else {
            au.paddingLeft = aQ;
            au.paddingBottom = (a1.convert(aF.height) - 1) + "px"
        }
        var aA = a0.getContext("2d"),
        at = a4 / az.height;
        aA.scale(at, at * e);
        aA.translate( - aH, -ax);
        aA.lineWidth = aF.face["underline-thickness"];
        aA.save();
        function aY(m, n) {
            aA.strokeStyle = n;
            aA.beginPath();
            aA.moveTo(0, m);
            aA.lineTo(a5, m);
            aA.stroke()
        }
        var aW = aL.enableTextDecoration ? Cufon.CSS.textDecoration(aC, a) : {};
        if (aW.underline) {
            aY( - aF.face["underline-position"], aW.underline)
        }
        if (aW.overline) {
            aY(aF.ascent, aW.overline)
        }
        function aI() {
            aA.scale(ap, 1);
            for (var m = 0, n = 0, o = aw.length; m < o; ++m) {
                var p = a2[aw[m]] || aF.missingGlyph;
                if (!p) {
                    continue
                }
                if (p.d) {
                    aA.beginPath();
                    if (p.code) {
                        l(p.code, aA)
                    } else {
                        p.code = k("m" + p.d, aA)
                    }
                    aA.fill()
                }
                aA.translate(ar[n++], 0)
            }
            aA.restore()
        }
        if (aB) {
            for (var aG = aB.length; aG--;) {
                var aq = aB[aG];
                aA.save();
                aA.fillStyle = aq.color;
                aA.translate.apply(aA, f[aG]);
                aI()
            }
        }
        var aT = aL.textGradient;
        if (aT) {
            var aE = aT.stops,
            aU = aA.createLinearGradient(0, az.minY, 0, az.maxY);
            for (var aG = 0, aR = aE.length; aG < aR; ++aG) {
                aU.addColorStop.apply(aU, aE[aG])
            }
            aA.fillStyle = aU
        } else {
            aA.fillStyle = a.get("color")
        }
        aI();
        if (aW["line-through"]) {
            aY( - aF.descent, aW["line-through"])
        }
        return aN
    }
})());
Cufon.registerEngine("vml", (function() {
    var l = document.namespaces;
    if (!l) {
        return
    }
    l.add("cvml", "urn:schemas-microsoft-com:vml");
    l = null;
    var h = document.createElement("cvml:shape");
    h.style.behavior = "url(#default#VML)";
    if (!h.coordsize) {
        return
    }
    h = null;
    var j = (document.documentMode || 0) < 8;
    document.write(('<style type="text/css">.cufon-vml-canvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}.cufon-vml-canvas{position:absolute;text-align:left;}.cufon-vml{display:inline-block;position:relative;vertical-align:' + (j ? "middle": "text-bottom") + ";}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px;}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none;}.cufon-vml .cufon-alt{display:inline;}}</style>").replace(/;/g, "!important;"));
    function n(b, a) {
        return i(b, /(?:em|ex|%)$|^[a-z-]+$/i.test(a) ? "1em": a)
    }
    function i(b, a) {
        if (/px$/i.test(a)) {
            return parseFloat(a)
        }
        var c = b.style.left,
        d = b.runtimeStyle.left;
        b.runtimeStyle.left = b.currentStyle.left;
        b.style.left = a.replace("%", "em");
        var e = b.style.pixelLeft;
        b.style.left = c;
        b.runtimeStyle.left = d;
        return e
    }
    var k = {};
    function m(f) {
        var e = f.id;
        if (!k[e]) {
            var a = f.stops,
            g = document.createElement("cvml:fill"),
            d = [];
            g.type = "gradient";
            g.angle = 180;
            g.focus = "0";
            g.method = "sigma";
            g.color = a[0][1];
            for (var b = 1, c = a.length - 1; b < c; ++b) {
                d.push(a[b][0] * 100 + "% " + a[b][1])
            }
            g.colors = d.join(",");
            g.color2 = a[c][1];
            k[e] = g
        }
        return k[e]
    }
    return function(aI, aE, aT, aM, aw, aF, aY) {
        var bb = (aE === null);
        if (bb) {
            aE = aw.alt
        }
        var aA = aI.viewBox;
        var a9 = aT.computedFontSize || (aT.computedFontSize = new Cufon.CSS.Size(n(aF, aT.get("fontSize")) + "px", aI.baseSize));
        var aZ = aT.computedLSpacing;
        if (aZ == undefined) {
            aZ = aT.get("letterSpacing");
            aT.computedLSpacing = aZ = (aZ == "normal") ? 0: ~~a9.convertFrom(i(aF, aZ))
        }
        var aU,
        a8;
        if (bb) {
            aU = aw;
            a8 = aw.firstChild
        } else {
            aU = document.createElement("span");
            aU.className = "cufon cufon-vml";
            aU.alt = aE;
            a8 = document.createElement("span");
            a8.className = "cufon-vml-canvas";
            aU.appendChild(a8);
            if (aM.printable) {
                var aO = document.createElement("span");
                aO.className = "cufon-alt";
                aO.appendChild(document.createTextNode(aE));
                aU.appendChild(aO)
            }
            if (!aY) {
                aU.appendChild(document.createElement("cvml:shape"))
            }
        }
        var av = aU.style;
        var e = a8.style;
        var bd = a9.convert(aA.height),
        aC = Math.ceil(bd);
        var a = aC / bd;
        var g = a * Cufon.CSS.fontStretch(aT.get("fontStretch"));
        var b = aA.minX,
        c = aA.minY;
        e.height = aC;
        e.top = Math.round(a9.convert(c - aI.ascent));
        e.left = Math.round(a9.convert(b));
        av.height = a9.convert(aI.height) + "px";
        var a4 = aM.enableTextDecoration ? Cufon.CSS.textDecoration(aF, aT) : {};
        var aG = aT.get("color");
        var ay = Cufon.CSS.textTransform(aE, aT).split(""),
        aW;
        var ba = aI.glyphs,
        aK,
        a7,
        aQ;
        var be = 0,
        au = [],
        d = 0,
        a2;
        var a0,
        aB = aM.textShadow;
        for (var aJ = 0, aL = 0, aS = ay.length; aJ < aS; ++aJ) {
            aK = ba[aW = ay[aJ]] || aI.missingGlyph;
            if (!aK) {
                continue
            }
            if (a7) {
                be -= aQ = a7[aW] || 0;
                au[aL - 1] -= aQ
            }
            be += a2 = au[aL++] = ~~ (aK.w || aI.w) + aZ;
            a7 = aK.k
        }
        if (a2 === undefined) {
            return null
        }
        var aX = -b + be + (aA.width - a2);
        var az = a9.convert(aX * g),
        aV = Math.round(az);
        var aq = aX + "," + aA.height,
        bc;
        var ax = "r" + aq + "ns";
        var a1 = aM.textGradient && m(aM.textGradient);
        for (aJ = 0, aL = 0; aJ < aS; ++aJ) {
            aK = ba[ay[aJ]] || aI.missingGlyph;
            if (!aK) {
                continue
            }
            if (bb) {
                a0 = a8.childNodes[aL];
                while (a0.firstChild) {
                    a0.removeChild(a0.firstChild)
                }
            } else {
                a0 = document.createElement("cvml:shape");
                a8.appendChild(a0)
            }
            a0.stroked = "f";
            a0.coordsize = aq;
            a0.coordorigin = bc = (b - d) + "," + c;
            a0.path = (aK.d ? "m" + aK.d + "xe": "") + "m" + bc + ax;
            a0.fillcolor = aG;
            if (a1) {
                a0.appendChild(a1.cloneNode(false))
            }
            var aD = a0.style;
            aD.width = aV;
            aD.height = aC;
            if (aB) {
                var a5 = aB[0],
                a6 = aB[1];
                var aN = Cufon.CSS.color(a5.color),
                aR;
                var ar = document.createElement("cvml:shadow");
                ar.on = "t";
                ar.color = aN.color;
                ar.offset = a5.offX + "," + a5.offY;
                if (a6) {
                    aR = Cufon.CSS.color(a6.color);
                    ar.type = "double";
                    ar.color2 = aR.color;
                    ar.offset2 = a6.offX + "," + a6.offY
                }
                ar.opacity = aN.opacity || (aR && aR.opacity) || 1;
                a0.appendChild(ar)
            }
            d += au[aL++]
        }
        var at = a0.nextSibling,
        a3,
        aP;
        if (aM.forceHitArea) {
            if (!at) {
                at = document.createElement("cvml:rect");
                at.stroked = "f";
                at.className = "cufon-vml-cover";
                a3 = document.createElement("cvml:fill");
                a3.opacity = 0;
                at.appendChild(a3);
                a8.appendChild(at)
            }
            aP = at.style;
            aP.width = aV;
            aP.height = aC
        } else {
            if (at) {
                a8.removeChild(at)
            }
        }
        av.width = Math.max(Math.ceil(a9.convert(be * g)), 0);
        if (j) {
            var f = aT.computedYAdjust;
            if (f === undefined) {
                var aH = aT.get("lineHeight");
                if (aH == "normal") {
                    aH = "1em"
                } else {
                    if (!isNaN(aH)) {
                        aH += "em"
                    }
                }
                aT.computedYAdjust = f = 0.5 * (i(aF, aH) - parseFloat(av.height))
            }
            if (f) {
                av.marginTop = Math.ceil(f) + "px";
                av.marginBottom = f + "px"
            }
        }
        return aU
    }
})());

function css_browser_selector(e) {
    var f = e.toLowerCase(),
    l = function(b) {
        return f.indexOf(b) > -1
    },
    k = "gecko",
    d = "webkit",
    j = "safari",
    i = document.getElementsByTagName("html")[0],
    a = [(!(/opera|webtv/i.test(f)) && /msie\s(\d)/.test(f)) ? ("ie ie" + RegExp.$1) : l("firefox/2") ? k + " ff2": l("firefox/3.5") ? k + " ff3 ff3_5": l("firefox/3") ? k + " ff3": l("gecko/") ? k: /opera(\s|\/)(\d+)/.test(f) ? "opera opera" + RegExp.$2: l("konqueror") ? "konqueror": l("chrome") ? d + " chrome": l("iron") ? d + " iron": l("applewebkit/") ? d + " " + j + (/version\/(\d+)/.test(f) ? " " + j + RegExp.$1: "") : l("mozilla/") ? k: "", l("j2me") ? "mobile": l("iphone") ? "iphone": l("ipod") ? "ipod": l("mac") ? "mac": l("darwin") ? "mac": l("webtv") ? "webtv": l("win") ? "win": l("freebsd") ? "freebsd": (l("x11") || l("linux")) ? "linux": "", "js"];
    c = a.join(" ");
    i.className += " " + c;
    return c
}
css_browser_selector(navigator.userAgent);
$(document).ready(function() {
    $("#popupBox").hide();
    $("#btn-ask").hover(function() {
        $("#popupBox").fadeIn()
    });
    $("#popupBox, #popupBottom").hover(function() {},
    function() {
        $(this).fadeOut()
    })
});
function popup(b, a) {
    thex = findPosX(a);
    they = findPosY(a);
    theBox = document.getElementById("popup" + b);
    theLink = a;
    theLinkW = theLink.offsetWidth;
    theLinkH = theLink.offsetHeight;
    thex = thex + theLinkW - 310;
    if (thex > 900) {
        thex = 900
    }
    they = they + theLinkH;
    document.getElementById("popup" + b).style.left = thex + "px";
    document.getElementById("popup" + b).style.top = they + "px";
    document.getElementById("popup" + b).style.display = "inline"
}
function findPosX(a) {
    var b = 0;
    if (a.offsetParent) {
        while (1) {
            b += a.offsetLeft;
            if (!a.offsetParent) {
                break
            }
            a = a.offsetParent
        }
    } else {
        if (a.x) {
            b += a.x
        }
    }
    return b
}
function findPosY(b) {
    var a = 0;
    if (b.offsetParent) {
        while (1) {
            a += b.offsetTop;
            if (!b.offsetParent) {
                break
            }
            b = b.offsetParent
        }
    } else {
        if (b.y) {
            a += b.y
        }
    }
    return a
}
function lightsOff() {
    document.getElementById("fade").style.display = "block"
}
function lightsOn() {
    document.getElementById("fade").style.display = "none"
}
function disableButton(a) {
    document.getElementById(a).disabled = true
}
function enableButton(a) {
    document.getElementById(a).disabled = false
};
var s_account = "mormonorg";
var s = s_gi(s_account);
s.charSet = "UTF-8";
s.currencyCode = "USD";
s.trackDownloadLinks = true;
s.trackExternalLinks = true;
s.trackInlineStats = true;
s.linkDownloadFileTypes = "exe,zip,wav,mp3,mp4,mov,mpg,avi,wmv,doc,pdf,xls,flv";
s.linkInternalFilters = "javascript:,mormon.org";
s.linkLeaveQueryString = false;
s.linkTrackVars = "None";
s.linkTrackEvents = "None";
s.dc = 112;
var s_objectID;
function s_c2fe(j) {
    var g = "",
    i = 0,
    k,
    h,
    d,
    l;
    while (1) {
        k = j.indexOf('"', i);
        d = j.indexOf("\\", i);
        l = j.indexOf("\n", i);
        if (k < 0 || (d >= 0 && d < k)) {
            k = d
        }
        if (k < 0 || (l >= 0 && l < k)) {
            k = l
        }
        if (k >= 0) {
            g += (k > i ? j.substring(i, k) : "") + (k == l ? "\\n": "\\" + j.substring(k, k + 1));
            i = k + 1
        } else {
            return g + j.substring(i)
        }
    }
    return j
}
function s_c2fa(g) {
    var d = g.indexOf("(") + 1,
    h = g.indexOf(")"),
    b = "",
    i;
    while (d >= 0 && d < h) {
        i = g.substring(d, d + 1);
        if (i == ",") {
            b += '","'
        } else {
            if (("\n\r\t ").indexOf(i) < 0) {
                b += i
            }
        }
        d++
    }
    return b ? '"' + b + '"': b
}
function s_c2f(cc) {
    cc = "" + cc;
    var fc = "var f=new Function(",
    s = cc.indexOf(";", cc.indexOf("{")),
    e = cc.lastIndexOf("}"),
    o,
    a,
    d,
    q,
    c,
    f,
    h,
    x;
    fc += s_c2fa(cc) + ',"var s=new Object;';
    c = cc.substring(s + 1, e);
    s = c.indexOf("function");
    while (s >= 0) {
        d = 1;
        q = "";
        x = 0;
        f = c.substring(s);
        a = s_c2fa(f);
        e = o = c.indexOf("{", s);
        e++;
        while (d > 0) {
            h = c.substring(e, e + 1);
            if (q) {
                if (h == q && !x) {
                    q = ""
                }
                if (h == "\\") {
                    x = x ? 0: 1
                } else {
                    x = 0
                }
            } else {
                if (h == '"' || h == "'") {
                    q = h
                }
                if (h == "{") {
                    d++
                }
                if (h == "}") {
                    d--
                }
            }
            if (d > 0) {
                e++
            }
        }
        c = c.substring(0, s) + "new Function(" + (a ? a + ",": "") + '"' + s_c2fe(c.substring(o + 1, e)) + '")' + c.substring(e + 1);
        s = c.indexOf("function")
    }
    fc += s_c2fe(c) + ';return s");';
    eval(fc);
    return f
}
function s_gi(un, pg, ss) {
    var c = "function s_c(un,pg,ss){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s.wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.wd.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=function(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)return o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.indexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for(var p=0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1))<0)return 0;return 1};s.rep=function(x,o,n){var i=x.indexOf(o);while(x&&i>=0){x=x.substring(0,i)+n+x.substring(i+o.length);i=x.indexOf(o,i+n.length)}return x};s.ape=function(x){var s=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em==1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>=0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x};s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.indexOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t,a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.length?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0)a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);return (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=function(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=function(){var s=this,d=s.wd.location.hostname,n=s.fpCookieDomainPeriods,p;if(!n)n=s.cookieDomainPeriods;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');if(p>=0){while(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','c_gdf',0)?d.substring(p):d}}return s.c_d};s.c_r=function(k){var s=this;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.length:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s.c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if(e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=new Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cookie=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expires='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k)==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in,n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x.o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r;if(s.apv>=5&&(!s.isopera||s.apv>=7))eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m(t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s.m(b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=s.m(f)?s[f](a):f(a);s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'];s.eh(window,\"onerror\",1);s.etfs=1;var c=s.t();if(c)s.d.write(c);s.etfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=function(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.location!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.etfs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.tfs};s.ca=function(){var s=this,imn='s_i_'+s.fun;if(s.d.images&&s.apv>=3&&(!s.isopera||s.apv>=7)&&(s.ns6<0||s.apv>=6.1)){s.ios=1;if(!s.d.images[imn]&&(!s.isns||(s.apv<4||s.apv>=5))){s.d.write('<im'+'g name=\"'+imn+'\" height=1 width=1 border=0 alt=\"\">');if(!s.d.images[imn])s.ios=0}}};s.mr=function(sess,q,ta){var s=this,dc=s.dc,t1=s.trackingServer,t2=s.trackingServerSecure,ns=s.visitorNamespace,unc=s.rep(s.fun,'_','-'),imn='s_i_'+s.fun,im,b,e,rs='http'+(s.ssl?'s':'')+'://'+(t1?(s.ssl&&t2?t2:t1):((ns?ns:(s.ssl?'102':unc))+'.'+(s.dc?s.dc:112)+'.2o7.net'))+'/b/ss/'+s.un+'/1/H.9-pdv-2/'+sess+'?[AQB]&ndh=1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s.isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)}if(s.ios||s.ss){if (!s.ss)s.ca();im=s.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=s.wd[imn]=new Image;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'||ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;while(e.getTime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c=\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'};s.gg=function(v){var s=this;return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0,2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=function(v){var s=this;s.pt(v,',','glf',0)};s.gv=function(v){var s=this;return s['vpm_'+v]?s['vpv_'+v]:(s[v]?s[v]:'')};s.havf=function(t,a){var s=this,b=t.substring(0,4),x=t.substring(4),n=parseInt(x),k='g_'+t,m='vpm_'+t,q=t,v=s.linkTrackVars,e=s.linkTrackEvents;s[k]=s.gv(t);if(s.lnk||s.eo){v=v?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]='';if(t=='events'&&e)s[k]=s.fs(s[k],e)}s[m]=0;if(t=='visitorID')q='vid';else if(t=='pageURL')q='g';else if(t=='referrer')q='r';else if(t=='vmk')q='vmt';else if(t=='charSet'){q='ce';if(s[k]&&s.em==2)s[k]='UTF-8'}else if(t=='visitorNamespace')q='ns';else if(t=='cookieDomainPeriods')q='cdp';else if(t=='cookieLifetime')q='cl';else if(t=='variableProvider')q='vvp';else if(t=='currencyCode')q='cc';else if(t=='channel')q='ch';else if(t=='campaign')q='v0';else if(s.num(x)) {if(b=='prop')q='c'+n;else if(b=='eVar')q='v'+n;else if(b=='hier'){q='h'+n;s[k]=s.fl(s[k],255)}}if(s[k]&&t!='linkName'&&t!='linkType')s.qav+='&'+q+'='+s.ape(s[k]);return ''};s.hav=function(){var s=this;s.qav='';s.pt(s.vl_t,',','havf',0);return s.qav};s.lnf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var te=t.indexOf('=');if(t&&te>0&&h.indexOf(t.substring(te+1))>=0)return t.substring(0,te);return ''};s.ln=function(h){var s=this,n=s.linkNames;if(n)return s.pt(n,',','lnf',h);return ''};s.ltdf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var qi=h.indexOf('?');h=qi>=0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.length+1))=='.'+t)return 1;return 0};s.ltef=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';if(t&&h.indexOf(t)>=0)return 1;return 0};s.lt=function(h){var s=this,lft=s.linkDownloadFileTypes,lef=s.linkExternalFilters,lif=s.linkInternalFilters;lif=lif?lif:s.wd.location.hostname;h=h.toLowerCase();if(s.trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))return 'e';return ''};s.lc=new Function('e','var s=s_c_il['+s._in+'],b=s.eh(this,\"onclick\");s.lnk=s.co(this);s.t();s.lnk=0;if(b)return this[b](e);return true');s.bc=new Function('e','var s=s_c_il['+s._in+'],f;if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=e.srcElement?e.srcElement:e.target;eval(\"try{if(s.eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t()}catch(f){}\");s.eo=0');s.ot=function(o){var a=o.type,b=o.tagName;return (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A':'').toUpperCase()};s.oid=function(o){var s=this,t=s.ot(o),p=o.protocol,c=o.onclick,n='',x=0;if(!o.s_oid){if(o.href&&(t=='A'||t=='AREA')&&(!c||!p||p.toLowerCase().indexOf('javascript')<0))n=o.href;else if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''),' ','');x=2}else if(o.value&&(t=='INPUT'||t=='SUBMIT')){n=o.value;x=3}else if(o.src&&t=='IMAGE')n=o.src;if(n){o.s_oid=s.fl(n,100);o.s_oidt=x}}return o.s_oid};s.rqf=function(t,un){var s=this,e=t.indexOf('='),u=e>=0?','+t.substring(0,e)+',':'';return u&&u.indexOf(','+un+',')>=0?s.epa(t.substring(e+1)):''};s.rq=function(un){var s=this,c=un.indexOf(','),v=s.c_r('s_sq'),q='';if(c<0)return s.pt(v,'&','rqf',un);return s.pt(un,',','rq',0)};s.sqp=function(t,a){var s=this,e=t.indexOf('='),q=e<0?'':s.epa(t.substring(e+1));s.sqq[q]='';if(e>=0)s.pt(t.substring(0,e),',','sqs',q);return 0};s.sqs=function(un,q){var s=this;s.squ[un]=q;return 0};s.sq=function(q){var s=this,k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Object;s.squ=new Object;s.sqq[q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v='';for(x in s.squ)s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':'')+x;for(x in s.sqq)if(x&&s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq[x]+'='+s.ape(x);c++}return s.c_w(k,v,0)};s.wdl=new Function('e','var s=s_c_il['+s._in+'],r=true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r=this[b](e);for(i=0;i<s.d.links.length;i++){o=s.d.links[i];oc=o.onclick?\"\"+o.onclick:\"\";if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=function(){var s=this;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=5)){if(s.b&&s.b.attachEvent)s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd,'onload',0,s.wdl)}};s.vs=function(x){var s=this,v=s.visitorSampling,g=s.visitorSamplingGroup,k='s_vsn_'+s.un+(g?'_'+g:''),n=s.c_r(k),e=new Date,y=e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=100;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if(n%10000>v)return 0}return 1};s.dyasmf=function(t,m){if(t&&m&&m.indexOf(t)>=0)return 1;return 0};s.dyasf=function(t,m){var s=this,i=t?t.indexOf('='):-1,n,x;if(i>=0&&m){var n=t.substring(0,i),x=t.substring(i+1);if(s.pt(x,',','dyasmf',m))return n}return 0};s.uns=function(){var s=this,x=s.dynamicAccountSelection,l=s.dynamicAccountList,m=s.dynamicAccountMatch,n,i;s.un.toLowerCase();if(x&&l){if(!m)m=s.wd.location.host;if(!m.toLowerCase)m=''+m;l=l.toLowerCase();m=m.toLowerCase();n=s.pt(l,';','dyasf',m);if(n)s.un=n}i=s.un.indexOf(',');s.fun=i<0?s.un:s.un.substring(0,i)};s.sa=function(un){s.un=un;if(!s.oun)s.oun=un;else if((','+s.oun+',').indexOf(un)<0)s.oun+=','+un;s.uns()};s.t=function(){var s=this,trk=1,tm=new Date,sed=Math&&Math.random?Math.floor(Math.random()*10000000000000):tm.getTime(),sess='s'+Math.floor(tm.getTime()/10800000)%10+sed,yr=tm.getYear(),vt=tm.getDate()+'/'+tm.getMonth()+'/'+(yr<1900?yr+1900:yr)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tfs=s.gtfs(),ta='',q='',qs='';s.uns();if(!s.q){var tl=tfs.location,x='',c='',v='',p='',bw='',bh='',j='1.0',k=s.c_w('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0,ps;if(s.apv>=4)x=screen.width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3){j='1.1';v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){j='1.2';c=screen.pixelDepth;bw=s.wd.innerWidth;bh=s.wd.innerHeight;if(s.apv>=4.06)j='1.3'}}s.pl=s.n.plugins}else if(s.isie){if(s.apv>=4){v=s.n.javaEnabled()?'Y':'N';j='1.2';c=screen.colorDepth;if(s.apv>=5){bw=s.d.documentElement.offsetWidth;bh=s.d.documentElement.offsetHeight;j='1.3';if(!s.ismac&&s.b){s.b.addBehavior('#default#homePage');hp=s.b.isHomePage(tl)?\"Y\":\"N\";s.b.addBehavior('#default#clientCaps');ct=s.b.connectionType}}}else r=''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=s.fl(s.pl[pn].name,100)+';';if(p.indexOf(ps)<0)p+=ps;pn++}s.q=(x?'&s='+s.ape(x):'')+(c?'&c='+s.ape(c):'')+(j?'&j='+j:'')+(v?'&v='+v:'')+(k?'&k='+k:'')+(bw?'&bw='+bw:'')+(bh?'&bh='+bh:'')+(ct?'&ct='+s.ape(ct):'')+(hp?'&hp='+hp:'')+(p?'&p='+s.ape(p):'')}if(s.usePlugins)s.doPlugins(s);var l=s.wd.location,r=tfs.document.referrer;if(!s.pageURL)s.pageURL=s.fl(l?l:'',255);if(!s.referrer)s.referrer=s.fl(r?r:'',255);if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if(!o)return '';var p=s.gv('pageName'),w=1,t=s.ot(o),n=s.oid(o),x=o.s_oidt,h,l,i,oc;if(s.eo&&o==s.eo){while(o&&!n&&t!='BODY'){o=o.parentElement?o.parentElement:o.parentNode;if(!o)return '';t=s.ot(o);n=s.oid(o);x=o.s_oidt}oc=o.onclick?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=0)return ''}ta=n?o.target:1;h=o.href?o.href:'';i=h.indexOf('?');h=s.linkLeaveQueryString||i<0?h:h.substring(0,i);l=s.linkName?s.linkName:s.ln(h);t=s.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+='&pe=lnk_'+(t=='d'||t=='e'?s.ape(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev2='+s.ape(l):'');else trk=0;if(s.trackInlineStats){if(!p){p=s.gv('pageURL');w=0}t=s.ot(o);i=o.sourceIndex;if(s.gg('objectID')){n=s.gg('objectID');x=1;i=1}if(p&&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&pidt='+w:'')+'&oid='+s.ape(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.ape(t)+(i?'&oi='+i:'')}}if(!trk&&!qs)return '';if(s.p_r)s.p_r();var code='';if(trk&&s.vs(sed))code=s.mr(sess,(vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?'':qs);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID=s.ppu='';return code};s.tl=function(o,t,n){var s=this;s.lnk=s.co(o);s.linkType=t;s.linkName=n;s.t()};s.ssl=(s.wd.location.protocol.toLowerCase().indexOf('https')>=0);s.d=document;s.b=s.d.body;s.n=navigator;s.u=s.n.userAgent;s.ns6=s.u.indexOf('Netscape6/');var apn=s.n.appName,v=s.n.appVersion,ie=v.indexOf('MSIE '),o=s.u.indexOf('Opera '),i;if(v.indexOf('Opera')>=0||o>0)apn='Opera';s.isie=(apn=='Microsoft Internet Explorer');s.isns=(apn=='Netscape');s.isopera=(apn=='Opera');s.ismac=(s.u.indexOf('Mac')>=0);if(o>0)s.apv=parseFloat(s.u.substring(o+6));else if(ie>0){s.apv=parseInt(i=v.substring(ie+5));if(s.apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)s.apv=parseFloat(s.u.substring(s.ns6+10));else s.apv=parseFloat(v);s.em=0;if(String.fromCharCode){i=escape(String.fromCharCode(256)).toUpperCase();s.em=(i=='%C4%80'?2:(i=='%U0100'?1:0))}s.sa(un);s.vl_l='visitorID,vmk,ppu,charSet,visitorNamespace,cookieDomainPeriods,cookieLifetime,pageName,pageURL,referrer,currencyCode,purchaseID';s.vl_t=s.vl_l+',variableProvider,channel,server,pageType,campaign,state,zip,events,products,linkName,linkType';for(var n=1;n<51;n++)s.vl_t+=',prop'+n+',eVar'+n+',hier'+n;s.vl_g=s.vl_t+',trackDownloadLinks,trackExternalLinks,trackInlineStats,linkLeaveQueryString,linkDownloadFileTypes,linkExternalFilters,linkInternalFilters,linkNames';if(pg)s.gl(s.vl_g);s.ss=ss;if(!ss){s.wds();s.ca()}}",
    l = window.s_c_il,
    n = navigator,
    u = n.userAgent,
    v = n.appVersion,
    e = v.indexOf("MSIE "),
    m = u.indexOf("Netscape6/"),
    a,
    i,
    s;
    if (l) {
        for (i = 0; i < l.length; i++) {
            s = l[i];
            if (s.oun == un) {
                return s
            } else {
                if (s.fs(s.oun, un)) {
                    s.sa(un);
                    return s
                }
            }
        }
    }
    if (e > 0) {
        a = parseInt(i = v.substring(e + 5));
        if (a > 3) {
            a = parseFloat(i)
        }
    } else {
        if (m > 0) {
            a = parseFloat(u.substring(m + 10))
        } else {
            a = parseFloat(v)
        }
    }
    if (a >= 5 && v.indexOf("Opera") < 0 && u.indexOf("Opera") < 0) {
        eval(c);
        return new s_c(un, pg, ss)
    } else {
        s = s_c2f(c)
    }
    return s(un, pg, ss)
};
document.createElement("canvas").getContext || (function() {
    var J = Math,
    ab = J.round,
    z = J.sin,
    w = J.cos,
    e = J.abs,
    d = J.sqrt,
    T = 10,
    x = T / 2;
    function c() {
        return this.context_ || (this.context_ = new u(this))
    }
    var q = Array.prototype.slice;
    function b(i, j) {
        var k = q.call(arguments, 2);
        return function() {
            return i.apply(j, k.concat(q.call(arguments)))
        }
    }
    var p = {
        init: function(i) {
            if (/MSIE/.test(navigator.userAgent) && !window.opera) {
                var j = i || document;
                j.createElement("canvas");
                j.attachEvent("onreadystatechange", b(this.init_, this, j))
            }
        },
        init_: function(i) {
            i.namespaces.g_vml_ || i.namespaces.add("g_vml_", "urn:schemas-microsoft-com:vml", "#default#VML");
            i.namespaces.g_o_ || i.namespaces.add("g_o_", "urn:schemas-microsoft-com:office:office", "#default#VML");
            if (!i.styleSheets.ex_canvas_) {
                var j = i.createStyleSheet();
                j.owningElement.id = "ex_canvas_";
                j.cssText = "canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"
            }
            var s = i.getElementsByTagName("canvas"),
            k = 0;
            for (; k < s.length; k++) {
                this.initElement(s[k])
            }
        },
        initElement: function(i) {
            if (!i.getContext) {
                i.getContext = c;
                i.innerHTML = "";
                i.attachEvent("onpropertychange", a);
                i.attachEvent("onresize", g);
                var j = i.attributes;
                if (j.width && j.width.specified) {
                    i.style.width = j.width.nodeValue + "px"
                } else {
                    i.width = i.clientWidth
                }
                if (j.height && j.height.specified) {
                    i.style.height = j.height.nodeValue + "px"
                } else {
                    i.height = i.clientHeight
                }
            }
            return i
        }
    };
    function a(i) {
        var j = i.srcElement;
        switch (i.propertyName) {
        case "width":
            j.style.width = j.attributes.width.nodeValue + "px";
            j.getContext().clearRect();
            break;
        case "height":
            j.style.height = j.attributes.height.nodeValue + "px";
            j.getContext().clearRect();
            break
        }
    }
    function g(i) {
        var j = i.srcElement;
        if (j.firstChild) {
            j.firstChild.style.width = j.clientWidth + "px";
            j.firstChild.style.height = j.clientHeight + "px"
        }
    }
    p.init();
    var o = [],
    R = 0;
    for (; R < 16; R++) {
        var K = 0;
        for (; K < 16; K++) {
            o[R * 16 + K] = R.toString(16) + K.toString(16)
        }
    }
    function t() {
        return [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
    }
    function r(i, j) {
        var A = t(),
        y = 0;
        for (; y < 3; y++) {
            var v = 0;
            for (; v < 3; v++) {
                var k = 0,
                s = 0;
                for (; s < 3; s++) {
                    k += i[y][s] * j[s][v]
                }
                A[y][v] = k
            }
        }
        return A
    }
    function m(i, j) {
        j.fillStyle = i.fillStyle;
        j.lineCap = i.lineCap;
        j.lineJoin = i.lineJoin;
        j.lineWidth = i.lineWidth;
        j.miterLimit = i.miterLimit;
        j.shadowBlur = i.shadowBlur;
        j.shadowColor = i.shadowColor;
        j.shadowOffsetX = i.shadowOffsetX;
        j.shadowOffsetY = i.shadowOffsetY;
        j.strokeStyle = i.strokeStyle;
        j.globalAlpha = i.globalAlpha;
        j.arcScaleX_ = i.arcScaleX_;
        j.arcScaleY_ = i.arcScaleY_;
        j.lineScale_ = i.lineScale_
    }
    function l(i) {
        var j,
        A = 1;
        i = String(i);
        if (i.substring(0, 3) == "rgb") {
            var y = i.indexOf("(", 3),
            v = i.indexOf(")", y + 1),
            k = i.substring(y + 1, v).split(",");
            j = "#";
            var s = 0;
            for (; s < 3; s++) {
                j += o[Number(k[s])]
            }
            if (k.length == 4 && i.substr(3, 1) == "a") {
                A = k[3]
            }
        } else {
            j = i
        }
        return {
            color: j,
            alpha: A
        }
    }
    function ad(i) {
        switch (i) {
        case "butt":
            return "flat";
        case "round":
            return "round";
        case "square":
        default:
            return "square"
        }
    }
    function u(i) {
        this.m_ = t();
        this.mStack_ = [];
        this.aStack_ = [];
        this.currentPath_ = [];
        this.fillStyle = this.strokeStyle = "#000";
        this.lineWidth = 1;
        this.lineJoin = "miter";
        this.lineCap = "butt";
        this.miterLimit = T * 1;
        this.globalAlpha = 1;
        this.canvas = i;
        var j = i.ownerDocument.createElement("div");
        j.style.width = i.clientWidth + "px";
        j.style.height = i.clientHeight + "px";
        j.style.overflow = "hidden";
        j.style.position = "absolute";
        i.appendChild(j);
        this.element_ = j;
        this.lineScale_ = this.arcScaleY_ = this.arcScaleX_ = 1
    }
    var ac = u.prototype;
    ac.clearRect = function() {
        this.element_.innerHTML = ""
    };
    ac.beginPath = function() {
        this.currentPath_ = []
    };
    ac.moveTo = function(i, j) {
        var k = this.getCoords_(i, j);
        this.currentPath_.push({
            type: "moveTo",
            x: k.x,
            y: k.y
        });
        this.currentX_ = k.x;
        this.currentY_ = k.y
    };
    ac.lineTo = function(i, j) {
        var k = this.getCoords_(i, j);
        this.currentPath_.push({
            type: "lineTo",
            x: k.x,
            y: k.y
        });
        this.currentX_ = k.x;
        this.currentY_ = k.y
    };
    ac.bezierCurveTo = function(B, C, A, y, s, j) {
        var k = this.getCoords_(s, j),
        i = this.getCoords_(B, C),
        v = this.getCoords_(A, y);
        h(this, i, v, k)
    };
    function h(i, j, s, k) {
        i.currentPath_.push({
            type: "bezierCurveTo",
            cp1x: j.x,
            cp1y: j.y,
            cp2x: s.x,
            cp2y: s.y,
            x: k.x,
            y: k.y
        });
        i.currentX_ = k.x;
        i.currentY_ = k.y
    }
    ac.quadraticCurveTo = function(i, j, A, y) {
        var v = this.getCoords_(i, j),
        k = this.getCoords_(A, y),
        s = {
            x: this.currentX_ + 0.6666666666666666 * (v.x - this.currentX_),
            y: this.currentY_ + 0.6666666666666666 * (v.y - this.currentY_)
        };
        h(this, s, {
            x: s.x + (k.x - this.currentX_) / 3,
            y: s.y + (k.y - this.currentY_) / 3
        },
        k)
    };
    ac.arc = function(H, I, G, F, C, A) {
        G *= T;
        var B = A ? "at": "wa",
        y = H + w(F) * G - x,
        D = I + z(F) * G - x,
        v = H + w(C) * G - x,
        i = I + z(C) * G - x;
        if (y == v && !A) {
            y += 0.125
        }
        var s = this.getCoords_(H, I),
        k = this.getCoords_(y, D),
        j = this.getCoords_(v, i);
        this.currentPath_.push({
            type: B,
            x: s.x,
            y: s.y,
            radius: G,
            xStart: k.x,
            yStart: k.y,
            xEnd: j.x,
            yEnd: j.y
        })
    };
    ac.rect = function(i, j, s, k) {
        this.moveTo(i, j);
        this.lineTo(i + s, j);
        this.lineTo(i + s, j + k);
        this.lineTo(i, j + k);
        this.closePath()
    };
    ac.strokeRect = function(i, j, v, s) {
        var k = this.currentPath_;
        this.beginPath();
        this.moveTo(i, j);
        this.lineTo(i + v, j);
        this.lineTo(i + v, j + s);
        this.lineTo(i, j + s);
        this.closePath();
        this.stroke();
        this.currentPath_ = k
    };
    ac.fillRect = function(i, j, v, s) {
        var k = this.currentPath_;
        this.beginPath();
        this.moveTo(i, j);
        this.lineTo(i + v, j);
        this.lineTo(i + v, j + s);
        this.lineTo(i, j + s);
        this.closePath();
        this.fill();
        this.currentPath_ = k
    };
    ac.createLinearGradient = function(i, j, v, s) {
        var k = new E("gradient");
        k.x0_ = i;
        k.y0_ = j;
        k.x1_ = v;
        k.y1_ = s;
        return k
    };
    ac.createRadialGradient = function(i, j, A, y, v, k) {
        var s = new E("gradientradial");
        s.x0_ = i;
        s.y0_ = j;
        s.r0_ = A;
        s.x1_ = y;
        s.y1_ = v;
        s.r1_ = k;
        return s
    };
    ac.drawImage = function(P) {
        var Q,
        O,
        N,
        L,
        H,
        I,
        G,
        M,
        F = P.runtimeStyle.width,
        y = P.runtimeStyle.height;
        P.runtimeStyle.width = "auto";
        P.runtimeStyle.height = "auto";
        var D = P.width,
        C = P.height;
        P.runtimeStyle.width = F;
        P.runtimeStyle.height = y;
        if (arguments.length == 3) {
            Q = arguments[1];
            O = arguments[2];
            H = I = 0;
            G = N = D;
            M = L = C
        } else {
            if (arguments.length == 5) {
                Q = arguments[1];
                O = arguments[2];
                N = arguments[3];
                L = arguments[4];
                H = I = 0;
                G = D;
                M = C
            } else {
                if (arguments.length == 9) {
                    H = arguments[1];
                    I = arguments[2];
                    G = arguments[3];
                    M = arguments[4];
                    Q = arguments[5];
                    O = arguments[6];
                    N = arguments[7];
                    L = arguments[8]
                } else {
                    throw Error("Invalid number of arguments")
                }
            }
        }
        var A = this.getCoords_(Q, O),
        v = [];
        v.push(" <g_vml_:group", ' coordsize="', T * 10, ",", T * 10, '"', ' coordorigin="0,0"', ' style="width:', 10, "px;height:", 10, "px;position:absolute;");
        if (this.m_[0][0] != 1 || this.m_[0][1]) {
            var s = [];
            s.push("M11=", this.m_[0][0], ",", "M12=", this.m_[1][0], ",", "M21=", this.m_[0][1], ",", "M22=", this.m_[1][1], ",", "Dx=", ab(A.x / T), ",", "Dy=", ab(A.y / T), "");
            var B = A,
            i = this.getCoords_(Q + N, O),
            k = this.getCoords_(Q, O + L),
            j = this.getCoords_(Q + N, O + L);
            B.x = J.max(B.x, i.x, k.x, j.x);
            B.y = J.max(B.y, i.y, k.y, j.y);
            v.push("padding:0 ", ab(B.x / T), "px ", ab(B.y / T), "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(", s.join(""), ", sizingmethod='clip');")
        } else {
            v.push("top:", ab(A.y / T), "px;left:", ab(A.x / T), "px;")
        }
        v.push(' ">', '<g_vml_:image src="', P.src, '"', ' style="width:', T * N, "px;", " height:", T * L, 'px;"', ' cropleft="', H / D, '"', ' croptop="', I / C, '"', ' cropright="', (D - H - G) / D, '"', ' cropbottom="', (C - I - M) / C, '"', " />", "</g_vml_:group>");
        this.element_.insertAdjacentHTML("BeforeEnd", v.join(""))
    };
    ac.stroke = function(aa) {
        var ae = [],
        Z = l(aa ? this.fillStyle: this.strokeStyle),
        Y = Z.color,
        W = Z.alpha * this.globalAlpha;
        ae.push("<g_vml_:shape", ' filled="', !!aa, '"', ' style="position:absolute;width:', 10, "px;height:", 10, 'px;"', ' coordorigin="0 0" coordsize="', T * 10, " ", T * 10, '"', ' stroked="', !aa, '"', ' path="');
        var U = {
            x: null,
            y: null
        },
        V = {
            x: null,
            y: null
        },
        Q = 0;
        for (; Q < this.currentPath_.length; Q++) {
            var X = this.currentPath_[Q];
            switch (X.type) {
            case "moveTo":
                ae.push(" m ", ab(X.x), ",", ab(X.y));
                break;
            case "lineTo":
                ae.push(" l ", ab(X.x), ",", ab(X.y));
                break;
            case "close":
                ae.push(" x ");
                X = null;
                break;
            case "bezierCurveTo":
                ae.push(" c ", ab(X.cp1x), ",", ab(X.cp1y), ",", ab(X.cp2x), ",", ab(X.cp2y), ",", ab(X.x), ",", ab(X.y));
                break;
            case "at":
            case "wa":
                ae.push(" ", X.type, " ", ab(X.x - this.arcScaleX_ * X.radius), ",", ab(X.y - this.arcScaleY_ * X.radius), " ", ab(X.x + this.arcScaleX_ * X.radius), ",", ab(X.y + this.arcScaleY_ * X.radius), " ", ab(X.xStart), ",", ab(X.yStart), " ", ab(X.xEnd), ",", ab(X.yEnd));
                break
            }
            if (X) {
                if (U.x == null || X.x < U.x) {
                    U.x = X.x
                }
                if (V.x == null || X.x > V.x) {
                    V.x = X.x
                }
                if (U.y == null || X.y < U.y) {
                    U.y = X.y
                }
                if (V.y == null || X.y > V.y) {
                    V.y = X.y
                }
            }
        }
        ae.push(' ">');
        if (aa) {
            if (typeof this.fillStyle == "object") {
                var P = this.fillStyle,
                H = 0,
                O = {
                    x: 0,
                    y: 0
                },
                M = 0,
                I = 1;
                if (P.type_ == "gradient") {
                    var G = P.x1_ / this.arcScaleX_,
                    F = P.y1_ / this.arcScaleY_,
                    L = this.getCoords_(P.x0_ / this.arcScaleX_, P.y0_ / this.arcScaleY_),
                    y = this.getCoords_(G, F);
                    H = Math.atan2(y.x - L.x, y.y - L.y) * 180 / Math.PI;
                    if (H < 0) {
                        H += 360
                    }
                    if (H < 0.000001) {
                        H = 0
                    }
                } else {
                    var L = this.getCoords_(P.x0_, P.y0_),
                    C = V.x - U.x,
                    B = V.y - U.y;
                    O = {
                        x: (L.x - U.x) / C,
                        y: (L.y - U.y) / B
                    };
                    C /= this.arcScaleX_ * T;
                    B /= this.arcScaleY_ * T;
                    var k = J.max(C, B);
                    M = 2 * P.r0_ / k;
                    I = 2 * P.r1_ / k - M
                }
                var D = P.colors_;
                D.sort(function(ai, ah) {
                    return ai.offset - ah.offset
                });
                var A = D.length,
                af = D[0].color,
                s = D[A - 1].color,
                N = D[0].alpha * this.globalAlpha,
                ag = D[A - 1].alpha * this.globalAlpha,
                j = [],
                Q = 0;
                for (; Q < A; Q++) {
                    var i = D[Q];
                    j.push(i.offset * I + M + " " + i.color)
                }
                ae.push('<g_vml_:fill type="', P.type_, '"', ' method="none" focus="100%"', ' color="', af, '"', ' color2="', s, '"', ' colors="', j.join(","), '"', ' opacity="', ag, '"', ' g_o_:opacity2="', N, '"', ' angle="', H, '"', ' focusposition="', O.x, ",", O.y, '" />')
            } else {
                ae.push('<g_vml_:fill color="', Y, '" opacity="', W, '" />')
            }
        } else {
            var v = this.lineScale_ * this.lineWidth;
            if (v < 1) {
                W *= v
            }
            ae.push("<g_vml_:stroke", ' opacity="', W, '"', ' joinstyle="', this.lineJoin, '"', ' miterlimit="', this.miterLimit, '"', ' endcap="', ad(this.lineCap), '"', ' weight="', v, 'px"', ' color="', Y, '" />')
        }
        ae.push("</g_vml_:shape>");
        this.element_.insertAdjacentHTML("beforeEnd", ae.join(""))
    };
    ac.fill = function() {
        this.stroke(true)
    };
    ac.closePath = function() {
        this.currentPath_.push({
            type: "close"
        })
    };
    ac.getCoords_ = function(i, j) {
        var k = this.m_;
        return {
            x: T * (i * k[0][0] + j * k[1][0] + k[2][0]) - x,
            y: T * (i * k[0][1] + j * k[1][1] + k[2][1]) - x
        }
    };
    ac.save = function() {
        var i = {};
        m(this, i);
        this.aStack_.push(i);
        this.mStack_.push(this.m_);
        this.m_ = r(t(), this.m_)
    };
    ac.restore = function() {
        m(this.aStack_.pop(), this);
        this.m_ = this.mStack_.pop()
    };
    function n(i) {
        var j = 0;
        for (; j < 3; j++) {
            var k = 0;
            for (; k < 2; k++) {
                if (!isFinite(i[j][k]) || isNaN(i[j][k])) {
                    return false
                }
            }
        }
        return true
    }
    function S(i, j, k) {
        if ( !! n(j)) {
            i.m_ = j;
            if (k) {
                i.lineScale_ = d(e(j[0][0] * j[1][1] - j[0][1] * j[1][0]))
            }
        }
    }
    ac.translate = function(i, j) {
        S(this, r([[1, 0, 0], [0, 1, 0], [i, j, 1]], this.m_), false)
    };
    ac.rotate = function(i) {
        var j = w(i),
        k = z(i);
        S(this, r([[j, k, 0], [ - k, j, 0], [0, 0, 1]], this.m_), false)
    };
    ac.scale = function(i, j) {
        this.arcScaleX_ *= i;
        this.arcScaleY_ *= j;
        S(this, r([[i, 0, 0], [0, j, 0], [0, 0, 1]], this.m_), true)
    };
    ac.transform = function(i, j, y, v, s, k) {
        S(this, r([[i, j, 0], [y, v, 0], [s, k, 1]], this.m_), true)
    };
    ac.setTransform = function(i, j, y, v, s, k) {
        S(this, [[i, j, 0], [y, v, 0], [s, k, 1]], true)
    };
    ac.clip = function() {};
    ac.arcTo = function() {};
    ac.createPattern = function() {
        return new f
    };
    function E(i) {
        this.type_ = i;
        this.r1_ = this.y1_ = this.x1_ = this.r0_ = this.y0_ = this.x0_ = 0;
        this.colors_ = []
    }
    E.prototype.addColorStop = function(i, j) {
        j = l(j);
        this.colors_.push({
            offset: i,
            color: j.color,
            alpha: j.alpha
        })
    };
    function f() {}
    G_vmlCanvasManager = p;
    CanvasRenderingContext2D = u;
    CanvasGradient = E;
    CanvasPattern = f
})();
jQuery.bt = {
    version: "0.9.5-rc1"
}; (function($) {
    jQuery.fn.bt = function(content, options) {
        if (typeof content != "string") {
            var contentSelect = true;
            options = content;
            content = false
        } else {
            var contentSelect = false
        }
        if (jQuery.fn.hoverIntent && jQuery.bt.defaults.trigger == "hover") {
            jQuery.bt.defaults.trigger = "hoverIntent"
        }
        return this.each(function(index) {
            var opts = jQuery.extend(false, jQuery.bt.defaults, jQuery.bt.options, options);
            opts.spikeLength = numb(opts.spikeLength);
            opts.spikeGirth = numb(opts.spikeGirth);
            opts.overlap = numb(opts.overlap);
            var ajaxTimeout = false;
            if (opts.killTitle) {
                $(this).find("[title]").andSelf().each(function() {
                    if (!$(this).attr("bt-xTitle")) {
                        $(this).attr("bt-xTitle", $(this).attr("title")).attr("title", "")
                    }
                })
            }
            if (typeof opts.trigger == "string") {
                opts.trigger = [opts.trigger]
            }
            if (opts.trigger[0] == "hoverIntent") {
                var hoverOpts = jQuery.extend(opts.hoverIntentOpts, {
                    over: function() {
                        this.btOn()
                    },
                    out: function() {
                        this.btOff()
                    }
                });
                $(this).hoverIntent(hoverOpts)
            } else {
                if (opts.trigger[0] == "hover") {
                    $(this).hover(function() {
                        this.btOn()
                    },
                    function() {
                        this.btOff()
                    })
                } else {
                    if (opts.trigger[0] == "now") {
                        if ($(this).hasClass("bt-active")) {
                            this.btOff()
                        } else {
                            this.btOn()
                        }
                    } else {
                        if (opts.trigger[0] == "none") {} else {
                            if (opts.trigger.length > 1 && opts.trigger[0] != opts.trigger[1]) {
                                $(this).bind(opts.trigger[0],
                                function() {
                                    this.btOn()
                                }).bind(opts.trigger[1],
                                function() {
                                    this.btOff()
                                })
                            } else {
                                $(this).bind(opts.trigger[0],
                                function() {
                                    if ($(this).hasClass("bt-active")) {
                                        this.btOff()
                                    } else {
                                        this.btOn()
                                    }
                                })
                            }
                        }
                    }
                }
            }
            this.btOn = function() {
                if (typeof $(this).data("bt-box") == "object") {
                    this.btOff()
                }
                opts.preBuild.apply(this);
                $(jQuery.bt.vars.closeWhenOpenStack).btOff();
                $(this).addClass("bt-active " + opts.activeClass);
                if (contentSelect && opts.ajaxPath == null) {
                    if (opts.killTitle) {
                        $(this).attr("title", $(this).attr("bt-xTitle"))
                    }
                    content = $.isFunction(opts.contentSelector) ? opts.contentSelector.apply(this) : eval(opts.contentSelector);
                    if (opts.killTitle) {
                        $(this).attr("title", "")
                    }
                }
                if (opts.ajaxPath != null && content == false) {
                    if (typeof opts.ajaxPath == "object") {
                        var url = eval(opts.ajaxPath[0]);
                        url += opts.ajaxPath[1] ? " " + opts.ajaxPath[1] : ""
                    } else {
                        var url = opts.ajaxPath
                    }
                    var off = url.indexOf(" ");
                    if (off >= 0) {
                        var selector = url.slice(off, url.length);
                        url = url.slice(0, off)
                    }
                    var cacheData = opts.ajaxCache ? $(document.body).data("btCache-" + url.replace(/\./g, "")) : null;
                    if (typeof cacheData == "string") {
                        content = selector ? $("<div/>").append(cacheData.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : cacheData
                    } else {
                        var target = this;
                        var ajaxOpts = jQuery.extend(false, {
                            type: opts.ajaxType,
                            data: opts.ajaxData,
                            cache: opts.ajaxCache,
                            url: url,
                            complete: function(XMLHttpRequest, textStatus) {
                                if (textStatus == "success" || textStatus == "notmodified") {
                                    if (opts.ajaxCache) {
                                        $(document.body).data("btCache-" + url.replace(/\./g, ""), XMLHttpRequest.responseText)
                                    }
                                    ajaxTimeout = false;
                                    content = selector ? $("<div/>").append(XMLHttpRequest.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : XMLHttpRequest.responseText
                                } else {
                                    if (textStatus == "timeout") {
                                        ajaxTimeout = true
                                    }
                                    content = opts.ajaxError.replace(/%error/g, XMLHttpRequest.statusText)
                                }
                                if ($(target).hasClass("bt-active")) {
                                    target.btOn()
                                }
                            }
                        },
                        opts.ajaxOpts);
                        jQuery.ajax(ajaxOpts);
                        content = opts.ajaxLoading
                    }
                }
                var shadowMarginX = 0;
                var shadowMarginY = 0;
                var shadowShiftX = 0;
                var shadowShiftY = 0;
                if (opts.shadow && !shadowSupport()) {
                    opts.shadow = false;
                    jQuery.extend(opts, opts.noShadowOpts)
                }
                if (opts.shadow) {
                    if (opts.shadowBlur > Math.abs(opts.shadowOffsetX)) {
                        shadowMarginX = opts.shadowBlur * 2
                    } else {
                        shadowMarginX = opts.shadowBlur + Math.abs(opts.shadowOffsetX)
                    }
                    shadowShiftX = (opts.shadowBlur - opts.shadowOffsetX) > 0 ? opts.shadowBlur - opts.shadowOffsetX: 0;
                    if (opts.shadowBlur > Math.abs(opts.shadowOffsetY)) {
                        shadowMarginY = opts.shadowBlur * 2
                    } else {
                        shadowMarginY = opts.shadowBlur + Math.abs(opts.shadowOffsetY)
                    }
                    shadowShiftY = (opts.shadowBlur - opts.shadowOffsetY) > 0 ? opts.shadowBlur - opts.shadowOffsetY: 0
                }
                if (opts.offsetParent) {
                    var offsetParent = $(opts.offsetParent);
                    var offsetParentPos = offsetParent.offset();
                    var pos = $(this).offset();
                    var top = numb(pos.top) - numb(offsetParentPos.top) + numb($(this).css("margin-top")) - shadowShiftY;
                    var left = numb(pos.left) - numb(offsetParentPos.left) + numb($(this).css("margin-left")) - shadowShiftX
                } else {
                    var offsetParent = ($(this).css("position") == "absolute") ? $(this).parents().eq(0).offsetParent() : $(this).offsetParent();
                    var pos = $(this).btPosition();
                    var top = numb(pos.top) + numb($(this).css("margin-top")) - shadowShiftY;
                    var left = numb(pos.left) + numb($(this).css("margin-left")) - shadowShiftX
                }
                var width = $(this).btOuterWidth();
                var height = $(this).outerHeight();
                if (typeof content == "object") {
                    var original = content;
                    var clone = $(original).clone(true).show();
                    var origClones = $(original).data("bt-clones") || [];
                    origClones.push(clone);
                    $(original).data("bt-clones", origClones);
                    $(clone).data("bt-orig", original);
                    $(this).data("bt-content-orig", {
                        original: original,
                        clone: clone
                    });
                    content = clone
                }
                if (typeof content == "null" || content == "") {
                    return
                }
                var $text = $('<div class="bt-content"></div>').append(content).css({
                    padding: opts.padding,
                    position: "absolute",
                    width: (opts.shrinkToFit ? "auto": opts.width),
                    zIndex: opts.textzIndex,
                    left: shadowShiftX,
                    top: shadowShiftY
                }).css(opts.cssStyles);
                var $box = $('<div class="bt-wrapper"></div>').append($text).addClass(opts.cssClass).css({
                    position: "absolute",
                    width: opts.width,
                    zIndex: opts.wrapperzIndex,
                    visibility: "hidden"
                }).appendTo(offsetParent);
                if (jQuery.fn.bgiframe) {
                    $text.bgiframe();
                    $box.bgiframe()
                }
                $(this).data("bt-box", $box);
                var scrollTop = numb($(document).scrollTop());
                var scrollLeft = numb($(document).scrollLeft());
                var docWidth = numb($(window).width());
                var docHeight = numb($(window).height());
                var winRight = scrollLeft + docWidth;
                var winBottom = scrollTop + docHeight;
                var space = new Object();
                var thisOffset = $(this).offset();
                space.top = thisOffset.top - scrollTop;
                space.bottom = docHeight - ((thisOffset + height) - scrollTop);
                space.left = thisOffset.left - scrollLeft;
                space.right = docWidth - ((thisOffset.left + width) - scrollLeft);
                var textOutHeight = numb($text.outerHeight());
                var textOutWidth = numb($text.btOuterWidth());
                if (opts.positions.constructor == String) {
                    opts.positions = opts.positions.replace(/ /, "").split(",")
                }
                if (opts.positions[0] == "most") {
                    var position = "top";
                    for (var pig in space) {
                        position = space[pig] > space[position] ? pig: position
                    }
                } else {
                    for (var x in opts.positions) {
                        var position = opts.positions[x];
                        if ((position == "left" || position == "right") && space[position] > textOutWidth + opts.spikeLength) {
                            break
                        } else {
                            if ((position == "top" || position == "bottom") && space[position] > textOutHeight + opts.spikeLength) {
                                break
                            }
                        }
                    }
                }
                var horiz = left + ((width - textOutWidth) * 0.5);
                var vert = top + ((height - textOutHeight) * 0.5);
                var points = new Array();
                var textTop,
                textLeft,
                textRight,
                textBottom,
                textTopSpace,
                textBottomSpace,
                textLeftSpace,
                textRightSpace,
                crossPoint,
                textCenter,
                spikePoint;
                switch (position) {
                case "top":
                    $text.css("margin-bottom", opts.spikeLength + "px");
                    $box.css({
                        top: (top - $text.outerHeight(true)) + opts.overlap,
                        left: horiz
                    });
                    textRightSpace = (winRight - opts.windowMargin) - ($text.offset().left + $text.btOuterWidth(true));
                    var xShift = shadowShiftX;
                    if (textRightSpace < 0) {
                        $box.css("left", (numb($box.css("left")) + textRightSpace) + "px");
                        xShift -= textRightSpace
                    }
                    textLeftSpace = ($text.offset().left + numb($text.css("margin-left"))) - (scrollLeft + opts.windowMargin);
                    if (textLeftSpace < 0) {
                        $box.css("left", (numb($box.css("left")) - textLeftSpace) + "px");
                        xShift += textLeftSpace
                    }
                    textTop = $text.btPosition().top + numb($text.css("margin-top"));
                    textLeft = $text.btPosition().left + numb($text.css("margin-left"));
                    textRight = textLeft + $text.btOuterWidth();
                    textBottom = textTop + $text.outerHeight();
                    textCenter = {
                        x: textLeft + ($text.btOuterWidth() * opts.centerPointX),
                        y: textTop + ($text.outerHeight() * opts.centerPointY)
                    };
                    points[points.length] = spikePoint = {
                        y: textBottom + opts.spikeLength,
                        x: ((textRight - textLeft) * 0.5) + xShift,
                        type: "spike"
                    };
                    crossPoint = findIntersectX(spikePoint.x, spikePoint.y, textCenter.x, textCenter.y, textBottom);
                    crossPoint.x = crossPoint.x < textLeft + opts.spikeGirth / 2 + opts.cornerRadius ? textLeft + opts.spikeGirth / 2 + opts.cornerRadius: crossPoint.x;
                    crossPoint.x = crossPoint.x > (textRight - opts.spikeGirth / 2) - opts.cornerRadius ? (textRight - opts.spikeGirth / 2) - opts.CornerRadius: crossPoint.x;
                    points[points.length] = {
                        x: crossPoint.x - (opts.spikeGirth / 2),
                        y: textBottom,
                        type: "join"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: crossPoint.x + (opts.spikeGirth / 2),
                        y: textBottom,
                        type: "join"
                    };
                    points[points.length] = spikePoint;
                    break;
                case "left":
                    $text.css("margin-right", opts.spikeLength + "px");
                    $box.css({
                        top: vert + "px",
                        left: ((left - $text.btOuterWidth(true)) + opts.overlap) + "px"
                    });
                    textBottomSpace = (winBottom - opts.windowMargin) - ($text.offset().top + $text.outerHeight(true));
                    var yShift = shadowShiftY;
                    if (textBottomSpace < 0) {
                        $box.css("top", (numb($box.css("top")) + textBottomSpace) + "px");
                        yShift -= textBottomSpace
                    }
                    textTopSpace = ($text.offset().top + numb($text.css("margin-top"))) - (scrollTop + opts.windowMargin);
                    if (textTopSpace < 0) {
                        $box.css("top", (numb($box.css("top")) - textTopSpace) + "px");
                        yShift += textTopSpace
                    }
                    textTop = $text.btPosition().top + numb($text.css("margin-top"));
                    textLeft = $text.btPosition().left + numb($text.css("margin-left"));
                    textRight = textLeft + $text.btOuterWidth();
                    textBottom = textTop + $text.outerHeight();
                    textCenter = {
                        x: textLeft + ($text.btOuterWidth() * opts.centerPointX),
                        y: textTop + ($text.outerHeight() * opts.centerPointY)
                    };
                    points[points.length] = spikePoint = {
                        x: textRight + opts.spikeLength,
                        y: ((textBottom - textTop) * 0.5) + yShift,
                        type: "spike"
                    };
                    crossPoint = findIntersectY(spikePoint.x, spikePoint.y, textCenter.x, textCenter.y, textRight);
                    crossPoint.y = crossPoint.y < textTop + opts.spikeGirth / 2 + opts.cornerRadius ? textTop + opts.spikeGirth / 2 + opts.cornerRadius: crossPoint.y;
                    crossPoint.y = crossPoint.y > (textBottom - opts.spikeGirth / 2) - opts.cornerRadius ? (textBottom - opts.spikeGirth / 2) - opts.cornerRadius: crossPoint.y;
                    points[points.length] = {
                        x: textRight,
                        y: crossPoint.y + opts.spikeGirth / 2,
                        type: "join"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: crossPoint.y - opts.spikeGirth / 2,
                        type: "join"
                    };
                    points[points.length] = spikePoint;
                    break;
                case "bottom":
                    $text.css("margin-top", opts.spikeLength + "px");
                    $box.css({
                        top: (top + height) - opts.overlap,
                        left: horiz
                    });
                    textRightSpace = (winRight - opts.windowMargin) - ($text.offset().left + $text.btOuterWidth(true));
                    var xShift = shadowShiftX;
                    if (textRightSpace < 0) {
                        $box.css("left", (numb($box.css("left")) + textRightSpace) + "px");
                        xShift -= textRightSpace
                    }
                    textLeftSpace = ($text.offset().left + numb($text.css("margin-left"))) - (scrollLeft + opts.windowMargin);
                    if (textLeftSpace < 0) {
                        $box.css("left", (numb($box.css("left")) - textLeftSpace) + "px");
                        xShift += textLeftSpace
                    }
                    textTop = $text.btPosition().top + numb($text.css("margin-top"));
                    textLeft = $text.btPosition().left + numb($text.css("margin-left"));
                    textRight = textLeft + $text.btOuterWidth();
                    textBottom = textTop + $text.outerHeight();
                    textCenter = {
                        x: textLeft + ($text.btOuterWidth() * opts.centerPointX),
                        y: textTop + ($text.outerHeight() * opts.centerPointY)
                    };
                    points[points.length] = spikePoint = {
                        x: ((textRight - textLeft) * 0.5) + xShift,
                        y: shadowShiftY,
                        type: "spike"
                    };
                    crossPoint = findIntersectX(spikePoint.x, spikePoint.y, textCenter.x, textCenter.y, textTop);
                    crossPoint.x = crossPoint.x < textLeft + opts.spikeGirth / 2 + opts.cornerRadius ? textLeft + opts.spikeGirth / 2 + opts.cornerRadius: crossPoint.x;
                    crossPoint.x = crossPoint.x > (textRight - opts.spikeGirth / 2) - opts.cornerRadius ? (textRight - opts.spikeGirth / 2) - opts.cornerRadius: crossPoint.x;
                    points[points.length] = {
                        x: crossPoint.x + opts.spikeGirth / 2,
                        y: textTop,
                        type: "join"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: crossPoint.x - (opts.spikeGirth / 2),
                        y: textTop,
                        type: "join"
                    };
                    points[points.length] = spikePoint;
                    break;
                case "right":
                    $text.css("margin-left", (opts.spikeLength + "px"));
                    $box.css({
                        top: vert + "px",
                        left: ((left + width) - opts.overlap) + "px"
                    });
                    textBottomSpace = (winBottom - opts.windowMargin) - ($text.offset().top + $text.outerHeight(true));
                    var yShift = shadowShiftY;
                    if (textBottomSpace < 0) {
                        $box.css("top", (numb($box.css("top")) + textBottomSpace) + "px");
                        yShift -= textBottomSpace
                    }
                    textTopSpace = ($text.offset().top + numb($text.css("margin-top"))) - (scrollTop + opts.windowMargin);
                    if (textTopSpace < 0) {
                        $box.css("top", (numb($box.css("top")) - textTopSpace) + "px");
                        yShift += textTopSpace
                    }
                    textTop = $text.btPosition().top + numb($text.css("margin-top"));
                    textLeft = $text.btPosition().left + numb($text.css("margin-left"));
                    textRight = textLeft + $text.btOuterWidth();
                    textBottom = textTop + $text.outerHeight();
                    textCenter = {
                        x: textLeft + ($text.btOuterWidth() * opts.centerPointX),
                        y: textTop + ($text.outerHeight() * opts.centerPointY)
                    };
                    points[points.length] = spikePoint = {
                        x: shadowShiftX,
                        y: ((textBottom - textTop) * 0.5) + yShift,
                        type: "spike"
                    };
                    crossPoint = findIntersectY(spikePoint.x, spikePoint.y, textCenter.x, textCenter.y, textLeft);
                    crossPoint.y = crossPoint.y < textTop + opts.spikeGirth / 2 + opts.cornerRadius ? textTop + opts.spikeGirth / 2 + opts.cornerRadius: crossPoint.y;
                    crossPoint.y = crossPoint.y > (textBottom - opts.spikeGirth / 2) - opts.cornerRadius ? (textBottom - opts.spikeGirth / 2) - opts.cornerRadius: crossPoint.y;
                    points[points.length] = {
                        x: textLeft,
                        y: crossPoint.y - opts.spikeGirth / 2,
                        type: "join"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textTop,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textRight,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: textBottom,
                        type: "corner"
                    };
                    points[points.length] = {
                        x: textLeft,
                        y: crossPoint.y + opts.spikeGirth / 2,
                        type: "join"
                    };
                    points[points.length] = spikePoint;
                    break
                }
                var canvas = document.createElement("canvas");
                $(canvas).attr("width", (numb($text.btOuterWidth(true)) + opts.strokeWidth * 2 + shadowMarginX)).attr("height", (numb($text.outerHeight(true)) + opts.strokeWidth * 2 + shadowMarginY)).appendTo($box).css({
                    position: "absolute",
                    zIndex: opts.boxzIndex
                });
                if (typeof G_vmlCanvasManager != "undefined") {
                    canvas = G_vmlCanvasManager.initElement(canvas)
                }
                if (opts.cornerRadius > 0) {
                    var newPoints = new Array();
                    var newPoint;
                    for (var i = 0; i < points.length; i++) {
                        if (points[i].type == "corner") {
                            newPoint = betweenPoint(points[i], points[(i - 1) % points.length], opts.cornerRadius);
                            newPoint.type = "arcStart";
                            newPoints[newPoints.length] = newPoint;
                            newPoints[newPoints.length] = points[i];
                            newPoint = betweenPoint(points[i], points[(i + 1) % points.length], opts.cornerRadius);
                            newPoint.type = "arcEnd";
                            newPoints[newPoints.length] = newPoint
                        } else {
                            newPoints[newPoints.length] = points[i]
                        }
                    }
                    points = newPoints
                }
                var ctx = canvas.getContext("2d");
                if (opts.shadow && opts.shadowOverlap !== true) {
                    var shadowOverlap = numb(opts.shadowOverlap);
                    switch (position) {
                    case "top":
                        if (opts.shadowOffsetX + opts.shadowBlur - shadowOverlap > 0) {
                            $box.css("top", (numb($box.css("top")) - (opts.shadowOffsetX + opts.shadowBlur - shadowOverlap)))
                        }
                        break;
                    case "right":
                        if (shadowShiftX - shadowOverlap > 0) {
                            $box.css("left", (numb($box.css("left")) + shadowShiftX - shadowOverlap))
                        }
                        break;
                    case "bottom":
                        if (shadowShiftY - shadowOverlap > 0) {
                            $box.css("top", (numb($box.css("top")) + shadowShiftY - shadowOverlap))
                        }
                        break;
                    case "left":
                        if (opts.shadowOffsetY + opts.shadowBlur - shadowOverlap > 0) {
                            $box.css("left", (numb($box.css("left")) - (opts.shadowOffsetY + opts.shadowBlur - shadowOverlap)))
                        }
                        break
                    }
                }
                drawIt.apply(ctx, [points], opts.strokeWidth);
                ctx.fillStyle = opts.fill;
                if (opts.shadow) {
                    ctx.shadowOffsetX = opts.shadowOffsetX;
                    ctx.shadowOffsetY = opts.shadowOffsetY;
                    ctx.shadowBlur = opts.shadowBlur;
                    ctx.shadowColor = opts.shadowColor
                }
                ctx.closePath();
                ctx.fill();
                if (opts.strokeWidth > 0) {
                    ctx.shadowColor = "rgba(0, 0, 0, 0)";
                    ctx.lineWidth = opts.strokeWidth;
                    ctx.strokeStyle = opts.strokeStyle;
                    ctx.beginPath();
                    drawIt.apply(ctx, [points], opts.strokeWidth);
                    ctx.closePath();
                    ctx.stroke()
                }
                opts.preShow.apply(this, [$box[0]]);
                $box.css({
                    display: "none",
                    visibility: "visible"
                });
                opts.showTip.apply(this, [$box[0]]);
                if (opts.overlay) {
                    var overlay = $('<div class="bt-overlay"></div>').css({
                        position: "absolute",
                        backgroundColor: "blue",
                        top: top,
                        left: left,
                        width: width,
                        height: height,
                        opacity: ".2"
                    }).appendTo(offsetParent);
                    $(this).data("overlay", overlay)
                }
                if ((opts.ajaxPath != null && opts.ajaxCache == false) || ajaxTimeout) {
                    content = false
                }
                if (opts.clickAnywhereToClose) {
                    jQuery.bt.vars.clickAnywhereStack.push(this);
                    $(document).click(jQuery.bt.docClick)
                }
                if (opts.closeWhenOthersOpen) {
                    jQuery.bt.vars.closeWhenOpenStack.push(this)
                }
                opts.postShow.apply(this, [$box[0]])
            };
            this.btOff = function() {
                var box = $(this).data("bt-box");
                opts.preHide.apply(this, [box]);
                var i = this;
                i.btCleanup = function() {
                    var box = $(i).data("bt-box");
                    var contentOrig = $(i).data("bt-content-orig");
                    var overlay = $(i).data("bt-overlay");
                    if (typeof box == "object") {
                        $(box).remove();
                        $(i).removeData("bt-box")
                    }
                    if (typeof contentOrig == "object") {
                        var clones = $(contentOrig.original).data("bt-clones");
                        $(contentOrig).data("bt-clones", arrayRemove(clones, contentOrig.clone))
                    }
                    if (typeof overlay == "object") {
                        $(overlay).remove();
                        $(i).removeData("bt-overlay")
                    }
                    jQuery.bt.vars.clickAnywhereStack = arrayRemove(jQuery.bt.vars.clickAnywhereStack, i);
                    jQuery.bt.vars.closeWhenOpenStack = arrayRemove(jQuery.bt.vars.closeWhenOpenStack, i);
                    $(i).removeClass("bt-active " + opts.activeClass);
                    opts.postHide.apply(i)
                };
                opts.hideTip.apply(this, [box, i.btCleanup])
            };
            var refresh = this.btRefresh = function() {
                this.btOff();
                this.btOn()
            }
        });
        function drawIt(points, strokeWidth) {
            this.moveTo(points[0].x, points[0].y);
            for (i = 1; i < points.length; i++) {
                if (points[i - 1].type == "arcStart") {
                    this.quadraticCurveTo(round5(points[i].x, strokeWidth), round5(points[i].y, strokeWidth), round5(points[(i + 1) % points.length].x, strokeWidth), round5(points[(i + 1) % points.length].y, strokeWidth));
                    i++
                } else {
                    this.lineTo(round5(points[i].x, strokeWidth), round5(points[i].y, strokeWidth))
                }
            }
        }
        function round5(num, strokeWidth) {
            var ret;
            strokeWidth = numb(strokeWidth);
            if (strokeWidth % 2) {
                ret = num
            } else {
                ret = Math.round(num - 0.5) + 0.5
            }
            return ret
        }
        function numb(num) {
            return parseInt(num) || 0
        }
        function arrayRemove(arr, elem) {
            var x,
            newArr = new Array();
            for (x in arr) {
                if (arr[x] != elem) {
                    newArr.push(arr[x])
                }
            }
            return newArr
        }
        function canvasSupport() {
            var canvas_compatible = false;
            try {
                canvas_compatible = !!(document.createElement("canvas").getContext("2d"))
            } catch(e) {
                canvas_compatible = !!(document.createElement("canvas").getContext)
            }
            return canvas_compatible
        }
        function shadowSupport() {
            try {
                var userAgent = navigator.userAgent.toLowerCase();
                if (/webkit/.test(userAgent)) {
                    return true
                } else {
                    if (/gecko|mozilla/.test(userAgent) && parseFloat(userAgent.match(/firefox\/(\d+(?:\.\d+)+)/)[1]) >= 3.1) {
                        return true
                    }
                }
            } catch(err) {}
            return false
        }
        function betweenPoint(point1, point2, dist) {
            var y,
            x;
            if (point1.x == point2.x) {
                y = point1.y < point2.y ? point1.y + dist: point1.y - dist;
                return {
                    x: point1.x,
                    y: y
                }
            } else {
                if (point1.y == point2.y) {
                    x = point1.x < point2.x ? point1.x + dist: point1.x - dist;
                    return {
                        x: x,
                        y: point1.y
                    }
                }
            }
        }
        function centerPoint(arcStart, corner, arcEnd) {
            var x = corner.x == arcStart.x ? arcEnd.x: arcStart.x;
            var y = corner.y == arcStart.y ? arcEnd.y: arcStart.y;
            var startAngle,
            endAngle;
            if (arcStart.x < arcEnd.x) {
                if (arcStart.y > arcEnd.y) {
                    startAngle = (Math.PI / 180) * 180;
                    endAngle = (Math.PI / 180) * 90
                } else {
                    startAngle = (Math.PI / 180) * 90;
                    endAngle = 0
                }
            } else {
                if (arcStart.y > arcEnd.y) {
                    startAngle = (Math.PI / 180) * 270;
                    endAngle = (Math.PI / 180) * 180
                } else {
                    startAngle = 0;
                    endAngle = (Math.PI / 180) * 270
                }
            }
            return {
                x: x,
                y: y,
                type: "center",
                startAngle: startAngle,
                endAngle: endAngle
            }
        }
        function findIntersect(r1x1, r1y1, r1x2, r1y2, r2x1, r2y1, r2x2, r2y2) {
            if (r2x1 == r2x2) {
                return findIntersectY(r1x1, r1y1, r1x2, r1y2, r2x1)
            }
            if (r2y1 == r2y2) {
                return findIntersectX(r1x1, r1y1, r1x2, r1y2, r2y1)
            }
            var r1m = (r1y1 - r1y2) / (r1x1 - r1x2);
            var r1b = r1y1 - (r1m * r1x1);
            var r2m = (r2y1 - r2y2) / (r2x1 - r2x2);
            var r2b = r2y1 - (r2m * r2x1);
            var x = (r2b - r1b) / (r1m - r2m);
            var y = r1m * x + r1b;
            return {
                x: x,
                y: y
            }
        }
        function findIntersectY(r1x1, r1y1, r1x2, r1y2, x) {
            if (r1y1 == r1y2) {
                return {
                    x: x,
                    y: r1y1
                }
            }
            var r1m = (r1y1 - r1y2) / (r1x1 - r1x2);
            var r1b = r1y1 - (r1m * r1x1);
            var y = r1m * x + r1b;
            return {
                x: x,
                y: y
            }
        }
        function findIntersectX(r1x1, r1y1, r1x2, r1y2, y) {
            if (r1x1 == r1x2) {
                return {
                    x: r1x1,
                    y: y
                }
            }
            var r1m = (r1y1 - r1y2) / (r1x1 - r1x2);
            var r1b = r1y1 - (r1m * r1x1);
            var x = (y - r1b) / r1m;
            return {
                x: x,
                y: y
            }
        }
    };
    jQuery.fn.btPosition = function() {
        function num(elem, prop) {
            return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0
        }
        var left = 0,
        top = 0,
        results;
        if (this[0]) {
            var offsetParent = this.offsetParent(),
            offset = this.offset(),
            parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? {
                top: 0,
                left: 0
            }: offsetParent.offset();
            offset.top -= num(this, "marginTop");
            offset.left -= num(this, "marginLeft");
            parentOffset.top += num(offsetParent, "borderTopWidth");
            parentOffset.left += num(offsetParent, "borderLeftWidth");
            results = {
                top: offset.top - parentOffset.top,
                left: offset.left - parentOffset.left
            }
        }
        return results
    };
    jQuery.fn.btOuterWidth = function(margin) {
        function num(elem, prop) {
            return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0
        }
        return this["innerWidth"]() + num(this, "borderLeftWidth") + num(this, "borderRightWidth") + (margin ? num(this, "marginLeft") + num(this, "marginRight") : 0)
    };
    jQuery.fn.btOn = function() {
        return this.each(function(index) {
            if (jQuery.isFunction(this.btOn)) {
                this.btOn()
            }
        })
    };
    jQuery.fn.btOff = function() {
        return this.each(function(index) {
            if (jQuery.isFunction(this.btOff)) {
                this.btOff()
            }
        })
    };
    jQuery.bt.vars = {
        clickAnywhereStack: [],
        closeWhenOpenStack: []
    };
    jQuery.bt.docClick = function(e) {
        if (!e) {
            var e = window.event
        }
        if (!$(e.target).parents().andSelf().filter(".bt-wrapper, .bt-active").length && jQuery.bt.vars.clickAnywhereStack.length) {
            $(jQuery.bt.vars.clickAnywhereStack).btOff();
            $(document).unbind("click", jQuery.bt.docClick)
        }
    };
    jQuery.bt.defaults = {
        trigger: "hover",
        clickAnywhereToClose: true,
        closeWhenOthersOpen: true,
        shrinkToFit: true,
        width: "300px",
        padding: "10px",
        spikeGirth: 25,
        spikeLength: 15,
        overlap: 0,
        overlay: false,
        killTitle: true,
        textzIndex: 9999,
        boxzIndex: 9998,
        wrapperzIndex: 9997,
        offsetParent: null,
        positions: ["right", "left"],
        fill: "#FFF",
        windowMargin: 10,
        strokeWidth: 1,
        strokeStyle: "#E5E5E5",
        cornerRadius: 1,
        centerPointX: 0.5,
        centerPointY: 0.5,
        shadow: true,
        shadowOffsetX: 4,
        shadowOffsetY: 4,
        shadowBlur: 8,
        shadowColor: "rgba(0,0,0,.5)",
        shadowOverlap: false,
        noShadowOpts: {
            strokeStyle: "#999"
        },
        cssClass: "",
        cssStyles: {},
        activeClass: "bt-active",
        contentSelector: "$(this).attr('title')",
        ajaxPath: null,
        ajaxError: "<strong>ERROR:</strong> <em>%error</em>",
        ajaxLoading: "<blink>Loading...</blink>",
        ajaxData: {},
        ajaxType: "GET",
        ajaxCache: true,
        ajaxOpts: {},
        preBuild: function() {},
        preShow: function(box) {},
        showTip: function(box) {
            $(box).show()
        },
        postShow: function(box) {},
        preHide: function(box) {},
        hideTip: function(box, callback) {
            $(box).hide();
            callback()
        },
        postHide: function() {},
        hoverIntentOpts: {
            interval: 300,
            timeout: 500
        }
    };
    jQuery.bt.options = {}
})(jQuery);﻿
/* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
*
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
 (function($) {
    $.fn.hoverIntent = function(f, g) {
        var cfg = {
            sensitivity: 7,
            interval: 100,
            timeout: 0
        };
        cfg = $.extend(cfg, g ? {
            over: f,
            out: g
        }: f);
        var cX,
        cY,
        pX,
        pY;
        var track = function(ev) {
            cX = ev.pageX;
            cY = ev.pageY;
        };
        var compare = function(ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
                $(ob).unbind("mousemove", track);
                ob.hoverIntent_s = 1;
                return cfg.over.apply(ob, [ev]);
            } else {
                pX = cX;
                pY = cY;
                ob.hoverIntent_t = setTimeout(function() {
                    compare(ev, ob);
                },
                cfg.interval);
            }
        };
        var delay = function(ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            ob.hoverIntent_s = 0;
            return cfg.out.apply(ob, [ev]);
        };
        var handleHover = function(e) {
            var p = (e.type == "mouseover" ? e.fromElement: e.toElement) || e.relatedTarget;
            while (p && p != this) {
                try {
                    p = p.parentNode;
                } catch(e) {
                    p = this;
                }
            }
            if (p == this) {
                return false;
            }
            var ev = jQuery.extend({},
            e);
            var ob = this;
            if (ob.hoverIntent_t) {
                ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            }
            if (e.type == "mouseover") {
                pX = ev.pageX;
                pY = ev.pageY;
                $(ob).bind("mousemove", track);
                if (ob.hoverIntent_s != 1) {
                    ob.hoverIntent_t = setTimeout(function() {
                        compare(ev, ob);
                    },
                    cfg.interval);
                }
            } else {
                $(ob).unbind("mousemove", track);
                if (ob.hoverIntent_s == 1) {
                    ob.hoverIntent_t = setTimeout(function() {
                        delay(ev, ob);
                    },
                    cfg.timeout);
                }
            }
        };
        return this.mouseover(handleHover).mouseout(handleHover);
    };
})(jQuery);
