All Downloads are FREE. Search and download functionalities are using the official Maven repository.

public.assets.ueditor.ueditor.all.min.js Maven / Gradle / Ivy

The newest version!
(function () {
    function X(d, b, c) {
        var a;
        b = b.toLowerCase();
        return (a = d.__allListeners || c && (d.__allListeners = {})) && (a[b] || c && (a[b] = []))
    }

    function Y(d, b, c, a, e, h) {
        a = a && d[b];
        var g;
        for (!a && (a = d[c]); !a && (g = (g || d).parentNode);) {
            if ("BODY" == g.tagName || h && !h(g)) return null;
            a = g[c]
        }
        return a && e && !e(a) ? Y(a, b, c, !1, e) : a
    }

    UEDITOR_CONFIG = window.UEDITOR_CONFIG || {};
    var t = window.baidu || {};
    window.baidu = t;
    window.UE = t.editor = window.UE || {};
    UE.plugins = {};
    UE.commands = {};
    UE.instants = {};
    UE.I18N = {};
    UE._customizeUI = {};
    UE.version = "1.4.3";
    var M = UE.dom = {}, r = UE.browser = function () {
        var d = navigator.userAgent.toLowerCase(), b = window.opera, c = {
            ie: /(msie\s|trident.*rv:)([\w.]+)/.test(d),
            opera: !!b && b.version,
            webkit: -1 < d.indexOf(" applewebkit/"),
            mac: -1 < d.indexOf("macintosh"),
            quirks: "BackCompat" == document.compatMode
        };
        c.gecko = "Gecko" == navigator.product && !c.webkit && !c.opera && !c.ie;
        var a = 0;
        if (c.ie) {
            var a = d.match(/(?:msie\s([\w.]+))/), e = d.match(/(?:trident.*rv:([\w.]+))/),
                a = a && e && a[1] && e[1] ? Math.max(1 * a[1], 1 * e[1]) : a && a[1] ? 1 * a[1] : e && e[1] ? 1 * e[1] : 0;
            c.ie11Compat =
                11 == document.documentMode;
            c.ie9Compat = 9 == document.documentMode;
            c.ie8 = !!document.documentMode;
            c.ie8Compat = 8 == document.documentMode;
            c.ie7Compat = 7 == a && !document.documentMode || 7 == document.documentMode;
            c.ie6Compat = 7 > a || c.quirks;
            c.ie9above = 8 < a;
            c.ie9below = 9 > a;
            c.ie11above = 10 < a;
            c.ie11below = 11 > a
        }
        c.gecko && (e = d.match(/rv:([\d\.]+)/)) && (e = e[1].split("."), a = 1E4 * e[0] + 100 * (e[1] || 0) + 1 * (e[2] || 0));
        /chrome\/(\d+\.\d)/i.test(d) && (c.chrome = +RegExp.$1);
        /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(d) && !/chrome/i.test(d) &&
        (c.safari = +(RegExp.$1 || RegExp.$2));
        c.opera && (a = parseFloat(b.version()));
        c.webkit && (a = parseFloat(d.match(/ applewebkit\/(\d+)/)[1]));
        c.version = a;
        c.isCompatible = !c.mobile && (c.ie && 6 <= a || c.gecko && 10801 <= a || c.opera && 9.5 <= a || c.air && 1 <= a || c.webkit && 522 <= a || !1);
        return c
    }(), J = r.ie, ma = r.opera, p = UE.utils = {
        each: function (d, b, c) {
            if (null != d) if (d.length === +d.length) for (var a = 0, e = d.length; a < e; a++) {
                if (!1 === b.call(c, d[a], a, d)) return !1
            } else for (a in d) if (d.hasOwnProperty(a) && !1 === b.call(c, d[a], a, d)) return !1
        }, makeInstance: function (d) {
            var b =
                new Function;
            b.prototype = d;
            d = new b;
            b.prototype = null;
            return d
        }, extend: function (d, b, c) {
            if (b) for (var a in b) c && d.hasOwnProperty(a) || (d[a] = b[a]);
            return d
        }, extend2: function (d) {
            for (var b = arguments, c = 1; c < b.length; c++) {
                var a = b[c], e;
                for (e in a) d.hasOwnProperty(e) || (d[e] = a[e])
            }
            return d
        }, inherits: function (d, b) {
            var c = d.prototype, a = p.makeInstance(b.prototype);
            p.extend(a, c, !0);
            d.prototype = a;
            return a.constructor = d
        }, bind: function (d, b) {
            return function () {
                return d.apply(b, arguments)
            }
        }, defer: function (d, b, c) {
            var a;
            return function () {
                c &&
                clearTimeout(a);
                a = setTimeout(d, b)
            }
        }, indexOf: function (d, b, c) {
            var a = -1;
            c = this.isNumber(c) ? c : 0;
            this.each(d, function (e, h) {
                if (h >= c && e === b) return a = h, !1
            });
            return a
        }, removeItem: function (d, b) {
            for (var c = 0, a = d.length; c < a; c++) d[c] === b && (d.splice(c, 1), c--)
        }, trim: function (d) {
            return d.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, "")
        }, listToMap: function (d) {
            if (!d) return {};
            d = p.isArray(d) ? d : d.split(",");
            for (var b = 0, c, a = {}; c = d[b++];) a[c.toUpperCase()] = a[c] = 1;
            return a
        }, unhtml: function (d, b) {
            return d ? d.replace(b || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,
                function (c, a) {
                    return a ? c : {"<": "<", "&": "&", '"': """, ">": ">", "'": "'"}[c]
                }) : ""
        }, html: function (d) {
            return d ? d.replace(/&((g|l|quo)t|amp|#39|nbsp);/g, function (b) {
                return {"<": "<", "&": "&", """: '"', ">": ">", "'": "'", " ": " "}[b]
            }) : ""
        }, cssStyleToDomStyle: function () {
            var d = document.createElement("div").style,
                b = {"float": void 0 != d.cssFloat ? "cssFloat" : void 0 != d.styleFloat ? "styleFloat" : "float"};
            return function (c) {
                return b[c] || (b[c] = c.toLowerCase().replace(/-./g, function (a) {
                    return a.charAt(1).toUpperCase()
                }))
            }
        }(),
        loadFile: function () {
            function d(c, a) {
                try {
                    for (var e = 0, h; h = b[e++];) if (h.doc === c && h.url == (a.src || a.href)) return h
                } catch (g) {
                    return null
                }
            }

            var b = [];
            return function (c, a, e) {
                var h = d(c, a);
                if (h) h.ready ? e && e() : h.funs.push(e); else if (b.push({
                    doc: c,
                    url: a.src || a.href,
                    funs: [e]
                }), !c.body) {
                    e = [];
                    for (var g in a) "tag" != g && e.push(g + '="' + a[g] + '"');
                    c.write("<" + a.tag + " " + e.join(" ") + " >")
                } else if (!a.id || !c.getElementById(a.id)) {
                    var l = c.createElement(a.tag);
                    delete a.tag;
                    for (g in a) l.setAttribute(g, a[g]);
                    l.onload =
                        l.onreadystatechange = function () {
                            if (!this.readyState || /loaded|complete/.test(this.readyState)) {
                                h = d(c, a);
                                if (0 < h.funs.length) {
                                    h.ready = 1;
                                    for (var e; e = h.funs.pop();) e()
                                }
                                l.onload = l.onreadystatechange = null
                            }
                        };
                    l.onerror = function () {
                        throw Error("The load " + (a.href || a.src) + " fails,check the url settings of file ueditor.config.js ");
                    };
                    c.getElementsByTagName("head")[0].appendChild(l)
                }
            }
        }(), isEmptyObject: function (d) {
            if (null == d) return !0;
            if (this.isArray(d) || this.isString(d)) return 0 === d.length;
            for (var b in d) if (d.hasOwnProperty(b)) return !1;
            return !0
        }, fixColor: function (d, b) {
            if (/color/i.test(d) && /rgba?/.test(b)) {
                var c = b.split(",");
                if (3 < c.length) return "";
                b = "#";
                for (var a = 0, e; e = c[a++];) e = parseInt(e.replace(/[^\d]/gi, ""), 10).toString(16), b += 1 == e.length ? "0" + e : e;
                b = b.toUpperCase()
            }
            return b
        }, optCss: function (d) {
            function b(a, c) {
                if (!a) return "";
                var g = a.top, b = a.bottom, k = a.left, d = a.right, n = "";
                if (g && k && b && d) n += ";" + c + ":" + (g == b && b == k && k == d ? g : g == b && k == d ? g + " " + k : k == d ? g + " " + k + " " + b : g + " " + d + " " + b + " " + k) + ";"; else for (var f in a) n += ";" + c + "-" + f + ":" + a[f] + ";";
                return n
            }

            var c, a;
            d = d.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi, function (e, b, g, l) {
                if (1 == l.split(" ").length) switch (b) {
                    case "padding":
                        return !c && (c = {}), c[g] = l, "";
                    case "margin":
                        return !a && (a = {}), a[g] = l, "";
                    case "border":
                        return "initial" == l ? "" : e
                }
                return e
            });
            d += b(c, "padding") + b(a, "margin");
            return d.replace(/^[ \n\r\t;]*|[ \n\r\t]*$/, "").replace(/;([ \n\r\t]+)|\1;/g, ";").replace(/(&((l|g)t|quot|#39))?;{2,}/g, function (a, b) {
                return b ? b + ";;" : ";"
            })
        }, clone: function (d, b) {
            var c;
            b = b || {};
            for (var a in d) d.hasOwnProperty(a) &&
            (c = d[a], "object" == typeof c ? (b[a] = p.isArray(c) ? [] : {}, p.clone(d[a], b[a])) : b[a] = c);
            return b
        }, transUnitToPx: function (d) {
            if (!/(pt|cm)/.test(d)) return d;
            var b;
            d.replace(/([\d.]+)(\w+)/, function (c, a, e) {
                d = a;
                b = e
            });
            switch (b) {
                case "cm":
                    d = 25 * parseFloat(d);
                    break;
                case "pt":
                    d = Math.round(96 * parseFloat(d) / 72)
            }
            return d + (d ? "px" : "")
        }, domReady: function () {
            function d(c) {
                for (c.isReady = !0; c = b.pop(); c()) ;
            }

            var b = [];
            return function (c, a) {
                a = a || window;
                var e = a.document;
                c && b.push(c);
                "complete" === e.readyState ? d(e) : (e.isReady && d(e),
                    r.ie && 11 != r.version ? (function () {
                        if (!e.isReady) {
                            try {
                                e.documentElement.doScroll("left")
                            } catch (a) {
                                setTimeout(arguments.callee, 0);
                                return
                            }
                            d(e)
                        }
                    }(), a.attachEvent("onload", function () {
                        d(e)
                    })) : (e.addEventListener("DOMContentLoaded", function () {
                        e.removeEventListener("DOMContentLoaded", arguments.callee, !1);
                        d(e)
                    }, !1), a.addEventListener("load", function () {
                        d(e)
                    }, !1)))
            }
        }(), cssRule: r.ie && 11 != r.version ? function (d, b, c) {
            var a, e;
            if (void 0 === b || b && b.nodeType && 9 == b.nodeType) {
                if (c = b && b.nodeType && 9 == b.nodeType ? b : c || document,
                    a = c.indexList || (c.indexList = {}), e = a[d], void 0 !== e) return c.styleSheets[e].cssText
            } else {
                c = c || document;
                a = c.indexList || (c.indexList = {});
                e = a[d];
                if ("" === b) return void 0 !== e ? (c.styleSheets[e].cssText = "", delete a[d], !0) : !1;
                void 0 !== e ? sheetStyle = c.styleSheets[e] : (sheetStyle = c.createStyleSheet("", e = c.styleSheets.length), a[d] = e);
                sheetStyle.cssText = b
            }
        } : function (d, b, c) {
            var a;
            if (void 0 === b || b && b.nodeType && 9 == b.nodeType) return c = b && b.nodeType && 9 == b.nodeType ? b : c || document, (a = c.getElementById(d)) ? a.innerHTML : void 0;
            c = c || document;
            a = c.getElementById(d);
            if ("" === b) return a ? (a.parentNode.removeChild(a), !0) : !1;
            a ? a.innerHTML = b : (a = c.createElement("style"), a.id = d, a.innerHTML = b, c.getElementsByTagName("head")[0].appendChild(a))
        }, sort: function (d, b) {
            b = b || function (a, e) {
                return a.localeCompare(e)
            };
            for (var c = 0, a = d.length; c < a; c++) for (var e = c, h = d.length; e < h; e++) if (0 < b(d[c], d[e])) {
                var g = d[c];
                d[c] = d[e];
                d[e] = g
            }
            return d
        }, serializeParam: function (d) {
            var b = [], c;
            for (c in d) if ("method" != c && "timeout" != c && "async" != c) if ("function" != (typeof d[c]).toLowerCase() &&
                "object" != (typeof d[c]).toLowerCase()) b.push(encodeURIComponent(c) + "=" + encodeURIComponent(d[c])); else if (p.isArray(d[c])) for (var a = 0; a < d[c].length; a++) b.push(encodeURIComponent(c) + "[]=" + encodeURIComponent(d[c][a]));
            return b.join("&")
        }, formatUrl: function (d) {
            d = d.replace(/&&/g, "&");
            d = d.replace(/\?&/g, "?");
            d = d.replace(/&$/g, "");
            d = d.replace(/&#/g, "#");
            return d = d.replace(/&+/g, "&")
        }, isCrossDomainUrl: function (d) {
            var b = document.createElement("a");
            b.href = d;
            r.ie && (b.href = b.href);
            return !(b.protocol == location.protocol &&
                b.hostname == location.hostname && (b.port == location.port || "80" == b.port && "" == location.port || "" == b.port && "80" == location.port))
        }, clearEmptyAttrs: function (d) {
            for (var b in d) "" === d[b] && delete d[b];
            return d
        }, str2json: function (d) {
            return p.isString(d) ? window.JSON ? JSON.parse(d) : (new Function("return " + p.trim(d || "")))() : null
        }, json2str: function () {
            if (window.JSON) return JSON.stringify;
            var d = function (a) {
                return 10 > a ? "0" + a : a
            }, b = function (a) {
                /["\\\x00-\x1f]/.test(a) && (a = a.replace(/["\\\x00-\x1f]/g, function (a) {
                    var b = c[a];
                    if (b) return b;
                    b = a.charCodeAt();
                    return "\\u00" + Math.floor(b / 16).toString(16) + (b % 16).toString(16)
                }));
                return '"' + a + '"'
            }, c = {"\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\"};
            return function (a) {
                switch (typeof a) {
                    case "undefined":
                        return "undefined";
                    case "number":
                        return isFinite(a) ? String(a) : "null";
                    case "string":
                        return b(a);
                    case "boolean":
                        return String(a);
                    default:
                        if (null === a) return "null";
                        if (p.isArray(a)) {
                            var e = ["["], c = a.length, g, l, k;
                            for (l = 0; l < c; l++) switch (k = a[l], typeof k) {
                                case "undefined":
                                case "function":
                                case "unknown":
                                    break;
                                default:
                                    g && e.push(","), e.push(p.json2str(k)), g = 1
                            }
                            e.push("]");
                            return e.join("")
                        }
                        if (p.isDate(a)) return '"' + a.getFullYear() + "-" + d(a.getMonth() + 1) + "-" + d(a.getDate()) + "T" + d(a.getHours()) + ":" + d(a.getMinutes()) + ":" + d(a.getSeconds()) + '"';
                        g = ["{"];
                        l = p.json2str;
                        for (c in a) if (Object.prototype.hasOwnProperty.call(a, c)) switch (k = a[c], typeof k) {
                            case "undefined":
                            case "unknown":
                            case "function":
                                break;
                            default:
                                e && g.push(","), e = 1, g.push(l(c) + ":" + l(k))
                        }
                        g.push("}");
                        return g.join("")
                }
            }
        }()
    };
    p.each("String Function Array Number RegExp Object Date".split(" "),
        function (d) {
            UE.utils["is" + d] = function (b) {
                return Object.prototype.toString.apply(b) == "[object " + d + "]"
            }
        });
    var ba = UE.EventBase = function () {
    };
    ba.prototype = {
        addListener: function (d, b) {
            d = p.trim(d).split(/\s+/);
            for (var c = 0, a; a = d[c++];) X(this, a, !0).push(b)
        }, on: function (d, b) {
            return this.addListener(d, b)
        }, off: function (d, b) {
            return this.removeListener(d, b)
        }, trigger: function () {
            return this.fireEvent.apply(this, arguments)
        }, removeListener: function (d, b) {
            d = p.trim(d).split(/\s+/);
            for (var c = 0, a; a = d[c++];) p.removeItem(X(this,
                a) || [], b)
        }, fireEvent: function () {
            for (var d = arguments[0], d = p.trim(d).split(" "), b = 0, c; c = d[b++];) {
                var a = X(this, c), e, h, g;
                if (a) for (g = a.length; g--;) if (a[g]) {
                    h = a[g].apply(this, arguments);
                    if (!0 === h) return h;
                    void 0 !== h && (e = h)
                }
                if (h = this["on" + c.toLowerCase()]) e = h.apply(this, arguments)
            }
            return e
        }
    };
    var w = M.dtd = function () {
            function d(a) {
                for (var e in a) a[e.toUpperCase()] = a[e];
                return a
            }

            var b = p.extend2, c = d({isindex: 1, fieldset: 1}),
                a = d({input: 1, button: 1, select: 1, textarea: 1, label: 1}), e = b(d({a: 1}), a), h = b({iframe: 1}, e),
                g = d({
                    hr: 1,
                    ul: 1,
                    menu: 1,
                    div: 1,
                    blockquote: 1,
                    noscript: 1,
                    table: 1,
                    center: 1,
                    address: 1,
                    dir: 1,
                    pre: 1,
                    h5: 1,
                    dl: 1,
                    h4: 1,
                    noframes: 1,
                    h6: 1,
                    ol: 1,
                    h1: 1,
                    h3: 1,
                    h2: 1
                }), l = d({ins: 1, del: 1, script: 1, style: 1}), k = b(d({
                    b: 1,
                    acronym: 1,
                    bdo: 1,
                    "var": 1,
                    "#": 1,
                    abbr: 1,
                    code: 1,
                    br: 1,
                    i: 1,
                    cite: 1,
                    kbd: 1,
                    u: 1,
                    strike: 1,
                    s: 1,
                    tt: 1,
                    strong: 1,
                    q: 1,
                    samp: 1,
                    em: 1,
                    dfn: 1,
                    span: 1
                }), l), f = b(d({
                    sub: 1,
                    img: 1,
                    embed: 1,
                    object: 1,
                    sup: 1,
                    basefont: 1,
                    map: 1,
                    applet: 1,
                    font: 1,
                    big: 1,
                    small: 1
                }), k), n = b(d({p: 1}), f), a = b(d({iframe: 1}), f, a), f = d({
                    img: 1,
                    embed: 1,
                    noscript: 1,
                    br: 1,
                    kbd: 1,
                    center: 1,
                    button: 1,
                    basefont: 1,
                    h5: 1,
                    h4: 1,
                    samp: 1,
                    h6: 1,
                    ol: 1,
                    h1: 1,
                    h3: 1,
                    h2: 1,
                    form: 1,
                    font: 1,
                    "#": 1,
                    select: 1,
                    menu: 1,
                    ins: 1,
                    abbr: 1,
                    label: 1,
                    code: 1,
                    table: 1,
                    script: 1,
                    cite: 1,
                    input: 1,
                    iframe: 1,
                    strong: 1,
                    textarea: 1,
                    noframes: 1,
                    big: 1,
                    small: 1,
                    span: 1,
                    hr: 1,
                    sub: 1,
                    bdo: 1,
                    "var": 1,
                    div: 1,
                    object: 1,
                    sup: 1,
                    strike: 1,
                    dir: 1,
                    map: 1,
                    dl: 1,
                    applet: 1,
                    del: 1,
                    isindex: 1,
                    fieldset: 1,
                    ul: 1,
                    b: 1,
                    acronym: 1,
                    a: 1,
                    blockquote: 1,
                    i: 1,
                    u: 1,
                    s: 1,
                    tt: 1,
                    address: 1,
                    q: 1,
                    pre: 1,
                    p: 1,
                    em: 1,
                    dfn: 1
                }), q = b(d({a: 0}), a), u = d({tr: 1}), x = d({"#": 1}), z = b(d({param: 1}), f),
                v = b(d({form: 1}), c, h, g, n),
                D = d({li: 1, ol: 1, ul: 1}), F = d({style: 1, script: 1}), H = d({base: 1, link: 1, meta: 1, title: 1}),
                F = b(H, F), B = d({head: 1, body: 1}), O = d({html: 1}), r = d({
                    address: 1,
                    blockquote: 1,
                    center: 1,
                    dir: 1,
                    div: 1,
                    dl: 1,
                    fieldset: 1,
                    form: 1,
                    h1: 1,
                    h2: 1,
                    h3: 1,
                    h4: 1,
                    h5: 1,
                    h6: 1,
                    hr: 1,
                    isindex: 1,
                    menu: 1,
                    noframes: 1,
                    ol: 1,
                    p: 1,
                    pre: 1,
                    table: 1,
                    ul: 1
                }), t = d({
                    area: 1,
                    base: 1,
                    basefont: 1,
                    br: 1,
                    col: 1,
                    command: 1,
                    dialog: 1,
                    embed: 1,
                    hr: 1,
                    img: 1,
                    input: 1,
                    isindex: 1,
                    keygen: 1,
                    link: 1,
                    meta: 1,
                    param: 1,
                    source: 1,
                    track: 1,
                    wbr: 1
                });
            return d({
                $nonBodyContent: b(O, B, H),
                $block: r,
                $inline: q,
                $inlineWithA: b(d({a: 1}),
                    q),
                $body: b(d({script: 1, style: 1}), r),
                $cdata: d({script: 1, style: 1}),
                $empty: t,
                $nonChild: d({iframe: 1, textarea: 1}),
                $listItem: d({dd: 1, dt: 1, li: 1}),
                $list: d({ul: 1, ol: 1, dl: 1}),
                $isNotEmpty: d({
                    table: 1,
                    ul: 1,
                    ol: 1,
                    dl: 1,
                    iframe: 1,
                    area: 1,
                    base: 1,
                    col: 1,
                    hr: 1,
                    img: 1,
                    embed: 1,
                    input: 1,
                    link: 1,
                    meta: 1,
                    param: 1,
                    h1: 1,
                    h2: 1,
                    h3: 1,
                    h4: 1,
                    h5: 1,
                    h6: 1
                }),
                $removeEmpty: d({
                    a: 1,
                    abbr: 1,
                    acronym: 1,
                    address: 1,
                    b: 1,
                    bdo: 1,
                    big: 1,
                    cite: 1,
                    code: 1,
                    del: 1,
                    dfn: 1,
                    em: 1,
                    font: 1,
                    i: 1,
                    ins: 1,
                    label: 1,
                    kbd: 1,
                    q: 1,
                    s: 1,
                    samp: 1,
                    small: 1,
                    span: 1,
                    strike: 1,
                    strong: 1,
                    sub: 1,
                    sup: 1,
                    tt: 1,
                    u: 1,
                    "var": 1
                }),
                $removeEmptyBlock: d({p: 1, div: 1}),
                $tableContent: d({
                    caption: 1,
                    col: 1,
                    colgroup: 1,
                    tbody: 1,
                    td: 1,
                    tfoot: 1,
                    th: 1,
                    thead: 1,
                    tr: 1,
                    table: 1
                }),
                $notTransContent: d({pre: 1, script: 1, style: 1, textarea: 1}),
                html: B,
                head: F,
                style: x,
                script: x,
                body: v,
                base: {},
                link: {},
                meta: {},
                title: x,
                col: {},
                tr: d({td: 1, th: 1}),
                img: {},
                embed: {},
                colgroup: d({thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1}),
                noscript: v,
                td: v,
                br: {},
                th: v,
                center: v,
                kbd: q,
                button: b(n, g),
                basefont: {},
                h5: q,
                h4: q,
                samp: q,
                h6: q,
                ol: D,
                h1: q,
                h3: q,
                option: x,
                h2: q,
                form: b(c, h, g, n),
                select: d({
                    optgroup: 1,
                    option: 1
                }),
                font: q,
                ins: q,
                menu: D,
                abbr: q,
                label: q,
                table: d({thead: 1, col: 1, tbody: 1, tr: 1, colgroup: 1, caption: 1, tfoot: 1}),
                code: q,
                tfoot: u,
                cite: q,
                li: v,
                input: {},
                iframe: v,
                strong: q,
                textarea: x,
                noframes: v,
                big: q,
                small: q,
                span: d({"#": 1, br: 1, b: 1, strong: 1, u: 1, i: 1, em: 1, sub: 1, sup: 1, strike: 1, span: 1}),
                hr: q,
                dt: q,
                sub: q,
                optgroup: d({option: 1}),
                param: {},
                bdo: q,
                "var": q,
                div: v,
                object: z,
                sup: q,
                dd: v,
                strike: q,
                area: {},
                dir: D,
                map: b(d({area: 1, form: 1, p: 1}), c, l, g),
                applet: z,
                dl: d({dt: 1, dd: 1}),
                del: q,
                isindex: {},
                fieldset: b(d({legend: 1}), f),
                thead: u,
                ul: D,
                acronym: q,
                b: q,
                a: b(d({a: 1}), a),
                blockquote: b(d({td: 1, tr: 1, tbody: 1, li: 1}), v),
                caption: q,
                i: q,
                u: q,
                tbody: u,
                s: q,
                address: b(h, n),
                tt: q,
                legend: q,
                q: q,
                pre: b(k, e),
                p: b(d({a: 1}), q),
                em: q,
                dfn: q
            })
        }(), ka = J && 9 > r.version ? {
            tabindex: "tabIndex",
            readonly: "readOnly",
            "for": "htmlFor",
            "class": "className",
            maxlength: "maxLength",
            cellspacing: "cellSpacing",
            cellpadding: "cellPadding",
            rowspan: "rowSpan",
            colspan: "colSpan",
            usemap: "useMap",
            frameborder: "frameBorder"
        } : {tabindex: "tabIndex", readonly: "readOnly"},
        oa = p.listToMap("-webkit-box -moz-box block list-item table table-row-group table-header-group table-footer-group table-row table-column-group table-column table-cell table-caption".split(" ")),
        f = M.domUtils = {
            NODE_ELEMENT: 1,
            NODE_DOCUMENT: 9,
            NODE_TEXT: 3,
            NODE_COMMENT: 8,
            NODE_DOCUMENT_FRAGMENT: 11,
            POSITION_IDENTICAL: 0,
            POSITION_DISCONNECTED: 1,
            POSITION_FOLLOWING: 2,
            POSITION_PRECEDING: 4,
            POSITION_IS_CONTAINED: 8,
            POSITION_CONTAINS: 16,
            fillChar: J && "6" == r.version ? "\ufeff" : "\u200b",
            keys: {8: 1, 46: 1, 16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1, 13: 1},
            getPosition: function (d, b) {
                if (d === b) return 0;
                var c, a = [d], e = [b];
                for (c = d; c = c.parentNode;) {
                    if (c === b) return 10;
                    a.push(c)
                }
                for (c = b; c = c.parentNode;) {
                    if (c === d) return 20;
                    e.push(c)
                }
                a.reverse();
                e.reverse();
                if (a[0] !== e[0]) return 1;
                for (c = -1; c++, a[c] === e[c];) ;
                d = a[c];
                for (b = e[c]; d = d.nextSibling;) if (d === b) return 4;
                return 2
            },
            getNodeIndex: function (d, b) {
                for (var c = d, a = 0; c = c.previousSibling;) b && 3 == c.nodeType ? c.nodeType != c.nextSibling.nodeType && a++ : a++;
                return a
            },
            inDoc: function (d, b) {
                return 10 == f.getPosition(d, b)
            },
            findParent: function (d, b, c) {
                if (d && !f.isBody(d)) for (d = c ? d : d.parentNode; d;) {
                    if (!b || b(d) || f.isBody(d)) return b && !b(d) && f.isBody(d) ? null : d;
                    d = d.parentNode
                }
                return null
            },
            findParentByTagName: function (d,
                                           b, c, a) {
                b = p.listToMap(p.isArray(b) ? b : [b]);
                return f.findParent(d, function (e) {
                    return b[e.tagName] && !(a && a(e))
                }, c)
            },
            findParents: function (d, b, c, a) {
                for (b = b && (c && c(d) || !c) ? [d] : []; d = f.findParent(d, c);) b.push(d);
                return a ? b : b.reverse()
            },
            insertAfter: function (d, b) {
                return d.nextSibling ? d.parentNode.insertBefore(b, d.nextSibling) : d.parentNode.appendChild(b)
            },
            remove: function (d, b) {
                var c = d.parentNode, a;
                if (c) {
                    if (b && d.hasChildNodes()) for (; a = d.firstChild;) c.insertBefore(a, d);
                    c.removeChild(d)
                }
                return d
            },
            getNextDomNode: function (d,
                                      b, c, a) {
                return Y(d, "firstChild", "nextSibling", b, c, a)
            },
            getPreDomNode: function (d, b, c, a) {
                return Y(d, "lastChild", "previousSibling", b, c, a)
            },
            isBookmarkNode: function (d) {
                return 1 == d.nodeType && d.id && /^_baidu_bookmark_/i.test(d.id)
            },
            getWindow: function (d) {
                d = d.ownerDocument || d;
                return d.defaultView || d.parentWindow
            },
            getCommonAncestor: function (d, b) {
                if (d === b) return d;
                for (var c = [d], a = [b], e = d, h = -1; e = e.parentNode;) {
                    if (e === b) return e;
                    c.push(e)
                }
                for (e = b; e = e.parentNode;) {
                    if (e === d) return e;
                    a.push(e)
                }
                c.reverse();
                for (a.reverse(); h++,
                c[h] === a[h];) ;
                return 0 == h ? null : c[h - 1]
            },
            clearEmptySibling: function (d, b, c) {
                function a(a, b) {
                    for (var g; a && !f.isBookmarkNode(a) && (f.isEmptyInlineElement(a) || !(new RegExp("[^\t\n\r" + f.fillChar + "]")).test(a.nodeValue));) g = a[b], f.remove(a), a = g
                }

                !b && a(d.nextSibling, "nextSibling");
                !c && a(d.previousSibling, "previousSibling")
            },
            split: function (d, b) {
                var c = d.ownerDocument;
                if (r.ie && b == d.nodeValue.length) {
                    var a = c.createTextNode("");
                    return f.insertAfter(d, a)
                }
                a = d.splitText(b);
                r.ie8 && (c = c.createTextNode(""), f.insertAfter(a,
                    c), f.remove(c));
                return a
            },
            isWhitespace: function (d) {
                return !(new RegExp("[^ \t\n\r" + f.fillChar + "]")).test(d.nodeValue)
            },
            getXY: function (d) {
                for (var b = 0, c = 0; d.offsetParent;) c += d.offsetTop, b += d.offsetLeft, d = d.offsetParent;
                return {x: b, y: c}
            },
            on: function (d, b, c) {
                var a = p.isArray(b) ? b : p.trim(b).split(/\s+/), e = a.length;
                if (e) for (; e--;) if (b = a[e], d.addEventListener) d.addEventListener(b, c, !1); else {
                    c._d || (c._d = {els: []});
                    var h = b + c.toString(), g = p.indexOf(c._d.els, d);
                    c._d[h] && -1 != g || (-1 == g && c._d.els.push(d), c._d[h] || (c._d[h] =
                        function (a) {
                            return c.call(a.srcElement, a || window.event)
                        }), d.attachEvent("on" + b, c._d[h]))
                }
                d = null
            },
            un: function (d, b, c) {
                var a = p.isArray(b) ? b : p.trim(b).split(/\s+/), e = a.length;
                if (e) for (; e--;) if (b = a[e], d.removeEventListener) d.removeEventListener(b, c, !1); else {
                    var h = b + c.toString();
                    try {
                        d.detachEvent("on" + b, c._d ? c._d[h] : c)
                    } catch (g) {
                    }
                    c._d && c._d[h] && (b = p.indexOf(c._d.els, d), -1 != b && c._d.els.splice(b, 1), 0 == c._d.els.length && delete c._d[h])
                }
            },
            isSameElement: function (d, b) {
                if (d.tagName != b.tagName) return !1;
                var c = d.attributes,
                    a = b.attributes;
                if (!J && c.length != a.length) return !1;
                for (var e, h, g = 0, l = 0, k = 0; e = c[k++];) {
                    if ("style" == e.nodeName) if (e.specified && g++, f.isSameStyle(d, b)) continue; else return !1;
                    if (J) if (e.specified) g++, h = a.getNamedItem(e.nodeName); else continue; else h = b.attributes[e.nodeName];
                    if (!h.specified || e.nodeValue != h.nodeValue) return !1
                }
                if (J) {
                    for (k = 0; h = a[k++];) h.specified && l++;
                    if (g != l) return !1
                }
                return !0
            },
            isSameStyle: function (d, b) {
                var c = d.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":"),
                    a = b.style.cssText.replace(/( ?; ?)/g,
                        ";").replace(/( ?: ?)/g, ":");
                if (r.opera) {
                    c = d.style;
                    a = b.style;
                    if (c.length != a.length) return !1;
                    for (var e in c) if (!/^(\d+|csstext)$/i.test(e) && c[e] != a[e]) return !1;
                    return !0
                }
                if (!c || !a) return c == a;
                c = c.split(";");
                a = a.split(";");
                if (c.length != a.length) return !1;
                e = 0;
                for (var h; h = c[e++];) if (-1 == p.indexOf(a, h)) return !1;
                return !0
            },
            isBlockElm: function (d) {
                return 1 == d.nodeType && (w.$block[d.tagName] || oa[f.getComputedStyle(d, "display")]) && !w.$nonChild[d.tagName]
            },
            isBody: function (d) {
                return d && 1 == d.nodeType && "body" == d.tagName.toLowerCase()
            },
            breakParent: function (d, b) {
                var c, a = d, e = d, h, g;
                do {
                    a = a.parentNode;
                    h ? (c = a.cloneNode(!1), c.appendChild(h), h = c, c = a.cloneNode(!1), c.appendChild(g), g = c) : (h = a.cloneNode(!1), g = h.cloneNode(!1));
                    for (; c = e.previousSibling;) h.insertBefore(c, h.firstChild);
                    for (; c = e.nextSibling;) g.appendChild(c);
                    e = a
                } while (b !== a);
                c = b.parentNode;
                c.insertBefore(h, b);
                c.insertBefore(g, b);
                c.insertBefore(d, g);
                f.remove(b);
                return d
            },
            isEmptyInlineElement: function (d) {
                if (1 != d.nodeType || !w.$removeEmpty[d.tagName]) return 0;
                for (d = d.firstChild; d;) {
                    if (f.isBookmarkNode(d) ||
                        1 == d.nodeType && !f.isEmptyInlineElement(d) || 3 == d.nodeType && !f.isWhitespace(d)) return 0;
                    d = d.nextSibling
                }
                return 1
            },
            trimWhiteTextNode: function (d) {
                function b(b) {
                    for (var a; (a = d[b]) && 3 == a.nodeType && f.isWhitespace(a);) d.removeChild(a)
                }

                b("firstChild");
                b("lastChild")
            },
            mergeChild: function (d, b, c) {
                b = f.getElementsByTagName(d, d.tagName.toLowerCase());
                for (var a = 0, e; e = b[a++];) if (e.parentNode && !f.isBookmarkNode(e)) if ("span" == e.tagName.toLowerCase()) {
                    if (d === e.parentNode && (f.trimWhiteTextNode(d), 1 == d.childNodes.length)) {
                        d.style.cssText =
                            e.style.cssText + ";" + d.style.cssText;
                        f.remove(e, !0);
                        continue
                    }
                    e.style.cssText = d.style.cssText + ";" + e.style.cssText;
                    if (c) {
                        var h = c.style;
                        if (h) for (var h = h.split(";"), g = 0, l; l = h[g++];) e.style[p.cssStyleToDomStyle(l.split(":")[0])] = l.split(":")[1]
                    }
                    f.isSameStyle(e, d) && f.remove(e, !0)
                } else f.isSameElement(d, e) && f.remove(e, !0)
            },
            getElementsByTagName: function (d, b, c) {
                if (c && p.isString(c)) {
                    var a = c;
                    c = function (e) {
                        return f.hasClass(e, a)
                    }
                }
                b = p.trim(b).replace(/[ ]{2,}/g, " ").split(" ");
                for (var e = [], h = 0, g; g = b[h++];) {
                    g = d.getElementsByTagName(g);
                    for (var l = 0, k; k = g[l++];) c && !c(k) || e.push(k)
                }
                return e
            },
            mergeToParent: function (d) {
                for (var b = d.parentNode; b && w.$removeEmpty[b.tagName];) {
                    if (b.tagName == d.tagName || "A" == b.tagName) {
                        f.trimWhiteTextNode(b);
                        if ("SPAN" == b.tagName && !f.isSameStyle(b, d) || "A" == b.tagName && "SPAN" == d.tagName) if (1 < b.childNodes.length || b !== d.parentNode) {
                            d.style.cssText = b.style.cssText + ";" + d.style.cssText;
                            b = b.parentNode;
                            continue
                        } else b.style.cssText += ";" + d.style.cssText, "A" == b.tagName && (b.style.textDecoration = "underline");
                        if ("A" != b.tagName) {
                            b ===
                            d.parentNode && f.remove(d, !0);
                            break
                        }
                    }
                    b = b.parentNode
                }
            },
            mergeSibling: function (d, b, c) {
                function a(a, b, g) {
                    var c;
                    if ((c = g[a]) && !f.isBookmarkNode(c) && 1 == c.nodeType && f.isSameElement(g, c)) {
                        for (; c.firstChild;) "firstChild" == b ? g.insertBefore(c.lastChild, g.firstChild) : g.appendChild(c.firstChild);
                        f.remove(c)
                    }
                }

                !b && a("previousSibling", "firstChild", d);
                !c && a("nextSibling", "lastChild", d)
            },
            unSelectable: J && r.ie9below || r.opera ? function (d) {
                d.onselectstart = function () {
                    return !1
                };
                d.onclick = d.onkeyup = d.onkeydown = function () {
                    return !1
                };
                d.unselectable = "on";
                d.setAttribute("unselectable", "on");
                for (var b = 0, c; c = d.all[b++];) switch (c.tagName.toLowerCase()) {
                    case "iframe":
                    case "textarea":
                    case "input":
                    case "select":
                        break;
                    default:
                        c.unselectable = "on", d.setAttribute("unselectable", "on")
                }
            } : function (d) {
                d.style.MozUserSelect = d.style.webkitUserSelect = d.style.msUserSelect = d.style.KhtmlUserSelect = "none"
            },
            removeAttributes: function (d, b) {
                b = p.isArray(b) ? b : p.trim(b).replace(/[ ]{2,}/g, " ").split(" ");
                for (var c = 0, a; a = b[c++];) {
                    a = ka[a] || a;
                    switch (a) {
                        case "className":
                            d[a] =
                                "";
                            break;
                        case "style":
                            d.style.cssText = "";
                            var e = d.getAttributeNode("style");
                            !r.ie && e && d.removeAttributeNode(e)
                    }
                    d.removeAttribute(a)
                }
            },
            createElement: function (d, b, c) {
                return f.setAttributes(d.createElement(b), c)
            },
            setAttributes: function (d, b) {
                for (var c in b) if (b.hasOwnProperty(c)) {
                    var a = b[c];
                    switch (c) {
                        case "class":
                            d.className = a;
                            break;
                        case "style":
                            d.style.cssText = d.style.cssText + ";" + a;
                            break;
                        case "innerHTML":
                            d[c] = a;
                            break;
                        case "value":
                            d.value = a;
                            break;
                        default:
                            d.setAttribute(ka[c] || c, a)
                    }
                }
                return d
            },
            getComputedStyle: function (d,
                                        b) {
                if (-1 < "width height top left".indexOf(b)) return d["offset" + b.replace(/^\w/, function (a) {
                    return a.toUpperCase()
                })] + "px";
                3 == d.nodeType && (d = d.parentNode);
                if (r.ie && 9 > r.version && "font-size" == b && !d.style.fontSize && !w.$empty[d.tagName] && !w.$nonChild[d.tagName]) {
                    var c = d.ownerDocument.createElement("span");
                    c.style.cssText = "padding:0;border:0;font-family:simsun;";
                    c.innerHTML = ".";
                    d.appendChild(c);
                    var a = c.offsetHeight;
                    d.removeChild(c);
                    c = null;
                    return a + "px"
                }
                try {
                    c = f.getStyle(d, b) || (window.getComputedStyle ? f.getWindow(d).getComputedStyle(d,
                        "").getPropertyValue(b) : (d.currentStyle || d.style)[p.cssStyleToDomStyle(b)])
                } catch (e) {
                    return ""
                }
                return p.transUnitToPx(p.fixColor(b, c))
            },
            removeClasses: function (d, b) {
                b = p.isArray(b) ? b : p.trim(b).replace(/[ ]{2,}/g, " ").split(" ");
                for (var c = 0, a, e = d.className; a = b[c++];) e = e.replace(new RegExp("\\b" + a + "\\b"), "");
                (e = p.trim(e).replace(/[ ]{2,}/g, " ")) ? d.className = e : f.removeAttributes(d, ["class"])
            },
            addClass: function (d, b) {
                if (d) {
                    b = p.trim(b).replace(/[ ]{2,}/g, " ").split(" ");
                    for (var c = 0, a, e = d.className; a = b[c++];) (new RegExp("\\b" +
                        a + "\\b")).test(e) || (e += " " + a);
                    d.className = p.trim(e)
                }
            },
            hasClass: function (d, b) {
                if (p.isRegExp(b)) return b.test(d.className);
                b = p.trim(b).replace(/[ ]{2,}/g, " ").split(" ");
                for (var c = 0, a, e = d.className; a = b[c++];) if (!(new RegExp("\\b" + a + "\\b", "i")).test(e)) return !1;
                return c - 1 == b.length
            },
            preventDefault: function (d) {
                d.preventDefault ? d.preventDefault() : d.returnValue = !1
            },
            removeStyle: function (d, b) {
                r.ie ? ("color" == b && (b = "(^|;)" + b), d.style.cssText = d.style.cssText.replace(new RegExp(b + "[^:]*:[^;]+;?", "ig"), "")) : d.style.removeProperty ?
                    d.style.removeProperty(b) : d.style.removeAttribute(p.cssStyleToDomStyle(b));
                d.style.cssText || f.removeAttributes(d, ["style"])
            },
            getStyle: function (d, b) {
                var c = d.style[p.cssStyleToDomStyle(b)];
                return p.fixColor(b, c)
            },
            setStyle: function (d, b, c) {
                d.style[p.cssStyleToDomStyle(b)] = c;
                p.trim(d.style.cssText) || this.removeAttributes(d, "style")
            },
            setStyles: function (d, b) {
                for (var c in b) b.hasOwnProperty(c) && f.setStyle(d, c, b[c])
            },
            removeDirtyAttr: function (d) {
                for (var b = 0, c, a = d.getElementsByTagName("*"); c = a[b++];) c.removeAttribute("_moz_dirty");
                d.removeAttribute("_moz_dirty")
            },
            getChildCount: function (d, b) {
                var c = 0, a = d.firstChild;
                for (b = b || function () {
                    return 1
                }; a;) b(a) && c++, a = a.nextSibling;
                return c
            },
            isEmptyNode: function (d) {
                return !d.firstChild || 0 == f.getChildCount(d, function (b) {
                    return !f.isBr(b) && !f.isBookmarkNode(b) && !f.isWhitespace(b)
                })
            },
            clearSelectedArr: function (d) {
                for (var b; b = d.pop();) f.removeAttributes(b, ["class"])
            },
            scrollToView: function (d, b, c) {
                var a = function () {
                    var a = b.document, c = "CSS1Compat" == a.compatMode;
                    return {
                        width: (c ? a.documentElement.clientWidth :
                            a.body.clientWidth) || 0,
                        height: (c ? a.documentElement.clientHeight : a.body.clientHeight) || 0
                    }
                }().height;
                c = -1 * a + c + (d.offsetHeight || 0);
                d = f.getXY(d);
                c += d.y;
                d = function (a) {
                    if ("pageXOffset" in a) return {x: a.pageXOffset || 0, y: a.pageYOffset || 0};
                    a = a.document;
                    return {
                        x: a.documentElement.scrollLeft || a.body.scrollLeft || 0,
                        y: a.documentElement.scrollTop || a.body.scrollTop || 0
                    }
                }(b).y;
                (c > d || c < d - a) && b.scrollTo(0, c + (0 > c ? -20 : 20))
            },
            isBr: function (d) {
                return 1 == d.nodeType && "BR" == d.tagName
            },
            isFillChar: function (d, b) {
                if (3 != d.nodeType) return !1;
                var c = d.nodeValue;
                return b ? (new RegExp("^" + f.fillChar)).test(c) : !c.replace(new RegExp(f.fillChar, "g"), "").length
            },
            isStartInblock: function (d) {
                d = d.cloneRange();
                var b = 0, c = d.startContainer, a;
                if (1 == c.nodeType && c.childNodes[d.startOffset]) for (var c = c.childNodes[d.startOffset], e = c.previousSibling; e && f.isFillChar(e);) c = e, e = e.previousSibling;
                this.isFillChar(c, !0) && 1 == d.startOffset && (d.setStartBefore(c), c = d.startContainer);
                for (; c && f.isFillChar(c);) a = c, c = c.previousSibling;
                a && (d.setStartBefore(a), c = d.startContainer);
                for (1 == c.nodeType && f.isEmptyNode(c) && 1 == d.startOffset && d.setStart(c, 0).collapse(!0); !d.startOffset;) {
                    c = d.startContainer;
                    if (f.isBlockElm(c) || f.isBody(c)) {
                        b = 1;
                        break
                    }
                    var e = d.startContainer.previousSibling, h;
                    if (e) {
                        for (; e && f.isFillChar(e);) h = e, e = e.previousSibling;
                        h ? d.setStartBefore(h) : d.setStartBefore(d.startContainer)
                    } else d.setStartBefore(d.startContainer)
                }
                return b && !f.isBody(d.startContainer) ? 1 : 0
            },
            isEmptyBlock: function (d, b) {
                if (1 != d.nodeType) return 0;
                b = b || new RegExp("[ \u00a0\t\r\n" + f.fillChar + "]", "g");
                if (0 < d[r.ie ? "innerText" : "textContent"].replace(b, "").length) return 0;
                for (var c in w.$isNotEmpty) if (d.getElementsByTagName(c).length) return 0;
                return 1
            },
            setViewportOffset: function (d, b) {
                var c = parseInt(d.style.left) | 0, a = parseInt(d.style.top) | 0, e = d.getBoundingClientRect(),
                    h = b.left - e.left, e = b.top - e.top;
                h && (d.style.left = c + h + "px");
                e && (d.style.top = a + e + "px")
            },
            fillNode: function (d, b) {
                var c = r.ie ? d.createTextNode(f.fillChar) : d.createElement("br");
                b.innerHTML = "";
                b.appendChild(c)
            },
            moveChild: function (d, b, c) {
                for (; d.firstChild;) c &&
                b.firstChild ? b.insertBefore(d.lastChild, b.firstChild) : b.appendChild(d.firstChild)
            },
            hasNoAttributes: function (d) {
                return r.ie ? /^<\w+\s*?>/.test(d.outerHTML) : 0 == d.attributes.length
            },
            isCustomeNode: function (d) {
                return 1 == d.nodeType && d.getAttribute("_ue_custom_node_")
            },
            isTagNode: function (d, b) {
                return 1 == d.nodeType && (new RegExp("\\b" + d.tagName + "\\b", "i")).test(b)
            },
            filterNodeList: function (d, b, c) {
                var a = [];
                if (!p.isFunction(b)) {
                    var e = b;
                    b = function (a) {
                        return -1 != p.indexOf(p.isArray(e) ? e : e.split(" "), a.tagName.toLowerCase())
                    }
                }
                p.each(d,
                    function (e) {
                        b(e) && a.push(e)
                    });
                return 0 == a.length ? null : 1 != a.length && c ? a : a[0]
            },
            isInNodeEndBoundary: function (d, b) {
                var c = d.startContainer;
                if (3 == c.nodeType && d.startOffset != c.nodeValue.length || 1 == c.nodeType && d.startOffset != c.childNodes.length) return 0;
                for (; c !== b;) {
                    if (c.nextSibling) return 0;
                    c = c.parentNode
                }
                return 1
            },
            isBoundaryNode: function (d, b) {
                for (var c; !f.isBody(d);) if (c = d, d = d.parentNode, c !== d[b]) return !1;
                return !0
            },
            fillHtml: r.ie11below ? " " : "
" }, Q = new RegExp(f.fillChar, "g"); (function () { function d(a) { return !a.collapsed && 1 == a.startContainer.nodeType && a.startContainer === a.endContainer && 1 == a.endOffset - a.startOffset } function b(a, g, e, b) { 1 == g.nodeType && (w.$empty[g.tagName] || w.$nonChild[g.tagName]) && (e = f.getNodeIndex(g) + (a ? 0 : 1), g = g.parentNode); a ? (b.startContainer = g, b.startOffset = e, b.endContainer || b.collapse(!0)) : (b.endContainer = g, b.endOffset = e, b.startContainer || b.collapse(!1)); b.collapsed = b.startContainer && b.endContainer && b.startContainer === b.endContainer && b.startOffset == b.endOffset; return b } function c(a, g) { var b = a.startContainer, e = a.endContainer, c = a.startOffset, l = a.endOffset, k = a.document, h = k.createDocumentFragment(), d, p; 1 == b.nodeType && (b = b.childNodes[c] || (d = b.appendChild(k.createTextNode("")))); 1 == e.nodeType && (e = e.childNodes[l] || (p = e.appendChild(k.createTextNode("")))); if (b === e && 3 == b.nodeType) return h.appendChild(k.createTextNode(b.substringData(c, l - c))), g && (b.deleteData(c, l - c), a.collapse(!0)), h; for (var B, O, r = h, t = f.findParents(b, !0), w = f.findParents(e, !0), A = 0; t[A] == w[A];) A++; for (var I = A, E; E = t[I]; I++) { B = E.nextSibling; E == b ? d || (3 == a.startContainer.nodeType ? (r.appendChild(k.createTextNode(b.nodeValue.slice(c))), g && b.deleteData(c, b.nodeValue.length - c)) : r.appendChild(g ? b : b.cloneNode(!0))) : (O = E.cloneNode(!1), r.appendChild(O)); for (; B && B !== e && B !== w[I];) E = B.nextSibling, r.appendChild(g ? B : B.cloneNode(!0)), B = E; r = O } r = h; t[A] || (r.appendChild(t[A - 1].cloneNode(!1)), r = r.firstChild); for (I = A; c = w[I]; I++) { B = c.previousSibling; c == e ? p || 3 != a.endContainer.nodeType || (r.appendChild(k.createTextNode(e.substringData(0, l))), g && e.deleteData(0, l)) : (O = c.cloneNode(!1), r.appendChild(O)); if (I != A || !t[A]) for (; B && B !== b;) c = B.previousSibling, r.insertBefore(g ? B : B.cloneNode(!0), r.firstChild), B = c; r = O } g && a.setStartBefore(w[A] ? t[A] ? w[A] : t[A - 1] : w[A - 1]).collapse(!0); d && f.remove(d); p && f.remove(p); return h } function a(a, g) { try { if (l && f.inDoc(l, a)) if (l.nodeValue.replace(Q, "").length) l.nodeValue = l.nodeValue.replace(Q, ""); else { var b = l.parentNode; for (f.remove(l); b && f.isEmptyInlineElement(b) && (r.safari ? !(f.getPosition(b, g) & f.POSITION_CONTAINS) : !b.contains(g));) l = b.parentNode, f.remove(b), b = l } } catch (e) { } } function e(a, b) { var g; for (a = a[b]; a && f.isFillChar(a);) g = a[b], f.remove(a), a = g } var h = 0, g = f.fillChar, l, k = M.Range = function (a) { this.startContainer = this.startOffset = this.endContainer = this.endOffset = null; this.document = a; this.collapsed = !0 }; k.prototype = { cloneContents: function () { return this.collapsed ? null : c(this, 0) }, deleteContents: function () { var a; this.collapsed || c(this, 1); r.webkit && (a = this.startContainer, 3 != a.nodeType || a.nodeValue.length || (this.setStartBefore(a).collapse(!0), f.remove(a))); return this }, extractContents: function () { return this.collapsed ? null : c(this, 2) }, setStart: function (a, g) { return b(!0, a, g, this) }, setEnd: function (a, g) { return b(!1, a, g, this) }, setStartAfter: function (a) { return this.setStart(a.parentNode, f.getNodeIndex(a) + 1) }, setStartBefore: function (a) { return this.setStart(a.parentNode, f.getNodeIndex(a)) }, setEndAfter: function (a) { return this.setEnd(a.parentNode, f.getNodeIndex(a) + 1) }, setEndBefore: function (a) { return this.setEnd(a.parentNode, f.getNodeIndex(a)) }, setStartAtFirst: function (a) { return this.setStart(a, 0) }, setStartAtLast: function (a) { return this.setStart(a, 3 == a.nodeType ? a.nodeValue.length : a.childNodes.length) }, setEndAtFirst: function (a) { return this.setEnd(a, 0) }, setEndAtLast: function (a) { return this.setEnd(a, 3 == a.nodeType ? a.nodeValue.length : a.childNodes.length) }, selectNode: function (a) { return this.setStartBefore(a).setEndAfter(a) }, selectNodeContents: function (a) { return this.setStart(a, 0).setEndAtLast(a) }, cloneRange: function () { return (new k(this.document)).setStart(this.startContainer, this.startOffset).setEnd(this.endContainer, this.endOffset) }, collapse: function (a) { a ? (this.endContainer = this.startContainer, this.endOffset = this.startOffset) : (this.startContainer = this.endContainer, this.startOffset = this.endOffset); this.collapsed = !0; return this }, shrinkBoundary: function (a) { function g(a) { return 1 == a.nodeType && !f.isBookmarkNode(a) && !w.$empty[a.tagName] && !w.$nonChild[a.tagName] } for (var b, e = this.collapsed; 1 == this.startContainer.nodeType && (b = this.startContainer.childNodes[this.startOffset]) && g(b);) this.setStart(b, 0); if (e) return this.collapse(!0); if (!a) for (; 1 == this.endContainer.nodeType && 0 < this.endOffset && (b = this.endContainer.childNodes[this.endOffset - 1]) && g(b);) this.setEnd(b, b.childNodes.length); return this }, getCommonAncestor: function (a, b) { var g = this.startContainer, e = this.endContainer; return g === e ? a && d(this) && (g = g.childNodes[this.startOffset], 1 == g.nodeType) ? g : b && 3 == g.nodeType ? g.parentNode : g : f.getCommonAncestor(g, e) }, trimBoundary: function (a) { this.txtToElmBoundary(); var g = this.startContainer, b = this.startOffset, e = this.collapsed, c = this.endContainer; if (3 == g.nodeType) { if (0 == b) this.setStartBefore(g); else if (b >= g.nodeValue.length) this.setStartAfter(g); else { var l = f.split(g, b); g === c ? this.setEnd(l, this.endOffset - b) : g.parentNode === c && (this.endOffset += 1); this.setStartBefore(l) } if (e) return this.collapse(!0) } a || (b = this.endOffset, c = this.endContainer, 3 == c.nodeType && (0 == b ? this.setEndBefore(c) : (b < c.nodeValue.length && f.split(c, b), this.setEndAfter(c)))); return this }, txtToElmBoundary: function (a) { function g(a, b) { var e = a[b + "Container"], c = a[b + "Offset"]; if (3 == e.nodeType) if (!c) a["set" + b.replace(/(\w)/, function (a) { return a.toUpperCase() }) + "Before"](e); else if (c >= e.nodeValue.length) a["set" + b.replace(/(\w)/, function (a) { return a.toUpperCase() }) + "After"](e) } if (a || !this.collapsed) g(this, "start"), g(this, "end"); return this }, insertNode: function (a) { var g = a, b = 1; 11 == a.nodeType && (g = a.firstChild, b = a.childNodes.length); this.trimBoundary(!0); var e = this.startContainer, c = e.childNodes[this.startOffset]; c ? e.insertBefore(a, c) : e.appendChild(a); g.parentNode === this.endContainer && (this.endOffset += b); return this.setStartBefore(g) }, setCursor: function (a, g) { return this.collapse(!a).select(g) }, createBookmark: function (a, g) { var b, e = this.document.createElement("span"); e.style.cssText = "display:none;line-height:0px;"; e.appendChild(this.document.createTextNode("\u200d")); e.id = "_baidu_bookmark_start_" + (g ? "" : h++); this.collapsed || (b = e.cloneNode(!0), b.id = "_baidu_bookmark_end_" + (g ? "" : h++)); this.insertNode(e); b && this.collapse().insertNode(b).setEndBefore(b); this.setStartAfter(e); return {start: a ? e.id : e, end: b ? a ? b.id : b : null, id: a} }, moveToBookmark: function (a) { var g = a.id ? this.document.getElementById(a.start) : a.start; a = a.end && a.id ? this.document.getElementById(a.end) : a.end; this.setStartBefore(g); f.remove(g); a ? (this.setEndBefore(a), f.remove(a)) : this.collapse(!0); return this }, enlarge: function (a, g) { var b = f.isBody, e, c, l = this.document.createTextNode(""); if (a) { c = this.startContainer; 1 == c.nodeType ? c.childNodes[this.startOffset] ? e = c = c.childNodes[this.startOffset] : (c.appendChild(l), e = c = l) : e = c; for (; ;) { if (f.isBlockElm(c)) { for (c = e; (e = c.previousSibling) && !f.isBlockElm(e);) c = e; this.setStartBefore(c); break } e = c; c = c.parentNode } c = this.endContainer; 1 == c.nodeType ? ((e = c.childNodes[this.endOffset]) ? c.insertBefore(l, e) : c.appendChild(l), e = c = l) : e = c; for (; ;) { if (f.isBlockElm(c)) { for (c = e; (e = c.nextSibling) && !f.isBlockElm(e);) c = e; this.setEndAfter(c); break } e = c; c = c.parentNode } l.parentNode === this.endContainer && this.endOffset--; f.remove(l) } if (!this.collapsed) { for (; !(0 != this.startOffset || g && g(this.startContainer) || b(this.startContainer));) this.setStartBefore(this.startContainer); for (; !(this.endOffset != (1 == this.endContainer.nodeType ? this.endContainer.childNodes.length : this.endContainer.nodeValue.length) || g && g(this.endContainer) || b(this.endContainer));) this.setEndAfter(this.endContainer) } return this }, enlargeToBlockElm: function (a) { for (; !f.isBlockElm(this.startContainer);) this.setStartBefore(this.startContainer); if (!a) for (; !f.isBlockElm(this.endContainer);) this.setEndAfter(this.endContainer); return this }, adjustmentBoundary: function () { if (!this.collapsed) { for (; !f.isBody(this.startContainer) && this.startOffset == this.startContainer[3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"].length && this.startContainer[3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"].length;) this.setStartAfter(this.startContainer); for (; !f.isBody(this.endContainer) && !this.endOffset && this.endContainer[3 == this.endContainer.nodeType ? "nodeValue" : "childNodes"].length;) this.setEndBefore(this.endContainer) } return this }, applyInlineStyle: function (a, g, b) { if (this.collapsed) return this; this.trimBoundary().enlarge(!1, function (a) { return 1 == a.nodeType && f.isBlockElm(a) }).adjustmentBoundary(); for (var e = this.createBookmark(), c = e.end, l = function (a) { return 1 == a.nodeType ? "br" != a.tagName.toLowerCase() : !f.isWhitespace(a) }, k = f.getNextDomNode(e.start, !1, l), h, d, p = this.cloneRange(); k && f.getPosition(k, c) & f.POSITION_PRECEDING;) if (3 == k.nodeType || w[a][k.tagName]) { p.setStartBefore(k); for (h = k; h && (3 == h.nodeType || w[a][h.tagName]) && h !== c;) d = h, h = f.getNextDomNode(h, 1 == h.nodeType, null, function (g) { return w[a][g.tagName] }); var k = p.setEndAfter(d).extractContents(), B; if (b && 0 < b.length) { var O; O = B = b[0].cloneNode(!1); for (var r = 1, t; t = b[r++];) B.appendChild(t.cloneNode(!1)), B = B.firstChild } else B = p.document.createElement(a); g && f.setAttributes(B, g); B.appendChild(k); p.insertNode(b ? O : B); var U; "span" == a && g.style && /text\-decoration/.test(g.style) && (U = f.findParentByTagName(B, "a", !0)) ? (f.setAttributes(U, g), f.remove(B, !0), B = U) : (f.mergeSibling(B), f.clearEmptySibling(B)); f.mergeChild(B, g); k = f.getNextDomNode(B, !1, l); f.mergeToParent(B); if (h === c) break } else k = f.getNextDomNode(k, !0, l); return this.moveToBookmark(e) }, removeInlineStyle: function (a) { if (this.collapsed) return this; a = p.isArray(a) ? a : [a]; this.shrinkBoundary().adjustmentBoundary(); for (var g = this.startContainer, b = this.endContainer; ;) { if (1 == g.nodeType) { if (-1 < p.indexOf(a, g.tagName.toLowerCase())) break; if ("body" == g.tagName.toLowerCase()) { g = null; break } } g = g.parentNode } for (; ;) { if (1 == b.nodeType) { if (-1 < p.indexOf(a, b.tagName.toLowerCase())) break; if ("body" == b.tagName.toLowerCase()) { b = null; break } } b = b.parentNode } var e = this.createBookmark(), c, l; g && (l = this.cloneRange().setEndBefore(e.start).setStartBefore(g), c = l.extractContents(), l.insertNode(c), f.clearEmptySibling(g, !0), g.parentNode.insertBefore(e.start, g)); b && (l = this.cloneRange().setStartAfter(e.end).setEndAfter(b), c = l.extractContents(), l.insertNode(c), f.clearEmptySibling(b, !1, !0), b.parentNode.insertBefore(e.end, b.nextSibling)); for (g = f.getNextDomNode(e.start, !1, function (a) { return 1 == a.nodeType }); g && g !== e.end;) b = f.getNextDomNode(g, !0, function (a) { return 1 == a.nodeType }), -1 < p.indexOf(a, g.tagName.toLowerCase()) && f.remove(g, !0), g = b; return this.moveToBookmark(e) }, getClosedNode: function () { var a; if (!this.collapsed) { var g = this.cloneRange().adjustmentBoundary().shrinkBoundary(); d(g) && (g = g.startContainer.childNodes[g.startOffset]) && 1 == g.nodeType && (w.$empty[g.tagName] || w.$nonChild[g.tagName]) && (a = g) } return a }, select: r.ie ? function (b, c) { var k; this.collapsed || this.shrinkBoundary(); var h = this.getClosedNode(); if (h && !c) { try { k = this.document.body.createControlRange(), k.addElement(h), k.select() } catch (d) { } return this } var h = this.createBookmark(), z = h.start; k = this.document.body.createTextRange(); k.moveToElementText(z); k.moveStart("character", 1); if (!this.collapsed) { var v = this.document.body.createTextRange(), z = h.end; v.moveToElementText(z); k.setEndPoint("EndToEnd", v) } else if (!b && 3 != this.startContainer.nodeType) { var v = this.document.createTextNode(g), D = this.document.createElement("span"); D.appendChild(this.document.createTextNode(g)); z.parentNode.insertBefore(D, z); z.parentNode.insertBefore(v, z); a(this.document, v); l = v; e(D, "previousSibling"); e(z, "nextSibling"); k.moveStart("character", -1); k.collapse(!0) } this.moveToBookmark(h); D && f.remove(D); try { k.select() } catch (p) { } return this } : function (b) { function c(a) { function b(g, e, c) { 3 == g.nodeType && g.nodeValue.length < e && (a[c + "Offset"] = g.nodeValue.length) } b(a.startContainer, a.startOffset, "start"); b(a.endContainer, a.endOffset, "end") } var k = f.getWindow(this.document), h = k.getSelection(); r.gecko ? this.document.body.focus() : k.focus(); if (h) { h.removeAllRanges(); this.collapsed && !b && (b = k = this.startContainer, 1 == k.nodeType && (b = k.childNodes[this.startOffset]), 3 == k.nodeType && this.startOffset || (b ? b.previousSibling && 3 == b.previousSibling.nodeType : k.lastChild && 3 == k.lastChild.nodeType) || (b = this.document.createTextNode(g), this.insertNode(b), a(this.document, b), e(b, "previousSibling"), e(b, "nextSibling"), l = b, this.setStart(b, r.webkit ? 1 : 0).collapse(!0))); k = this.document.createRange(); if (this.collapsed && r.opera && 1 == this.startContainer.nodeType) if (b = this.startContainer.childNodes[this.startOffset]) { for (; b && f.isBlockElm(b);) if (1 == b.nodeType && b.childNodes[0]) b = b.childNodes[0]; else break; b && this.setStartBefore(b).collapse(!0) } else (b = this.startContainer.lastChild) && f.isBr(b) && this.setStartBefore(b).collapse(!0); c(this); k.setStart(this.startContainer, this.startOffset); k.setEnd(this.endContainer, this.endOffset); h.addRange(k) } return this }, scrollToView: function (a, b) { a = a ? window : f.getWindow(this.document); var g = this.document.createElement("span"); g.innerHTML = " "; this.cloneRange().insertNode(g); f.scrollToView(g, a, b); f.remove(g); return this }, inFillChar: function () { var a = this.startContainer; return this.collapsed && 3 == a.nodeType && a.nodeValue.replace(new RegExp("^" + f.fillChar), "").length + 1 == a.nodeValue.length ? !0 : !1 }, createAddress: function (a, b) { function g(a) { for (var e = a ? c.startContainer : c.endContainer, k = f.findParents(e, !0, function (a) { return !f.isBody(a) }), l = [], h = 0, d; d = k[h++];) l.push(f.getNodeIndex(d, b)); k = 0; if (b) if (3 == e.nodeType) { for (e = e.previousSibling; e && 3 == e.nodeType;) k += e.nodeValue.replace(Q, "").length, e = e.previousSibling; k += a ? c.startOffset : c.endOffset } else if (e = e.childNodes[a ? c.startOffset : c.endOffset]) k = f.getNodeIndex(e, b); else for (e = a ? c.startContainer : c.endContainer, a = e.firstChild; a;) if (f.isFillChar(a)) a = a.nextSibling; else if (k++, 3 == a.nodeType) for (; a && 3 == a.nodeType;) a = a.nextSibling; else a = a.nextSibling; else k = a ? f.isFillChar(e) ? 0 : c.startOffset : c.endOffset; 0 > k && (k = 0); l.push(k); return l } var e = {}, c = this; e.startAddress = g(!0); a || (e.endAddress = c.collapsed ? [].concat(e.startAddress) : g()); return e }, moveToAddress: function (a, b) { function g(a, b) { for (var c = e.document.body, k, l, h = 0, d, n = a.length; h < n; h++) if (d = a[h], k = c, c = c.childNodes[d], !c) { l = d; break } b ? c ? e.setStartBefore(c) : e.setStart(k, l) : c ? e.setEndBefore(c) : e.setEnd(k, l) } var e = this; g(a.startAddress, !0); !b && a.endAddress && g(a.endAddress); return e }, equals: function (a) { for (var b in this) if (this.hasOwnProperty(b) && this[b] !== a[b]) return !1; return !0 }, traversal: function (a, b) { if (this.collapsed) return this; for (var g = this.createBookmark(), e = g.end, c = f.getNextDomNode(g.start, !1, b); c && c !== e && f.getPosition(c, e) & f.POSITION_PRECEDING;) { var k = f.getNextDomNode(c, !1, b); a(c); c = k } return this.moveToBookmark(g) } } })(); (function () { function d(a, b) { var c = f.getNodeIndex; a = a.duplicate(); a.collapse(b); var g = a.parentElement(); if (!g.hasChildNodes()) return {container: g, offset: 0}; for (var l = g.children, k, d = a.duplicate(), n = 0, q = l.length - 1, u = -1; n <= q;) { u = Math.floor((n + q) / 2); k = l[u]; d.moveToElementText(k); var x = d.compareEndPoints("StartToStart", a); if (0 < x) q = u - 1; else if (0 > x) n = u + 1; else return {container: g, offset: c(k)} } if (-1 == u) { d.moveToElementText(g); d.setEndPoint("StartToStart", a); d = d.text.replace(/(\r\n|\r)/g, "\n").length; l = g.childNodes; if (!d) return k = l[l.length - 1], {container: k, offset: k.nodeValue.length}; for (c = l.length; 0 < d;) d -= l[--c].nodeValue.length; return {container: l[c], offset: -d} } d.collapse(0 < x); d.setEndPoint(0 < x ? "StartToStart" : "EndToStart", a); d = d.text.replace(/(\r\n|\r)/g, "\n").length; if (!d) return w.$empty[k.tagName] || w.$nonChild[k.tagName] ? { container: g, offset: c(k) + (0 < x ? 0 : 1) } : {container: k, offset: 0 < x ? 0 : k.childNodes.length}; for (; 0 < d;) try { l = k, k = k[0 < x ? "previousSibling" : "nextSibling"], d -= k.nodeValue.length } catch (z) { return {container: g, offset: c(l)} } return {container: k, offset: 0 < x ? -d : k.nodeValue.length + d} } function b(a, b) { if (a.item) b.selectNode(a.item(0)); else { var c = d(a, !0); b.setStart(c.container, c.offset); 0 != a.compareEndPoints("StartToEnd", a) && (c = d(a, !1), b.setEnd(c.container, c.offset)) } return b } function c(a) { var b; try { b = a.getNative().createRange() } catch (c) { return null } var g = b.item ? b.item(0) : b.parentElement(); return (g.ownerDocument || g) === a.document ? b : null } (M.Selection = function (a) { var b = this; b.document = a; r.ie9below && (a = f.getWindow(a).frameElement, f.on(a, "beforedeactivate", function () { b._bakIERange = b.getIERange() }), f.on(a, "activate", function () { try { !c(b) && b._bakIERange && b._bakIERange.select() } catch (a) { } b._bakIERange = null })); a = a = null }).prototype = { rangeInBody: function (a, b) { var c = r.ie9below || b ? a.item ? a.item() : a.parentElement() : a.startContainer; return c === this.document.body || f.inDoc(c, this.document) }, getNative: function () { var a = this.document; try { return a ? r.ie9below ? a.selection : f.getWindow(a).getSelection() : null } catch (b) { return null } }, getIERange: function () { var a = c(this); return !a && this._bakIERange ? this._bakIERange : a }, cache: function () { this.clear(); this._cachedRange = this.getRange(); this._cachedStartElement = this.getStart(); this._cachedStartElementPath = this.getStartElementPath() }, getStartElementPath: function () { if (this._cachedStartElementPath) return this._cachedStartElementPath; var a = this.getStart(); return a ? f.findParents(a, !0, null, !0) : [] }, clear: function () { this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null }, isFocus: function () { try { if (r.ie9below) { var a = c(this); return !(!a || !this.rangeInBody(a)) } return !!this.getNative().rangeCount } catch (b) { return !1 } }, getRange: function () { function a(a) { for (var b = c.document.body.firstChild, g = a.collapsed; b && b.firstChild;) a.setStart(b, 0), b = b.firstChild; a.startContainer || a.setStart(c.document.body, 0); g && a.collapse(!0) } var c = this; if (null != c._cachedRange) return this._cachedRange; var h = new t.editor.dom.Range(c.document); if (r.ie9below) { var g = c.getIERange(); if (g) try { b(g, h) } catch (l) { a(h) } else a(h) } else { var k = c.getNative(); if (k && k.rangeCount) g = k.getRangeAt(0), k = k.getRangeAt(k.rangeCount - 1), h.setStart(g.startContainer, g.startOffset).setEnd(k.endContainer, k.endOffset), h.collapsed && f.isBody(h.startContainer) && !h.startOffset && a(h); else { if (this._bakRange && f.inDoc(this._bakRange.startContainer, this.document)) return this._bakRange; a(h) } } return this._bakRange = h }, getStart: function () { if (this._cachedStartElement) return this._cachedStartElement; var a = r.ie9below ? this.getIERange() : this.getRange(), b, c; if (r.ie9below) { if (!a) return this.document.body.firstChild; if (a.item) return a.item(0); b = a.duplicate(); 0 < b.text.length && b.moveStart("character", 1); b.collapse(1); b = b.parentElement(); for (c = a = a.parentElement(); a = a.parentNode;) if (a == b) { b = c; break } } else if (a.shrinkBoundary(), b = a.startContainer, 1 == b.nodeType && b.hasChildNodes() && (b = b.childNodes[Math.min(b.childNodes.length - 1, a.startOffset)]), 3 == b.nodeType) return b.parentNode; return b }, getText: function () { var a; return this.isFocus() && (a = this.getNative()) ? (a = r.ie9below ? a.createRange() : a.getRangeAt(0), r.ie9below ? a.text : a.toString()) : "" }, clearRange: function () { this.getNative()[r.ie9below ? "empty" : "removeAllRanges"]() } } })(); (function () { function d(a, b) { var c; if (b.textarea) if (p.isString(b.textarea)) for (var e = 0, h, d = f.getElementsByTagName(a, "textarea"); h = d[e++];) { if (h.id == "ueditor_textarea_" + b.options.textarea) { c = h; break } } else c = b.textarea; c || (a.appendChild(c = f.createElement(document, "textarea", { name: b.options.textarea, id: "ueditor_textarea_" + b.options.textarea, style: "display:none" })), b.textarea = c); !c.getAttribute("name") && c.setAttribute("name", b.options.textarea); c.value = b.hasContents() ? b.options.allHtmlEnabled ? b.getAllHtml() : b.getContent(null, null, !0) : "" } function b(a) { for (var b in a) return b } function c(a) { a.langIsReady = !0; a.fireEvent("langReady") } var a = 0, e, h = UE.Editor = function (g) { var e = this; e.uid = a++; ba.call(e); e.commands = {}; e.options = p.extend(p.clone(g || {}), UEDITOR_CONFIG, !0); e.shortcutkeys = {}; e.inputRules = []; e.outputRules = []; e.setOpt(h.defaultOptions(e)); e.loadServerConfig(); p.isEmptyObject(UE.I18N) ? p.loadFile(document, { src: e.options.langPath + e.options.lang + "/" + e.options.lang + ".js", tag: "script", type: "text/javascript", defer: "defer" }, function () { UE.plugin.load(e); c(e) }) : (e.options.lang = b(UE.I18N), UE.plugin.load(e), c(e)); UE.instants["ueditorInstant" + e.uid] = e }; h.prototype = { registerCommand: function (a, b) { this.commands[a] = b }, ready: function (a) { a && (this.isReady ? a.apply(this) : this.addListener("ready", a)) }, setOpt: function (a, b) { var c = {}; p.isString(a) ? c[a] = b : c = a; p.extend(this.options, c, !0) }, getOpt: function (a) { return this.options[a] }, destroy: function () { this.fireEvent("destroy"); var a = this.container.parentNode, b = this.textarea; b ? b.style.display = "" : (b = document.createElement("textarea"), a.parentNode.insertBefore(b, a)); b.style.width = this.iframe.offsetWidth + "px"; b.style.height = this.iframe.offsetHeight + "px"; b.value = this.getContent(); b.id = this.key; a.innerHTML = ""; f.remove(a); var a = this.key, c; for (c in this) this.hasOwnProperty(c) && delete this[c]; UE.delEditor(a) }, render: function (a) { var b = this.options; p.isString(a) && (a = document.getElementById(a)); if (a) { b.minFrameWidth = b.initialFrameWidth ? b.initialFrameWidth : b.initialFrameWidth = a.offsetWidth; b.initialFrameHeight ? b.minFrameHeight = b.initialFrameHeight : b.initialFrameHeight = b.minFrameHeight = a.offsetHeight; a.style.width = /%$/.test(b.initialFrameWidth) ? "100%" : b.initialFrameWidth - parseInt(f.getComputedStyle(a, "padding-left")) - parseInt(f.getComputedStyle(a, "padding-right")) + "px"; a.style.height = /%$/.test(b.initialFrameHeight) ? "100%" : b.initialFrameHeight - parseInt(f.getComputedStyle(a, "padding-top")) - parseInt(f.getComputedStyle(a, "padding-bottom")) + "px"; a.style.zIndex = b.zIndex; var c = (J && 9 > r.version ? "" : "") + "" + (b.iframeCssUrl ? "" : "") + (b.initialStyle ? "" : "") + "