From b0d1f11bea4ef59f6fe59f4ab3e1d9239fdb4faf Mon Sep 17 00:00:00 2001 From: Myron Turner Date: Wed, 14 Nov 2018 20:33:00 -0600 Subject: [PATCH] adding scayt check code --- action/meta.php | 31 +- ckeditor/ckeditor.js.unc | 26722 +++++++++++++++++++++++++++++++++++++ conf/default.php | 2 +- helper.php | 1 + lang/en/scayt.txt | 3 + lang/en/settings.php | 4 +- script.js | 15 +- 7 files changed, 26772 insertions(+), 6 deletions(-) create mode 100755 ckeditor/ckeditor.js.unc create mode 100644 lang/en/scayt.txt diff --git a/action/meta.php b/action/meta.php index e22a1ab9..ce8ec3f0 100644 --- a/action/meta.php +++ b/action/meta.php @@ -83,6 +83,22 @@ function handle_profile_form(Doku_Event $event, $param) { } function _ajax_call(Doku_Event $event, $param) { + + if ($event->data == 'cked_scaytchk') { + global $lang,$INPUT; + $event->stopPropagation(); + $event->preventDefault(); + $filename = metaFN('fckl:scayt','.meta'); + $msg = $this->locale_xhtml('scayt'); + if (!file_exists($filename)) { + io_saveFile($filename,'1'); + echo "$msg\n"; + return; + } + + + return; + } if ($event->data == 'cked_upload') { global $lang; $event->stopPropagation(); @@ -181,7 +197,7 @@ function _ajax_call(Doku_Event $event, $param) { echo $t; return; } - if ($event->data == 'wrap_lang') { //choose profile editor priority + if ($event->data == 'wrap_lang') { // parse and return language file to ckeditor warp plugin $event->stopPropagation(); $event->preventDefault(); global $INPUT; @@ -912,11 +928,20 @@ function reset_user_rewrite_check() { function startup_msg() { global $INFO; global $ACT; - + $show_msg = false; if($INFO['isadmin'] || $INFO['ismanager'] ) { // only admins and mgrs get messages $show_msg = true; } if(!$show_msg) return; + $filename = metaFN('fckl:scayt','.meta'); + $msg = $this->locale_xhtml('scayt'); + + if (!file_exists($filename)) { + io_saveFile($filename,'1'); + msg($msg,2); + return; + } + /* $filename = metaFN('fckl:merger','.meta'); $msg = $this->locale_xhtml('merger'); if (!file_exists($filename)) { @@ -934,7 +959,7 @@ function startup_msg() { return; } } - +*/ } /** checked for additional dw priority possibilities only if the dw priority option is set to true diff --git a/ckeditor/ckeditor.js.unc b/ckeditor/ckeditor.js.unc new file mode 100755 index 00000000..39255f41 --- /dev/null +++ b/ckeditor/ckeditor.js.unc @@ -0,0 +1,26722 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function() { + if (window.CKEDITOR && window.CKEDITOR.dom) return; + window.CKEDITOR || (window.CKEDITOR = function() { + var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i, + d = { + timestamp: "I8BG", + version: "4.10.1", + revision: "59246e9", + rnd: Math.floor(900 * Math.random()) + 100, + _: { + pending: [], + basePathSrcPattern: a + }, + status: "unloaded", + basePath: function() { + var b = window.CKEDITOR_BASEPATH || ""; + if (!b) + for (var c = document.getElementsByTagName("script"), d = 0; d < c.length; d++) { + var g = c[d].src.match(a); + if (g) { + b = g[1]; + break + } + } - 1 == b.indexOf(":/") && "//" != b.slice(0, 2) && (b = 0 === b.indexOf("/") ? location.href.match(/^.*?:\/\/[^\/]*/)[0] + + b : location.href.match(/^[^\?]*\/(?:)/)[0] + b); + if (!b) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.'; + return b + }(), + getUrl: function(a) { + -1 == a.indexOf(":/") && 0 !== a.indexOf("/") && (a = this.basePath + a); + this.timestamp && "/" != a.charAt(a.length - 1) && !/[&?]t=/.test(a) && (a += (0 <= a.indexOf("?") ? "\x26" : "?") + "t\x3d" + this.timestamp); + return a + }, + domReady: function() { + function a() { + try { + document.addEventListener ? (document.removeEventListener("DOMContentLoaded", + a, !1), b()) : document.attachEvent && "complete" === document.readyState && (document.detachEvent("onreadystatechange", a), b()) + } catch (c) {} + } + + function b() { + for (var a; a = c.shift();) a() + } + var c = []; + return function(b) { + function n() { + try { + document.documentElement.doScroll("left") + } catch (e) { + setTimeout(n, 1); + return + } + a() + } + c.push(b); + "complete" === document.readyState && setTimeout(a, 1); + if (1 == c.length) + if (document.addEventListener) document.addEventListener("DOMContentLoaded", a, !1), window.addEventListener("load", a, !1); + else if (document.attachEvent) { + document.attachEvent("onreadystatechange", + a); + window.attachEvent("onload", a); + b = !1; + try { + b = !window.frameElement + } catch (r) {} + document.documentElement.doScroll && b && n() + } + } + }() + }, + b = window.CKEDITOR_GETURL; + if (b) { + var c = d.getUrl; + d.getUrl = function(a) { + return b.call(d, a) || c.call(d, a) + } + } + return d + }()); + CKEDITOR.event || (CKEDITOR.event = function() {}, CKEDITOR.event.implementOn = function(a) { + var d = CKEDITOR.event.prototype, + b; + for (b in d) null == a[b] && (a[b] = d[b]) + }, CKEDITOR.event.prototype = function() { + function a(a) { + var f = d(this); + return f[a] || (f[a] = new b(a)) + } + var d = function(a) { + a = a.getPrivate && a.getPrivate() || a._ || (a._ = {}); + return a.events || (a.events = {}) + }, + b = function(a) { + this.name = a; + this.listeners = [] + }; + b.prototype = { + getListenerIndex: function(a) { + for (var b = 0, d = this.listeners; b < d.length; b++) + if (d[b].fn == a) return b; + return -1 + } + }; + return { + define: function(b, d) { + var h = a.call(this, b); + CKEDITOR.tools.extend(h, d, !0) + }, + on: function(b, d, h, k, g) { + function n(e, a, y, v) { + e = { + name: b, + sender: this, + editor: e, + data: a, + listenerData: k, + stop: y, + cancel: v, + removeListener: r + }; + return !1 === d.call(h, e) ? !1 : e.data + } + + function r() { + y.removeListener(b, d) + } + var e = a.call(this, b); + if (0 > e.getListenerIndex(d)) { + e = e.listeners; + h || (h = this); + isNaN(g) && (g = 10); + var y = this; + n.fn = d; + n.priority = g; + for (var v = e.length - 1; 0 <= v; v--) + if (e[v].priority <= g) return e.splice(v + 1, 0, n), { + removeListener: r + }; + e.unshift(n) + } + return { + removeListener: r + } + }, + once: function() { + var a = Array.prototype.slice.call(arguments), + b = a[1]; + a[1] = function(a) { + a.removeListener(); + return b.apply(this, arguments) + }; + return this.on.apply(this, a) + }, + capture: function() { + CKEDITOR.event.useCapture = 1; + var a = this.on.apply(this, arguments); + CKEDITOR.event.useCapture = 0; + return a + }, + fire: function() { + var a = 0, + b = function() { + a = 1 + }, + h = 0, + k = function() { + h = 1 + }; + return function(g, n, r) { + var e = d(this)[g]; + g = a; + var y = h; + a = h = 0; + if (e) { + var v = e.listeners; + if (v.length) + for (var v = v.slice(0), B, D = 0; D < v.length; D++) { + if (e.errorProof) try { + B = + v[D].call(this, r, n, b, k) + } catch (x) {} else B = v[D].call(this, r, n, b, k); + !1 === B ? h = 1 : "undefined" != typeof B && (n = B); + if (a || h) break + } + } + n = h ? !1 : "undefined" == typeof n ? !0 : n; + a = g; + h = y; + return n + } + }(), + fireOnce: function(a, b, h) { + b = this.fire(a, b, h); + delete d(this)[a]; + return b + }, + removeListener: function(a, b) { + var h = d(this)[a]; + if (h) { + var k = h.getListenerIndex(b); + 0 <= k && h.listeners.splice(k, 1) + } + }, + removeAllListeners: function() { + var a = d(this), + b; + for (b in a) delete a[b] + }, + hasListeners: function(a) { + return (a = d(this)[a]) && 0 < a.listeners.length + } + } + }()); + CKEDITOR.editor || (CKEDITOR.editor = function() { + CKEDITOR._.pending.push([this, arguments]); + CKEDITOR.event.call(this) + }, CKEDITOR.editor.prototype.fire = function(a, d) { + a in { + instanceReady: 1, + loaded: 1 + } && (this[a] = !0); + return CKEDITOR.event.prototype.fire.call(this, a, d, this) + }, CKEDITOR.editor.prototype.fireOnce = function(a, d) { + a in { + instanceReady: 1, + loaded: 1 + } && (this[a] = !0); + return CKEDITOR.event.prototype.fireOnce.call(this, a, d, this) + }, CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); + CKEDITOR.env || (CKEDITOR.env = function() { + var a = navigator.userAgent.toLowerCase(), + d = a.match(/edge[ \/](\d+.?\d*)/), + b = -1 < a.indexOf("trident/"), + b = !(!d && !b), + b = { + ie: b, + edge: !!d, + webkit: !b && -1 < a.indexOf(" applewebkit/"), + air: -1 < a.indexOf(" adobeair/"), + mac: -1 < a.indexOf("macintosh"), + quirks: "BackCompat" == document.compatMode && (!document.documentMode || 10 > document.documentMode), + mobile: -1 < a.indexOf("mobile"), + iOS: /(ipad|iphone|ipod)/.test(a), + isCustomDomain: function() { + if (!this.ie) return !1; + var a = document.domain, + b = window.location.hostname; + return a != b && a != "[" + b + "]" + }, + secure: "https:" == location.protocol + }; + b.gecko = "Gecko" == navigator.product && !b.webkit && !b.ie; + b.webkit && (-1 < a.indexOf("chrome") ? b.chrome = !0 : b.safari = !0); + var c = 0; + b.ie && (c = d ? parseFloat(d[1]) : b.quirks || !document.documentMode ? parseFloat(a.match(/msie (\d+)/)[1]) : document.documentMode, b.ie9Compat = 9 == c, b.ie8Compat = 8 == c, b.ie7Compat = 7 == c, b.ie6Compat = 7 > c || b.quirks); + b.gecko && (d = a.match(/rv:([\d\.]+)/)) && (d = d[1].split("."), c = 1E4 * d[0] + 100 * (d[1] || 0) + 1 * (d[2] || 0)); + b.air && (c = parseFloat(a.match(/ adobeair\/(\d+)/)[1])); + b.webkit && (c = parseFloat(a.match(/ applewebkit\/(\d+)/)[1])); + b.version = c; + b.isCompatible = !(b.ie && 7 > c) && !(b.gecko && 4E4 > c) && !(b.webkit && 534 > c); + b.hidpi = 2 <= window.devicePixelRatio; + b.needsBrFiller = b.gecko || b.webkit || b.ie && 10 < c; + b.needsNbspFiller = b.ie && 11 > c; + b.cssClass = "cke_browser_" + (b.ie ? "ie" : b.gecko ? "gecko" : b.webkit ? "webkit" : "unknown"); + b.quirks && (b.cssClass += " cke_browser_quirks"); + b.ie && (b.cssClass += " cke_browser_ie" + (b.quirks ? "6 cke_browser_iequirks" : b.version)); + b.air && (b.cssClass += " cke_browser_air"); + b.iOS && (b.cssClass += " cke_browser_ios"); + b.hidpi && (b.cssClass += " cke_hidpi"); + return b + }()); + "unloaded" == CKEDITOR.status && function() { + CKEDITOR.event.implementOn(CKEDITOR); + CKEDITOR.loadFullCore = function() { + if ("basic_ready" != CKEDITOR.status) CKEDITOR.loadFullCore._load = 1; + else { + delete CKEDITOR.loadFullCore; + var a = document.createElement("script"); + a.type = "text/javascript"; + a.src = CKEDITOR.basePath + "ckeditor.js"; + document.getElementsByTagName("head")[0].appendChild(a) + } + }; + CKEDITOR.loadFullCoreTimeout = 0; + CKEDITOR.add = function(a) { + (this._.pending || (this._.pending = [])).push(a) + }; + (function() { + CKEDITOR.domReady(function() { + var a = + CKEDITOR.loadFullCore, + d = CKEDITOR.loadFullCoreTimeout; + a && (CKEDITOR.status = "basic_ready", a && a._load ? a() : d && setTimeout(function() { + CKEDITOR.loadFullCore && CKEDITOR.loadFullCore() + }, 1E3 * d)) + }) + })(); + CKEDITOR.status = "basic_loaded" + }(); + "use strict"; + CKEDITOR.VERBOSITY_WARN = 1; + CKEDITOR.VERBOSITY_ERROR = 2; + CKEDITOR.verbosity = CKEDITOR.VERBOSITY_WARN | CKEDITOR.VERBOSITY_ERROR; + CKEDITOR.warn = function(a, d) { + CKEDITOR.verbosity & CKEDITOR.VERBOSITY_WARN && CKEDITOR.fire("log", { + type: "warn", + errorCode: a, + additionalData: d + }) + }; + CKEDITOR.error = function(a, d) { + CKEDITOR.verbosity & CKEDITOR.VERBOSITY_ERROR && CKEDITOR.fire("log", { + type: "error", + errorCode: a, + additionalData: d + }) + }; + CKEDITOR.on("log", function(a) { + if (window.console && window.console.log) { + var d = console[a.data.type] ? a.data.type : "log", + b = a.data.errorCode; + if (a = a.data.additionalData) console[d]("[CKEDITOR] Error code: " + b + ".", a); + else console[d]("[CKEDITOR] Error code: " + b + "."); + console[d]("[CKEDITOR] For more information about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#" + b) + } + }, null, null, 999); + CKEDITOR.dom = {}; + (function() { + var a = [], + d = CKEDITOR.env.gecko ? "-moz-" : CKEDITOR.env.webkit ? "-webkit-" : CKEDITOR.env.ie ? "-ms-" : "", + b = /&/g, + c = />/g, + f = /|\s) /g, + function(a, e) { + return e + "\x26nbsp;" + }).replace(/ (?=<)/g, "\x26nbsp;") + }, + getNextNumber: function() { + var a = 0; + return function() { + return ++a + } + }(), + getNextId: function() { + return "cke_" + this.getNextNumber() + }, + getUniqueId: function() { + for (var a = "e", e = 0; 8 > e; e++) a += Math.floor(65536 * (1 + Math.random())).toString(16).substring(1); + return a + }, + override: function(a, e) { + var b = e(a); + b.prototype = a.prototype; + return b + }, + setTimeout: function(a, e, b, c, g) { + g || (g = window); + b || (b = g); + return g.setTimeout(function() { + c ? a.apply(b, [].concat(c)) : a.apply(b) + }, + e || 0) + }, + throttle: function(a, e, b) { + var c, g = 0; + b = b || {}; + return { + input: function() { + function d() { + g = (new Date).getTime(); + c = !1; + e.apply(b, n) + } + var n = Array.prototype.slice.call(arguments); + c && (clearTimeout(c), c = 0); + var m = (new Date).getTime() - g; + m < a ? c = setTimeout(d, a - m) : d() + }, + reset: function() { + c && (clearTimeout(c), c = g = 0) + } + } + }, + trim: function() { + var a = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g; + return function(e) { + return e.replace(a, "") + } + }(), + ltrim: function() { + var a = /^[ \t\n\r]+/g; + return function(e) { + return e.replace(a, "") + } + }(), + rtrim: function() { + var a = + /[ \t\n\r]+$/g; + return function(e) { + return e.replace(a, "") + } + }(), + indexOf: function(a, e) { + if ("function" == typeof e) + for (var b = 0, c = a.length; b < c; b++) { + if (e(a[b])) return b + } else { + if (a.indexOf) return a.indexOf(e); + b = 0; + for (c = a.length; b < c; b++) + if (a[b] === e) return b + } + return -1 + }, + search: function(a, e) { + var b = CKEDITOR.tools.indexOf(a, e); + return 0 <= b ? a[b] : null + }, + bind: function(a, e) { + return function() { + return a.apply(e, arguments) + } + }, + createClass: function(a) { + var e = a.$, + b = a.base, + c = a.privates || a._, + g = a.proto; + a = a.statics; + !e && (e = function() { + b && + this.base.apply(this, arguments) + }); + if (c) var d = e, + e = function() { + var a = this._ || (this._ = {}), + e; + for (e in c) { + var b = c[e]; + a[e] = "function" == typeof b ? CKEDITOR.tools.bind(b, this) : b + } + d.apply(this, arguments) + }; + b && (e.prototype = this.prototypedCopy(b.prototype), e.prototype.constructor = e, e.base = b, e.baseProto = b.prototype, e.prototype.base = function() { + this.base = b.prototype.base; + b.apply(this, arguments); + this.base = arguments.callee + }); + g && this.extend(e.prototype, g, !0); + a && this.extend(e, a, !0); + return e + }, + addFunction: function(b, e) { + return a.push(function() { + return b.apply(e || + this, arguments) + }) - 1 + }, + removeFunction: function(b) { + a[b] = null + }, + callFunction: function(b) { + var e = a[b]; + return e && e.apply(window, Array.prototype.slice.call(arguments, 1)) + }, + cssLength: function() { + var a = /^-?\d+\.?\d*px$/, + e; + return function(b) { + e = CKEDITOR.tools.trim(b + "") + "px"; + return a.test(e) ? e : b || "" + } + }(), + convertToPx: function() { + var a; + return function(e) { + a || (a = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e', CKEDITOR.document), + CKEDITOR.document.getBody().append(a)); + return /%$/.test(e) ? e : (a.setStyle("width", e), a.$.clientWidth) + } + }(), + repeat: function(a, e) { + return Array(e + 1).join(a) + }, + tryThese: function() { + for (var a, e = 0, b = arguments.length; e < b; e++) { + var c = arguments[e]; + try { + a = c(); + break + } catch (g) {} + } + return a + }, + genKey: function() { + return Array.prototype.slice.call(arguments).join("-") + }, + defer: function(a) { + return function() { + var e = arguments, + b = this; + window.setTimeout(function() { + a.apply(b, e) + }, 0) + } + }, + normalizeCssText: function(a, e) { + var b = [], + c, g = CKEDITOR.tools.parseCssText(a, + !0, e); + for (c in g) b.push(c + ":" + g[c]); + b.sort(); + return b.length ? b.join(";") + ";" : "" + }, + convertRgbToHex: function(a) { + return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function(a, b, c, g) { + a = [b, c, g]; + for (b = 0; 3 > b; b++) a[b] = ("0" + parseInt(a[b], 10).toString(16)).slice(-2); + return "#" + a.join("") + }) + }, + normalizeHex: function(a) { + return a.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function(a, b, c, g) { + a = b.toLowerCase(); + 3 == a.length && (a = a.split(""), a = [a[0], a[0], a[1], a[1], a[2], a[2]].join("")); + return "#" + a + g + }) + }, + parseCssText: function(a, + e, b) { + var c = {}; + b && (a = (new CKEDITOR.dom.element("span")).setAttribute("style", a).getAttribute("style") || ""); + a && (a = CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(a))); + if (!a || ";" == a) return c; + a.replace(/"/g, '"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function(a, b, g) { + e && (b = b.toLowerCase(), "font-family" == b && (g = g.replace(/\s*,\s*/g, ",")), g = CKEDITOR.tools.trim(g)); + c[b] = g + }); + return c + }, + writeCssText: function(a, e) { + var b, c = []; + for (b in a) c.push(b + ":" + a[b]); + e && c.sort(); + return c.join("; ") + }, + objectCompare: function(a, e, b) { + var c; + if (!a && !e) return !0; + if (!a || !e) return !1; + for (c in a) + if (a[c] != e[c]) return !1; + if (!b) + for (c in e) + if (a[c] != e[c]) return !1; + return !0 + }, + objectKeys: function(a) { + var e = [], + b; + for (b in a) e.push(b); + return e + }, + convertArrayToObject: function(a, e) { + var b = {}; + 1 == arguments.length && (e = !0); + for (var c = 0, g = a.length; c < g; ++c) b[a[c]] = e; + return b + }, + fixDomain: function() { + for (var a;;) try { + a = window.parent.document.domain; + break + } catch (e) { + a = a ? a.replace(/.+?(?:\.|$)/, "") : document.domain; + if (!a) break; + document.domain = + a + } + return !!a + }, + eventsBuffer: function(a, e, b) { + function c() { + d = (new Date).getTime(); + g = !1; + b ? e.call(b) : e() + } + var g, d = 0; + return { + input: function() { + if (!g) { + var e = (new Date).getTime() - d; + e < a ? g = setTimeout(c, a - e) : c() + } + }, + reset: function() { + g && clearTimeout(g); + g = d = 0 + } + } + }, + enableHtml5Elements: function(a, e) { + for (var b = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "), c = b.length, g; c--;) g = a.createElement(b[c]), + e && a.appendChild(g) + }, + checkIfAnyArrayItemMatches: function(a, e) { + for (var b = 0, c = a.length; b < c; ++b) + if (a[b].match(e)) return !0; + return !1 + }, + checkIfAnyObjectPropertyMatches: function(a, e) { + for (var b in a) + if (b.match(e)) return !0; + return !1 + }, + keystrokeToString: function(a, e) { + var b = this.keystrokeToArray(a, e); + b.display = b.display.join("+"); + b.aria = b.aria.join("+"); + return b + }, + keystrokeToArray: function(a, e) { + var b = e & 16711680, + c = e & 65535, + g = CKEDITOR.env.mac, + d = [], + n = []; + b & CKEDITOR.CTRL && (d.push(g ? "⌘" : a[17]), n.push(g ? a[224] : a[17])); + b & CKEDITOR.ALT && (d.push(g ? "⌥" : a[18]), n.push(a[18])); + b & CKEDITOR.SHIFT && (d.push(g ? "⇧" : a[16]), n.push(a[16])); + c && (a[c] ? (d.push(a[c]), n.push(a[c])) : (d.push(String.fromCharCode(c)), n.push(String.fromCharCode(c)))); + return { + display: d, + aria: n + } + }, + transparentImageData: "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d", + getCookie: function(a) { + a = a.toLowerCase(); + for (var e = document.cookie.split(";"), b, c, g = 0; g < e.length; g++) + if (b = e[g].split("\x3d"), c = decodeURIComponent(CKEDITOR.tools.trim(b[0]).toLowerCase()), + c === a) return decodeURIComponent(1 < b.length ? b[1] : ""); + return null + }, + setCookie: function(a, e) { + document.cookie = encodeURIComponent(a) + "\x3d" + encodeURIComponent(e) + ";path\x3d/" + }, + getCsrfToken: function() { + var a = CKEDITOR.tools.getCookie("ckCsrfToken"); + if (!a || 40 != a.length) { + var a = [], + e = ""; + if (window.crypto && window.crypto.getRandomValues) a = new Uint8Array(40), window.crypto.getRandomValues(a); + else + for (var b = 0; 40 > b; b++) a.push(Math.floor(256 * Math.random())); + for (b = 0; b < a.length; b++) var c = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[b] % + 36), + e = e + (.5 < Math.random() ? c.toUpperCase() : c); + a = e; + CKEDITOR.tools.setCookie("ckCsrfToken", a) + } + return a + }, + escapeCss: function(a) { + return a ? window.CSS && CSS.escape ? CSS.escape(a) : isNaN(parseInt(a.charAt(0), 10)) ? a : "\\3" + a.charAt(0) + " " + a.substring(1, a.length) : "" + }, + getMouseButton: function(a) { + var b = (a = a.data) && a.$; + return a && b ? CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? 4 === b.button ? CKEDITOR.MOUSE_BUTTON_MIDDLE : 1 === b.button ? CKEDITOR.MOUSE_BUTTON_LEFT : CKEDITOR.MOUSE_BUTTON_RIGHT : b.button : !1 + }, + convertHexStringToBytes: function(a) { + var b = [], + c = a.length / 2, + g; + for (g = 0; g < c; g++) b.push(parseInt(a.substr(2 * g, 2), 16)); + return b + }, + convertBytesToBase64: function(a) { + var b = "", + c = a.length, + g; + for (g = 0; g < c; g += 3) { + var d = a.slice(g, g + 3), + n = d.length, + f = [], + m; + if (3 > n) + for (m = n; 3 > m; m++) d[m] = 0; + f[0] = (d[0] & 252) >> 2; + f[1] = (d[0] & 3) << 4 | d[1] >> 4; + f[2] = (d[1] & 15) << 2 | (d[2] & 192) >> 6; + f[3] = d[2] & 63; + for (m = 0; 4 > m; m++) b = m <= n ? b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f[m]) : b + "\x3d" + } + return b + }, + style: { + parse: { + _colors: { + aliceblue: "#F0F8FF", + antiquewhite: "#FAEBD7", + aqua: "#00FFFF", + aquamarine: "#7FFFD4", + azure: "#F0FFFF", + beige: "#F5F5DC", + bisque: "#FFE4C4", + black: "#000000", + blanchedalmond: "#FFEBCD", + blue: "#0000FF", + blueviolet: "#8A2BE2", + brown: "#A52A2A", + burlywood: "#DEB887", + cadetblue: "#5F9EA0", + chartreuse: "#7FFF00", + chocolate: "#D2691E", + coral: "#FF7F50", + cornflowerblue: "#6495ED", + cornsilk: "#FFF8DC", + crimson: "#DC143C", + cyan: "#00FFFF", + darkblue: "#00008B", + darkcyan: "#008B8B", + darkgoldenrod: "#B8860B", + darkgray: "#A9A9A9", + darkgreen: "#006400", + darkgrey: "#A9A9A9", + darkkhaki: "#BDB76B", + darkmagenta: "#8B008B", + darkolivegreen: "#556B2F", + darkorange: "#FF8C00", + darkorchid: "#9932CC", + darkred: "#8B0000", + darksalmon: "#E9967A", + darkseagreen: "#8FBC8F", + darkslateblue: "#483D8B", + darkslategray: "#2F4F4F", + darkslategrey: "#2F4F4F", + darkturquoise: "#00CED1", + darkviolet: "#9400D3", + deeppink: "#FF1493", + deepskyblue: "#00BFFF", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1E90FF", + firebrick: "#B22222", + floralwhite: "#FFFAF0", + forestgreen: "#228B22", + fuchsia: "#FF00FF", + gainsboro: "#DCDCDC", + ghostwhite: "#F8F8FF", + gold: "#FFD700", + goldenrod: "#DAA520", + gray: "#808080", + green: "#008000", + greenyellow: "#ADFF2F", + grey: "#808080", + honeydew: "#F0FFF0", + hotpink: "#FF69B4", + indianred: "#CD5C5C", + indigo: "#4B0082", + ivory: "#FFFFF0", + khaki: "#F0E68C", + lavender: "#E6E6FA", + lavenderblush: "#FFF0F5", + lawngreen: "#7CFC00", + lemonchiffon: "#FFFACD", + lightblue: "#ADD8E6", + lightcoral: "#F08080", + lightcyan: "#E0FFFF", + lightgoldenrodyellow: "#FAFAD2", + lightgray: "#D3D3D3", + lightgreen: "#90EE90", + lightgrey: "#D3D3D3", + lightpink: "#FFB6C1", + lightsalmon: "#FFA07A", + lightseagreen: "#20B2AA", + lightskyblue: "#87CEFA", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#B0C4DE", + lightyellow: "#FFFFE0", + lime: "#00FF00", + limegreen: "#32CD32", + linen: "#FAF0E6", + magenta: "#FF00FF", + maroon: "#800000", + mediumaquamarine: "#66CDAA", + mediumblue: "#0000CD", + mediumorchid: "#BA55D3", + mediumpurple: "#9370DB", + mediumseagreen: "#3CB371", + mediumslateblue: "#7B68EE", + mediumspringgreen: "#00FA9A", + mediumturquoise: "#48D1CC", + mediumvioletred: "#C71585", + midnightblue: "#191970", + mintcream: "#F5FFFA", + mistyrose: "#FFE4E1", + moccasin: "#FFE4B5", + navajowhite: "#FFDEAD", + navy: "#000080", + oldlace: "#FDF5E6", + olive: "#808000", + olivedrab: "#6B8E23", + orange: "#FFA500", + orangered: "#FF4500", + orchid: "#DA70D6", + palegoldenrod: "#EEE8AA", + palegreen: "#98FB98", + paleturquoise: "#AFEEEE", + palevioletred: "#DB7093", + papayawhip: "#FFEFD5", + peachpuff: "#FFDAB9", + peru: "#CD853F", + pink: "#FFC0CB", + plum: "#DDA0DD", + powderblue: "#B0E0E6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#FF0000", + rosybrown: "#BC8F8F", + royalblue: "#4169E1", + saddlebrown: "#8B4513", + salmon: "#FA8072", + sandybrown: "#F4A460", + seagreen: "#2E8B57", + seashell: "#FFF5EE", + sienna: "#A0522D", + silver: "#C0C0C0", + skyblue: "#87CEEB", + slateblue: "#6A5ACD", + slategray: "#708090", + slategrey: "#708090", + snow: "#FFFAFA", + springgreen: "#00FF7F", + steelblue: "#4682B4", + tan: "#D2B48C", + teal: "#008080", + thistle: "#D8BFD8", + tomato: "#FF6347", + turquoise: "#40E0D0", + violet: "#EE82EE", + wheat: "#F5DEB3", + white: "#FFFFFF", + whitesmoke: "#F5F5F5", + yellow: "#FFFF00", + yellowgreen: "#9ACD32" + }, + _borderStyle: "none hidden dotted dashed solid double groove ridge inset outset".split(" "), + _widthRegExp: /^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/, + _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi, + _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi, + background: function(a) { + var b = {}, + c = this._findColor(a); + c.length && (b.color = c[0], CKEDITOR.tools.array.forEach(c, function(b) { + a = a.replace(b, "") + })); + if (a = CKEDITOR.tools.trim(a)) b.unprocessed = a; + return b + }, + margin: function(a) { + function b(a) { + c.top = g[a[0]]; + c.right = g[a[1]]; + c.bottom = g[a[2]]; + c.left = g[a[3]] + } + var c = {}, + g = a.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g) || ["0px"]; + switch (g.length) { + case 1: + b([0, 0, 0, 0]); + break; + case 2: + b([0, 1, 0, 1]); + break; + case 3: + b([0, 1, 2, 1]); + break; + case 4: + b([0, 1, 2, 3]) + } + return c + }, + border: function(a) { + var b = {}, + c = a.split(/\s+/g); + a = CKEDITOR.tools.style.parse._findColor(a); + a.length && (b.color = a[0]); + CKEDITOR.tools.array.forEach(c, function(a) { + b.style || -1 === CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle, a) ? !b.width && CKEDITOR.tools.style.parse._widthRegExp.test(a) && (b.width = a) : b.style = a + }); + return b + }, + _findColor: function(a) { + var b = [], + c = CKEDITOR.tools.array, + b = b.concat(a.match(this._rgbaRegExp) || []), + b = b.concat(a.match(this._hslaRegExp) || []); + return b = b.concat(c.filter(a.split(/\s+/), function(a) { + return a.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi) ? !0 : a.toLowerCase() in CKEDITOR.tools.style.parse._colors + })) + } + } + }, + array: { + filter: function(a, b, c) { + var g = []; + this.forEach(a, function(d, n) { + b.call(c, d, n, a) && g.push(d) + }); + return g + }, + forEach: function(a, b, c) { + var g = a.length, + d; + for (d = 0; d < g; d++) b.call(c, a[d], d, a) + }, + map: function(a, b, c) { + for (var g = [], d = 0; d < a.length; d++) g.push(b.call(c, + a[d], d, a)); + return g + }, + reduce: function(a, b, c, g) { + for (var d = 0; d < a.length; d++) c = b.call(g, c, a[d], d, a); + return c + }, + every: function(a, b, c) { + if (!a.length) return !0; + b = this.filter(a, b, c); + return a.length === b.length + } + }, + object: { + findKey: function(a, b) { + if ("object" !== typeof a) return null; + for (var c in a) + if (a[c] === b) return c; + return null + }, + merge: function(a, b) { + var c = CKEDITOR.tools, + g = c.clone(a), + d = c.clone(b); + c.array.forEach(c.objectKeys(d), function(a) { + g[a] = "object" === typeof d[a] && "object" === typeof g[a] ? c.object.merge(g[a], d[a]) : + d[a] + }); + return g + } + }, + getAbsoluteRectPosition: function(a, b) { + function c(a) { + if (a) { + var b = a.getClientRect(); + g.top += b.top; + g.left += b.left; + "x" in g && "y" in g && (g.x += b.x, g.y += b.y); + c(a.getWindow().getFrame()) + } + } + var g = CKEDITOR.tools.copy(b); + c(a.getFrame()); + var d = CKEDITOR.document.getWindow().getScrollPosition(); + g.top += d.y; + g.left += d.x; + "x" in g && "y" in g && (g.y += d.y, g.x += d.x); + g.right = g.left + g.width; + g.bottom = g.top + g.height; + return g + } + }; + CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf; + CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray; + CKEDITOR.MOUSE_BUTTON_LEFT = 0; + CKEDITOR.MOUSE_BUTTON_MIDDLE = 1; + CKEDITOR.MOUSE_BUTTON_RIGHT = 2 + })(); + CKEDITOR.dtd = function() { + var a = CKEDITOR.tools.extend, + d = function(a, b) { + for (var c = CKEDITOR.tools.clone(a), g = 1; g < arguments.length; g++) { + b = arguments[g]; + for (var d in b) delete c[d] + } + return c + }, + b = {}, + c = {}, + f = { + address: 1, + article: 1, + aside: 1, + blockquote: 1, + details: 1, + div: 1, + dl: 1, + fieldset: 1, + figure: 1, + footer: 1, + form: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1, + header: 1, + hgroup: 1, + hr: 1, + main: 1, + menu: 1, + nav: 1, + ol: 1, + p: 1, + pre: 1, + section: 1, + table: 1, + ul: 1 + }, + h = { + command: 1, + link: 1, + meta: 1, + noscript: 1, + script: 1, + style: 1 + }, + k = {}, + g = { + "#": 1 + }, + n = { + center: 1, + dir: 1, + noframes: 1 + }; + a(b, { + a: 1, + abbr: 1, + area: 1, + audio: 1, + b: 1, + bdi: 1, + bdo: 1, + br: 1, + button: 1, + canvas: 1, + cite: 1, + code: 1, + command: 1, + datalist: 1, + del: 1, + dfn: 1, + em: 1, + embed: 1, + i: 1, + iframe: 1, + img: 1, + input: 1, + ins: 1, + kbd: 1, + keygen: 1, + label: 1, + map: 1, + mark: 1, + meter: 1, + noscript: 1, + object: 1, + output: 1, + progress: 1, + q: 1, + ruby: 1, + s: 1, + samp: 1, + script: 1, + select: 1, + small: 1, + span: 1, + strong: 1, + sub: 1, + sup: 1, + textarea: 1, + time: 1, + u: 1, + "var": 1, + video: 1, + wbr: 1 + }, g, { + acronym: 1, + applet: 1, + basefont: 1, + big: 1, + font: 1, + isindex: 1, + strike: 1, + style: 1, + tt: 1 + }); + a(c, f, b, n); + d = { + a: d(b, { + a: 1, + button: 1 + }), + abbr: b, + address: c, + area: k, + article: c, + aside: c, + audio: a({ + source: 1, + track: 1 + }, c), + b: b, + base: k, + bdi: b, + bdo: b, + blockquote: c, + body: c, + br: k, + button: d(b, { + a: 1, + button: 1 + }), + canvas: b, + caption: c, + cite: b, + code: b, + col: k, + colgroup: { + col: 1 + }, + command: k, + datalist: a({ + option: 1 + }, b), + dd: c, + del: b, + details: a({ + summary: 1 + }, c), + dfn: b, + div: c, + dl: { + dt: 1, + dd: 1 + }, + dt: c, + em: b, + embed: k, + fieldset: a({ + legend: 1 + }, c), + figcaption: c, + figure: a({ + figcaption: 1 + }, c), + footer: c, + form: c, + h1: b, + h2: b, + h3: b, + h4: b, + h5: b, + h6: b, + head: a({ + title: 1, + base: 1 + }, h), + header: c, + hgroup: { + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1 + }, + hr: k, + html: a({ + head: 1, + body: 1 + }, c, h), + i: b, + iframe: g, + img: k, + input: k, + ins: b, + kbd: b, + keygen: k, + label: b, + legend: b, + li: c, + link: k, + main: c, + map: c, + mark: b, + menu: a({ + li: 1 + }, c), + meta: k, + meter: d(b, { + meter: 1 + }), + nav: c, + noscript: a({ + link: 1, + meta: 1, + style: 1 + }, b), + object: a({ + param: 1 + }, b), + ol: { + li: 1 + }, + optgroup: { + option: 1 + }, + option: g, + output: b, + p: b, + param: k, + pre: b, + progress: d(b, { + progress: 1 + }), + q: b, + rp: b, + rt: b, + ruby: a({ + rp: 1, + rt: 1 + }, b), + s: b, + samp: b, + script: g, + section: c, + select: { + optgroup: 1, + option: 1 + }, + small: b, + source: k, + span: b, + strong: b, + style: g, + sub: b, + summary: a({ + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1 + }, b), + sup: b, + table: { + caption: 1, + colgroup: 1, + thead: 1, + tfoot: 1, + tbody: 1, + tr: 1 + }, + tbody: { + tr: 1 + }, + td: c, + textarea: g, + tfoot: { + tr: 1 + }, + th: c, + thead: { + tr: 1 + }, + time: d(b, { + time: 1 + }), + title: g, + tr: { + th: 1, + td: 1 + }, + track: k, + u: b, + ul: { + li: 1 + }, + "var": b, + video: a({ + source: 1, + track: 1 + }, c), + wbr: k, + acronym: b, + applet: a({ + param: 1 + }, c), + basefont: k, + big: b, + center: c, + dialog: k, + dir: { + li: 1 + }, + font: b, + isindex: k, + noframes: c, + strike: b, + tt: b + }; + a(d, { + $block: a({ + audio: 1, + dd: 1, + dt: 1, + figcaption: 1, + li: 1, + video: 1 + }, f, n), + $blockLimit: { + article: 1, + aside: 1, + audio: 1, + body: 1, + caption: 1, + details: 1, + dir: 1, + div: 1, + dl: 1, + fieldset: 1, + figcaption: 1, + figure: 1, + footer: 1, + form: 1, + header: 1, + hgroup: 1, + main: 1, + menu: 1, + nav: 1, + ol: 1, + section: 1, + table: 1, + td: 1, + th: 1, + tr: 1, + ul: 1, + video: 1 + }, + $cdata: { + script: 1, + style: 1 + }, + $editable: { + address: 1, + article: 1, + aside: 1, + blockquote: 1, + body: 1, + details: 1, + div: 1, + fieldset: 1, + figcaption: 1, + footer: 1, + form: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1, + header: 1, + hgroup: 1, + main: 1, + nav: 1, + p: 1, + pre: 1, + section: 1 + }, + $empty: { + 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 + }, + $inline: b, + $list: { + dl: 1, + ol: 1, + ul: 1 + }, + $listItem: { + dd: 1, + dt: 1, + li: 1 + }, + $nonBodyContent: a({ + body: 1, + head: 1, + html: 1 + }, d.head), + $nonEditable: { + applet: 1, + audio: 1, + button: 1, + embed: 1, + iframe: 1, + map: 1, + object: 1, + option: 1, + param: 1, + script: 1, + textarea: 1, + video: 1 + }, + $object: { + applet: 1, + audio: 1, + button: 1, + hr: 1, + iframe: 1, + img: 1, + input: 1, + object: 1, + select: 1, + table: 1, + textarea: 1, + video: 1 + }, + $removeEmpty: { + abbr: 1, + acronym: 1, + b: 1, + bdi: 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, + mark: 1, + meter: 1, + output: 1, + q: 1, + ruby: 1, + s: 1, + samp: 1, + small: 1, + span: 1, + strike: 1, + strong: 1, + sub: 1, + sup: 1, + time: 1, + tt: 1, + u: 1, + "var": 1 + }, + $tabIndex: { + a: 1, + area: 1, + button: 1, + input: 1, + object: 1, + select: 1, + textarea: 1 + }, + $tableContent: { + caption: 1, + col: 1, + colgroup: 1, + tbody: 1, + td: 1, + tfoot: 1, + th: 1, + thead: 1, + tr: 1 + }, + $transparent: { + a: 1, + audio: 1, + canvas: 1, + del: 1, + ins: 1, + map: 1, + noscript: 1, + object: 1, + video: 1 + }, + $intermediate: { + caption: 1, + colgroup: 1, + dd: 1, + dt: 1, + figcaption: 1, + legend: 1, + li: 1, + optgroup: 1, + option: 1, + rp: 1, + rt: 1, + summary: 1, + tbody: 1, + td: 1, + tfoot: 1, + th: 1, + thead: 1, + tr: 1 + } + }); + return d + }(); + CKEDITOR.dom.event = function(a) { + this.$ = a + }; + CKEDITOR.dom.event.prototype = { + getKey: function() { + return this.$.keyCode || this.$.which + }, + getKeystroke: function() { + var a = this.getKey(); + if (this.$.ctrlKey || this.$.metaKey) a += CKEDITOR.CTRL; + this.$.shiftKey && (a += CKEDITOR.SHIFT); + this.$.altKey && (a += CKEDITOR.ALT); + return a + }, + preventDefault: function(a) { + var d = this.$; + d.preventDefault ? d.preventDefault() : d.returnValue = !1; + a && this.stopPropagation() + }, + stopPropagation: function() { + var a = this.$; + a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0 + }, + getTarget: function() { + var a = + this.$.target || this.$.srcElement; + return a ? new CKEDITOR.dom.node(a) : null + }, + getPhase: function() { + return this.$.eventPhase || 2 + }, + getPageOffset: function() { + var a = this.getTarget().getDocument().$; + return { + x: this.$.pageX || this.$.clientX + (a.documentElement.scrollLeft || a.body.scrollLeft), + y: this.$.pageY || this.$.clientY + (a.documentElement.scrollTop || a.body.scrollTop) + } + } + }; + CKEDITOR.CTRL = 1114112; + CKEDITOR.SHIFT = 2228224; + CKEDITOR.ALT = 4456448; + CKEDITOR.EVENT_PHASE_CAPTURING = 1; + CKEDITOR.EVENT_PHASE_AT_TARGET = 2; + CKEDITOR.EVENT_PHASE_BUBBLING = 3; + CKEDITOR.dom.domObject = function(a) { + a && (this.$ = a) + }; + CKEDITOR.dom.domObject.prototype = function() { + var a = function(a, b) { + return function(c) { + "undefined" != typeof CKEDITOR && a.fire(b, new CKEDITOR.dom.event(c)) + } + }; + return { + getPrivate: function() { + var a; + (a = this.getCustomData("_")) || this.setCustomData("_", a = {}); + return a + }, + on: function(d) { + var b = this.getCustomData("_cke_nativeListeners"); + b || (b = {}, this.setCustomData("_cke_nativeListeners", b)); + b[d] || (b = b[d] = a(this, d), this.$.addEventListener ? this.$.addEventListener(d, b, !!CKEDITOR.event.useCapture) : this.$.attachEvent && this.$.attachEvent("on" + + d, b)); + return CKEDITOR.event.prototype.on.apply(this, arguments) + }, + removeListener: function(a) { + CKEDITOR.event.prototype.removeListener.apply(this, arguments); + if (!this.hasListeners(a)) { + var b = this.getCustomData("_cke_nativeListeners"), + c = b && b[a]; + c && (this.$.removeEventListener ? this.$.removeEventListener(a, c, !1) : this.$.detachEvent && this.$.detachEvent("on" + a, c), delete b[a]) + } + }, + removeAllListeners: function() { + var a = this.getCustomData("_cke_nativeListeners"), + b; + for (b in a) { + var c = a[b]; + this.$.detachEvent ? this.$.detachEvent("on" + + b, c) : this.$.removeEventListener && this.$.removeEventListener(b, c, !1); + delete a[b] + } + CKEDITOR.event.prototype.removeAllListeners.call(this) + } + } + }(); + (function(a) { + var d = {}; + CKEDITOR.on("reset", function() { + d = {} + }); + a.equals = function(a) { + try { + return a && a.$ === this.$ + } catch (c) { + return !1 + } + }; + a.setCustomData = function(a, c) { + var f = this.getUniqueId(); + (d[f] || (d[f] = {}))[a] = c; + return this + }; + a.getCustomData = function(a) { + var c = this.$["data-cke-expando"]; + return (c = c && d[c]) && a in c ? c[a] : null + }; + a.removeCustomData = function(a) { + var c = this.$["data-cke-expando"], + c = c && d[c], + f, h; + c && (f = c[a], h = a in c, delete c[a]); + return h ? f : null + }; + a.clearCustomData = function() { + this.removeAllListeners(); + var a = + this.$["data-cke-expando"]; + a && delete d[a] + }; + a.getUniqueId = function() { + return this.$["data-cke-expando"] || (this.$["data-cke-expando"] = CKEDITOR.tools.getNextNumber()) + }; + CKEDITOR.event.implementOn(a) + })(CKEDITOR.dom.domObject.prototype); + CKEDITOR.dom.node = function(a) { + return a ? new CKEDITOR.dom[a.nodeType == CKEDITOR.NODE_DOCUMENT ? "document" : a.nodeType == CKEDITOR.NODE_ELEMENT ? "element" : a.nodeType == CKEDITOR.NODE_TEXT ? "text" : a.nodeType == CKEDITOR.NODE_COMMENT ? "comment" : a.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT ? "documentFragment" : "domObject"](a) : this + }; + CKEDITOR.dom.node.prototype = new CKEDITOR.dom.domObject; + CKEDITOR.NODE_ELEMENT = 1; + CKEDITOR.NODE_DOCUMENT = 9; + CKEDITOR.NODE_TEXT = 3; + CKEDITOR.NODE_COMMENT = 8; + CKEDITOR.NODE_DOCUMENT_FRAGMENT = 11; + CKEDITOR.POSITION_IDENTICAL = 0; + CKEDITOR.POSITION_DISCONNECTED = 1; + CKEDITOR.POSITION_FOLLOWING = 2; + CKEDITOR.POSITION_PRECEDING = 4; + CKEDITOR.POSITION_IS_CONTAINED = 8; + CKEDITOR.POSITION_CONTAINS = 16; + CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype, { + appendTo: function(a, d) { + a.append(this, d); + return a + }, + clone: function(a, d) { + function b(c) { + c["data-cke-expando"] && (c["data-cke-expando"] = !1); + if (c.nodeType == CKEDITOR.NODE_ELEMENT || c.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) + if (d || c.nodeType != CKEDITOR.NODE_ELEMENT || c.removeAttribute("id", !1), a) { + c = c.childNodes; + for (var f = 0; f < c.length; f++) b(c[f]) + } + } + + function c(b) { + if (b.type == CKEDITOR.NODE_ELEMENT || b.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) { + if (b.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { + var d = + b.getName(); + ":" == d[0] && b.renameNode(d.substring(1)) + } + if (a) + for (d = 0; d < b.getChildCount(); d++) c(b.getChild(d)) + } + } + var f = this.$.cloneNode(a); + b(f); + f = new CKEDITOR.dom.node(f); + CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (this.type == CKEDITOR.NODE_ELEMENT || this.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) && c(f); + return f + }, + hasPrevious: function() { + return !!this.$.previousSibling + }, + hasNext: function() { + return !!this.$.nextSibling + }, + insertAfter: function(a) { + a.$.parentNode.insertBefore(this.$, a.$.nextSibling); + return a + }, + insertBefore: function(a) { + a.$.parentNode.insertBefore(this.$, + a.$); + return a + }, + insertBeforeMe: function(a) { + this.$.parentNode.insertBefore(a.$, this.$); + return a + }, + getAddress: function(a) { + for (var d = [], b = this.getDocument().$.documentElement, c = this.$; c && c != b;) { + var f = c.parentNode; + f && d.unshift(this.getIndex.call({ + $: c + }, a)); + c = f + } + return d + }, + getDocument: function() { + return new CKEDITOR.dom.document(this.$.ownerDocument || this.$.parentNode.ownerDocument) + }, + getIndex: function(a) { + function d(a, c) { + var n = c ? a.nextSibling : a.previousSibling; + return n && n.nodeType == CKEDITOR.NODE_TEXT ? b(n) ? d(n, + c) : n : null + } + + function b(a) { + return !a.nodeValue || a.nodeValue == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE + } + var c = this.$, + f = -1, + h; + if (!this.$.parentNode || a && c.nodeType == CKEDITOR.NODE_TEXT && b(c) && !d(c) && !d(c, !0)) return -1; + do a && c != this.$ && c.nodeType == CKEDITOR.NODE_TEXT && (h || b(c)) || (f++, h = c.nodeType == CKEDITOR.NODE_TEXT); while (c = c.previousSibling); + return f + }, + getNextSourceNode: function(a, d, b) { + if (b && !b.call) { + var c = b; + b = function(a) { + return !a.equals(c) + } + } + a = !a && this.getFirst && this.getFirst(); + var f; + if (!a) { + if (this.type == + CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null; + a = this.getNext() + } + for (; !a && (f = (f || this).getParent());) { + if (b && !1 === b(f, !0)) return null; + a = f.getNext() + } + return !a || b && !1 === b(a) ? null : d && d != a.type ? a.getNextSourceNode(!1, d, b) : a + }, + getPreviousSourceNode: function(a, d, b) { + if (b && !b.call) { + var c = b; + b = function(a) { + return !a.equals(c) + } + } + a = !a && this.getLast && this.getLast(); + var f; + if (!a) { + if (this.type == CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null; + a = this.getPrevious() + } + for (; !a && (f = (f || this).getParent());) { + if (b && !1 === + b(f, !0)) return null; + a = f.getPrevious() + } + return !a || b && !1 === b(a) ? null : d && a.type != d ? a.getPreviousSourceNode(!1, d, b) : a + }, + getPrevious: function(a) { + var d = this.$, + b; + do b = (d = d.previousSibling) && 10 != d.nodeType && new CKEDITOR.dom.node(d); while (b && a && !a(b)); + return b + }, + getNext: function(a) { + var d = this.$, + b; + do b = (d = d.nextSibling) && new CKEDITOR.dom.node(d); while (b && a && !a(b)); + return b + }, + getParent: function(a) { + var d = this.$.parentNode; + return d && (d.nodeType == CKEDITOR.NODE_ELEMENT || a && d.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) ? + new CKEDITOR.dom.node(d) : null + }, + getParents: function(a) { + var d = this, + b = []; + do b[a ? "push" : "unshift"](d); while (d = d.getParent()); + return b + }, + getCommonAncestor: function(a) { + if (a.equals(this)) return this; + if (a.contains && a.contains(this)) return a; + var d = this.contains ? this : this.getParent(); + do + if (d.contains(a)) return d; while (d = d.getParent()); + return null + }, + getPosition: function(a) { + var d = this.$, + b = a.$; + if (d.compareDocumentPosition) return d.compareDocumentPosition(b); + if (d == b) return CKEDITOR.POSITION_IDENTICAL; + if (this.type == + CKEDITOR.NODE_ELEMENT && a.type == CKEDITOR.NODE_ELEMENT) { + if (d.contains) { + if (d.contains(b)) return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING; + if (b.contains(d)) return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING + } + if ("sourceIndex" in d) return 0 > d.sourceIndex || 0 > b.sourceIndex ? CKEDITOR.POSITION_DISCONNECTED : d.sourceIndex < b.sourceIndex ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING + } + d = this.getAddress(); + a = a.getAddress(); + for (var b = Math.min(d.length, a.length), c = 0; c < b; c++) + if (d[c] != + a[c]) return d[c] < a[c] ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING; + return d.length < a.length ? CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING + }, + getAscendant: function(a, d) { + var b = this.$, + c, f; + d || (b = b.parentNode); + "function" == typeof a ? (f = !0, c = a) : (f = !1, c = function(b) { + b = "string" == typeof b.nodeName ? b.nodeName.toLowerCase() : ""; + return "string" == typeof a ? b == a : b in a + }); + for (; b;) { + if (c(f ? new CKEDITOR.dom.node(b) : b)) return new CKEDITOR.dom.node(b); + try { + b = b.parentNode + } catch (h) { + b = null + } + } + return null + }, + hasAscendant: function(a, d) { + var b = this.$; + d || (b = b.parentNode); + for (; b;) { + if (b.nodeName && b.nodeName.toLowerCase() == a) return !0; + b = b.parentNode + } + return !1 + }, + move: function(a, d) { + a.append(this.remove(), d) + }, + remove: function(a) { + var d = this.$, + b = d.parentNode; + if (b) { + if (a) + for (; a = d.firstChild;) b.insertBefore(d.removeChild(a), d); + b.removeChild(d) + } + return this + }, + replace: function(a) { + this.insertBefore(a); + a.remove() + }, + trim: function() { + this.ltrim(); + this.rtrim() + }, + ltrim: function() { + for (var a; this.getFirst && + (a = this.getFirst());) { + if (a.type == CKEDITOR.NODE_TEXT) { + var d = CKEDITOR.tools.ltrim(a.getText()), + b = a.getLength(); + if (d) d.length < b && (a.split(b - d.length), this.$.removeChild(this.$.firstChild)); + else { + a.remove(); + continue + } + } + break + } + }, + rtrim: function() { + for (var a; this.getLast && (a = this.getLast());) { + if (a.type == CKEDITOR.NODE_TEXT) { + var d = CKEDITOR.tools.rtrim(a.getText()), + b = a.getLength(); + if (d) d.length < b && (a.split(d.length), this.$.lastChild.parentNode.removeChild(this.$.lastChild)); + else { + a.remove(); + continue + } + } + break + } + CKEDITOR.env.needsBrFiller && + (a = this.$.lastChild) && 1 == a.type && "br" == a.nodeName.toLowerCase() && a.parentNode.removeChild(a) + }, + isReadOnly: function(a) { + var d = this; + this.type != CKEDITOR.NODE_ELEMENT && (d = this.getParent()); + CKEDITOR.env.edge && d && d.is("textarea", "input") && (a = !0); + if (!a && d && "undefined" != typeof d.$.isContentEditable) return !(d.$.isContentEditable || d.data("cke-editable")); + for (; d;) { + if (d.data("cke-editable")) return !1; + if (d.hasAttribute("contenteditable")) return "false" == d.getAttribute("contenteditable"); + d = d.getParent() + } + return !0 + } + }); + CKEDITOR.dom.window = function(a) { + CKEDITOR.dom.domObject.call(this, a) + }; + CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject; + CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype, { + focus: function() { + this.$.focus() + }, + getViewPaneSize: function() { + var a = this.$.document, + d = "CSS1Compat" == a.compatMode; + return { + width: (d ? a.documentElement.clientWidth : a.body.clientWidth) || 0, + height: (d ? a.documentElement.clientHeight : a.body.clientHeight) || 0 + } + }, + getScrollPosition: function() { + var a = this.$; + 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 + } + }, + getFrame: function() { + var a = this.$.frameElement; + return a ? new CKEDITOR.dom.element.get(a) : null + } + }); + CKEDITOR.dom.document = function(a) { + CKEDITOR.dom.domObject.call(this, a) + }; + CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject; + CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype, { + type: CKEDITOR.NODE_DOCUMENT, + appendStyleSheet: function(a) { + if (this.$.createStyleSheet) this.$.createStyleSheet(a); + else { + var d = new CKEDITOR.dom.element("link"); + d.setAttributes({ + rel: "stylesheet", + type: "text/css", + href: a + }); + this.getHead().append(d) + } + }, + appendStyleText: function(a) { + if (this.$.createStyleSheet) { + var d = this.$.createStyleSheet(""); + d.cssText = a + } else { + var b = new CKEDITOR.dom.element("style", this); + b.append(new CKEDITOR.dom.text(a, this)); + this.getHead().append(b) + } + return d || + b.$.sheet + }, + createElement: function(a, d) { + var b = new CKEDITOR.dom.element(a, this); + d && (d.attributes && b.setAttributes(d.attributes), d.styles && b.setStyles(d.styles)); + return b + }, + createText: function(a) { + return new CKEDITOR.dom.text(a, this) + }, + focus: function() { + this.getWindow().focus() + }, + getActive: function() { + var a; + try { + a = this.$.activeElement + } catch (d) { + return null + } + return new CKEDITOR.dom.element(a) + }, + getById: function(a) { + return (a = this.$.getElementById(a)) ? new CKEDITOR.dom.element(a) : null + }, + getByAddress: function(a, d) { + for (var b = + this.$.documentElement, c = 0; b && c < a.length; c++) { + var f = a[c]; + if (d) + for (var h = -1, k = 0; k < b.childNodes.length; k++) { + var g = b.childNodes[k]; + if (!0 !== d || 3 != g.nodeType || !g.previousSibling || 3 != g.previousSibling.nodeType) + if (h++, h == f) { + b = g; + break + } + } else b = b.childNodes[f] + } + return b ? new CKEDITOR.dom.node(b) : null + }, + getElementsByTag: function(a, d) { + CKEDITOR.env.ie && 8 >= document.documentMode || !d || (a = d + ":" + a); + return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a)) + }, + getHead: function() { + var a = this.$.getElementsByTagName("head")[0]; + return a = a ? new CKEDITOR.dom.element(a) : this.getDocumentElement().append(new CKEDITOR.dom.element("head"), !0) + }, + getBody: function() { + return new CKEDITOR.dom.element(this.$.body) + }, + getDocumentElement: function() { + return new CKEDITOR.dom.element(this.$.documentElement) + }, + getWindow: function() { + return new CKEDITOR.dom.window(this.$.parentWindow || this.$.defaultView) + }, + write: function(a) { + this.$.open("text/html", "replace"); + CKEDITOR.env.ie && (a = a.replace(/(?:^\s*]*?>)|^/i, '$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e(' + + CKEDITOR.tools.fixDomain + ")();\x3c/script\x3e")); + this.$.write(a); + this.$.close() + }, + find: function(a) { + return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a)) + }, + findOne: function(a) { + return (a = this.$.querySelector(a)) ? new CKEDITOR.dom.element(a) : null + }, + _getHtml5ShivFrag: function() { + var a = this.getCustomData("html5ShivFrag"); + a || (a = this.$.createDocumentFragment(), CKEDITOR.tools.enableHtml5Elements(a, !0), this.setCustomData("html5ShivFrag", a)); + return a + } + }); + CKEDITOR.dom.nodeList = function(a) { + this.$ = a + }; + CKEDITOR.dom.nodeList.prototype = { + count: function() { + return this.$.length + }, + getItem: function(a) { + return 0 > a || a >= this.$.length ? null : (a = this.$[a]) ? new CKEDITOR.dom.node(a) : null + }, + toArray: function() { + return CKEDITOR.tools.array.map(this.$, function(a) { + return new CKEDITOR.dom.node(a) + }) + } + }; + CKEDITOR.dom.element = function(a, d) { + "string" == typeof a && (a = (d ? d.$ : document).createElement(a)); + CKEDITOR.dom.domObject.call(this, a) + }; + CKEDITOR.dom.element.get = function(a) { + return (a = "string" == typeof a ? document.getElementById(a) || document.getElementsByName(a)[0] : a) && (a.$ ? a : new CKEDITOR.dom.element(a)) + }; + CKEDITOR.dom.element.prototype = new CKEDITOR.dom.node; + CKEDITOR.dom.element.createFromHtml = function(a, d) { + var b = new CKEDITOR.dom.element("div", d); + b.setHtml(a); + return b.getFirst().remove() + }; + CKEDITOR.dom.element.setMarker = function(a, d, b, c) { + var f = d.getCustomData("list_marker_id") || d.setCustomData("list_marker_id", CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"), + h = d.getCustomData("list_marker_names") || d.setCustomData("list_marker_names", {}).getCustomData("list_marker_names"); + a[f] = d; + h[b] = 1; + return d.setCustomData(b, c) + }; + CKEDITOR.dom.element.clearAllMarkers = function(a) { + for (var d in a) CKEDITOR.dom.element.clearMarkers(a, a[d], 1) + }; + CKEDITOR.dom.element.clearMarkers = function(a, d, b) { + var c = d.getCustomData("list_marker_names"), + f = d.getCustomData("list_marker_id"), + h; + for (h in c) d.removeCustomData(h); + d.removeCustomData("list_marker_names"); + b && (d.removeCustomData("list_marker_id"), delete a[f]) + }; + (function() { + function a(a, b) { + return -1 < (" " + a + " ").replace(h, " ").indexOf(" " + b + " ") + } + + function d(a) { + var b = !0; + a.$.id || (a.$.id = "cke_tmp_" + CKEDITOR.tools.getNextNumber(), b = !1); + return function() { + b || a.removeAttribute("id") + } + } + + function b(a, b) { + var c = CKEDITOR.tools.escapeCss(a.$.id); + return "#" + c + " " + b.split(/,\s*/).join(", #" + c + " ") + } + + function c(a) { + for (var b = 0, c = 0, e = k[a].length; c < e; c++) b += parseFloat(this.getComputedStyle(k[a][c]) || 0, 10) || 0; + return b + } + var f = document.createElement("_").classList, + f = "undefined" !== typeof f && + null !== String(f.add).match(/\[Native code\]/gi), + h = /[\n\t\r]/g; + CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype, { + type: CKEDITOR.NODE_ELEMENT, + addClass: f ? function(a) { + this.$.classList.add(a); + return this + } : function(b) { + var c = this.$.className; + c && (a(c, b) || (c += " " + b)); + this.$.className = c || b; + return this + }, + removeClass: f ? function(a) { + var b = this.$; + b.classList.remove(a); + b.className || b.removeAttribute("class"); + return this + } : function(b) { + var c = this.getAttribute("class"); + c && a(c, b) && ((c = c.replace(new RegExp("(?:^|\\s+)" + + b + "(?\x3d\\s|$)"), "").replace(/^\s+/, "")) ? this.setAttribute("class", c) : this.removeAttribute("class")); + return this + }, + hasClass: function(b) { + return a(this.$.className, b) + }, + append: function(a, b) { + "string" == typeof a && (a = this.getDocument().createElement(a)); + b ? this.$.insertBefore(a.$, this.$.firstChild) : this.$.appendChild(a.$); + return a + }, + appendHtml: function(a) { + if (this.$.childNodes.length) { + var b = new CKEDITOR.dom.element("div", this.getDocument()); + b.setHtml(a); + b.moveChildren(this) + } else this.setHtml(a) + }, + appendText: function(a) { + null != + this.$.text && CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? this.$.text += a : this.append(new CKEDITOR.dom.text(a)) + }, + appendBogus: function(a) { + if (a || CKEDITOR.env.needsBrFiller) { + for (a = this.getLast(); a && a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.rtrim(a.getText());) a = a.getPrevious(); + a && a.is && a.is("br") || (a = this.getDocument().createElement("br"), CKEDITOR.env.gecko && a.setAttribute("type", "_moz"), this.append(a)) + } + }, + breakParent: function(a, b) { + var c = new CKEDITOR.dom.range(this.getDocument()); + c.setStartAfter(this); + c.setEndAfter(a); + var e = c.extractContents(!1, b || !1), + d; + c.insertNode(this.remove()); + if (CKEDITOR.env.ie && !CKEDITOR.env.edge) { + for (c = new CKEDITOR.dom.element("div"); d = e.getFirst();) d.$.style.backgroundColor && (d.$.style.backgroundColor = d.$.style.backgroundColor), c.append(d); + c.insertAfter(this); + c.remove(!0) + } else e.insertAfterNode(this) + }, + contains: document.compareDocumentPosition ? function(a) { + return !!(this.$.compareDocumentPosition(a.$) & 16) + } : function(a) { + var b = this.$; + return a.type != CKEDITOR.NODE_ELEMENT ? b.contains(a.getParent().$) : + b != a.$ && b.contains(a.$) + }, + focus: function() { + function a() { + try { + this.$.focus() + } catch (b) {} + } + return function(b) { + b ? CKEDITOR.tools.setTimeout(a, 100, this) : a.call(this) + } + }(), + getHtml: function() { + var a = this.$.innerHTML; + return CKEDITOR.env.ie ? a.replace(/<\?[^>]*>/g, "") : a + }, + getOuterHtml: function() { + if (this.$.outerHTML) return this.$.outerHTML.replace(/<\?[^>]*>/, ""); + var a = this.$.ownerDocument.createElement("div"); + a.appendChild(this.$.cloneNode(!0)); + return a.innerHTML + }, + getClientRect: function(a) { + var b = CKEDITOR.tools.extend({}, + this.$.getBoundingClientRect()); + !b.width && (b.width = b.right - b.left); + !b.height && (b.height = b.bottom - b.top); + return a ? CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(), b) : b + }, + setHtml: CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? function(a) { + try { + var b = this.$; + if (this.getParent()) return b.innerHTML = a; + var c = this.getDocument()._getHtml5ShivFrag(); + c.appendChild(b); + b.innerHTML = a; + c.removeChild(b); + return a + } catch (e) { + this.$.innerHTML = ""; + b = new CKEDITOR.dom.element("body", this.getDocument()); + b.$.innerHTML = a; + for (b = b.getChildren(); b.count();) this.append(b.getItem(0)); + return a + } + } : function(a) { + return this.$.innerHTML = a + }, + setText: function() { + var a = document.createElement("p"); + a.innerHTML = "x"; + a = a.textContent; + return function(b) { + this.$[a ? "textContent" : "innerText"] = b + } + }(), + getAttribute: function() { + var a = function(a) { + return this.$.getAttribute(a, 2) + }; + return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function(a) { + switch (a) { + case "class": + a = "className"; + break; + case "http-equiv": + a = "httpEquiv"; + break; + case "name": + return this.$.name; + case "tabindex": + return a = this.$.getAttribute(a, + 2), 0 !== a && 0 === this.$.tabIndex && (a = null), a; + case "checked": + return a = this.$.attributes.getNamedItem(a), (a.specified ? a.nodeValue : this.$.checked) ? "checked" : null; + case "hspace": + case "value": + return this.$[a]; + case "style": + return this.$.style.cssText; + case "contenteditable": + case "contentEditable": + return this.$.attributes.getNamedItem("contentEditable").specified ? this.$.getAttribute("contentEditable") : null + } + return this.$.getAttribute(a, 2) + } : a + }(), + getAttributes: function(a) { + var b = {}, + c = this.$.attributes, + e; + a = CKEDITOR.tools.isArray(a) ? + a : []; + for (e = 0; e < c.length; e++) - 1 === CKEDITOR.tools.indexOf(a, c[e].name) && (b[c[e].name] = c[e].value); + return b + }, + getChildren: function() { + return new CKEDITOR.dom.nodeList(this.$.childNodes) + }, + getComputedStyle: document.defaultView && document.defaultView.getComputedStyle ? function(a) { + var b = this.getWindow().$.getComputedStyle(this.$, null); + return b ? b.getPropertyValue(a) : "" + } : function(a) { + return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)] + }, + getDtd: function() { + var a = CKEDITOR.dtd[this.getName()]; + this.getDtd = + function() { + return a + }; + return a + }, + getElementsByTag: CKEDITOR.dom.document.prototype.getElementsByTag, + getTabIndex: function() { + var a = this.$.tabIndex; + return 0 !== a || CKEDITOR.dtd.$tabIndex[this.getName()] || 0 === parseInt(this.getAttribute("tabindex"), 10) ? a : -1 + }, + getText: function() { + return this.$.textContent || this.$.innerText || "" + }, + getWindow: function() { + return this.getDocument().getWindow() + }, + getId: function() { + return this.$.id || null + }, + getNameAtt: function() { + return this.$.name || null + }, + getName: function() { + var a = this.$.nodeName.toLowerCase(); + if (CKEDITOR.env.ie && 8 >= document.documentMode) { + var b = this.$.scopeName; + "HTML" != b && (a = b.toLowerCase() + ":" + a) + } + this.getName = function() { + return a + }; + return this.getName() + }, + getValue: function() { + return this.$.value + }, + getFirst: function(a) { + var b = this.$.firstChild; + (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getNext(a)); + return b + }, + getLast: function(a) { + var b = this.$.lastChild; + (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getPrevious(a)); + return b + }, + getStyle: function(a) { + return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] + }, + is: function() { + var a = this.getName(); + if ("object" == typeof arguments[0]) return !!arguments[0][a]; + for (var b = 0; b < arguments.length; b++) + if (arguments[b] == a) return !0; + return !1 + }, + isEditable: function(a) { + var b = this.getName(); + return this.isReadOnly() || "none" == this.getComputedStyle("display") || "hidden" == this.getComputedStyle("visibility") || CKEDITOR.dtd.$nonEditable[b] || CKEDITOR.dtd.$empty[b] || this.is("a") && (this.data("cke-saved-name") || this.hasAttribute("name")) && !this.getChildCount() ? !1 : !1 !== a ? (a = CKEDITOR.dtd[b] || + CKEDITOR.dtd.span, !(!a || !a["#"])) : !0 + }, + isIdentical: function(a) { + var b = this.clone(0, 1); + a = a.clone(0, 1); + b.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]); + a.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]); + if (b.$.isEqualNode) return b.$.style.cssText = CKEDITOR.tools.normalizeCssText(b.$.style.cssText), a.$.style.cssText = CKEDITOR.tools.normalizeCssText(a.$.style.cssText), b.$.isEqualNode(a.$); + b = b.getOuterHtml(); + a = + a.getOuterHtml(); + if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && this.is("a")) { + var c = this.getParent(); + c.type == CKEDITOR.NODE_ELEMENT && (c = c.clone(), c.setHtml(b), b = c.getHtml(), c.setHtml(a), a = c.getHtml()) + } + return b == a + }, + isVisible: function() { + var a = (this.$.offsetHeight || this.$.offsetWidth) && "hidden" != this.getComputedStyle("visibility"), + b, c; + a && CKEDITOR.env.webkit && (b = this.getWindow(), !b.equals(CKEDITOR.document.getWindow()) && (c = b.$.frameElement) && (a = (new CKEDITOR.dom.element(c)).isVisible())); + return !!a + }, + isEmptyInlineRemoveable: function() { + if (!CKEDITOR.dtd.$removeEmpty[this.getName()]) return !1; + for (var a = this.getChildren(), b = 0, c = a.count(); b < c; b++) { + var e = a.getItem(b); + if (e.type != CKEDITOR.NODE_ELEMENT || !e.data("cke-bookmark")) + if (e.type == CKEDITOR.NODE_ELEMENT && !e.isEmptyInlineRemoveable() || e.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(e.getText())) return !1 + } + return !0 + }, + hasAttributes: CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function() { + for (var a = this.$.attributes, b = 0; b < a.length; b++) { + var c = a[b]; + switch (c.nodeName) { + case "class": + if (this.getAttribute("class")) return !0; + case "data-cke-expando": + continue; + default: + if (c.specified) return !0 + } + } + return !1 + } : function() { + var a = this.$.attributes, + b = a.length, + c = { + "data-cke-expando": 1, + _moz_dirty: 1 + }; + return 0 < b && (2 < b || !c[a[0].nodeName] || 2 == b && !c[a[1].nodeName]) + }, + hasAttribute: function() { + function a(b) { + var c = this.$.attributes.getNamedItem(b); + if ("input" == this.getName()) switch (b) { + case "class": + return 0 < this.$.className.length; + case "checked": + return !!this.$.checked; + case "value": + return b = this.getAttribute("type"), "checkbox" == b || "radio" == b ? "on" != this.$.value : !!this.$.value + } + return c ? + c.specified : !1 + } + return CKEDITOR.env.ie ? 8 > CKEDITOR.env.version ? function(b) { + return "name" == b ? !!this.$.name : a.call(this, b) + } : a : function(a) { + return !!this.$.attributes.getNamedItem(a) + } + }(), + hide: function() { + this.setStyle("display", "none") + }, + moveChildren: function(a, b) { + var c = this.$; + a = a.$; + if (c != a) { + var e; + if (b) + for (; e = c.lastChild;) a.insertBefore(c.removeChild(e), a.firstChild); + else + for (; e = c.firstChild;) a.appendChild(c.removeChild(e)) + } + }, + mergeSiblings: function() { + function a(b, c, e) { + if (c && c.type == CKEDITOR.NODE_ELEMENT) { + for (var d = []; c.data("cke-bookmark") || c.isEmptyInlineRemoveable();) + if (d.push(c), c = e ? c.getNext() : c.getPrevious(), !c || c.type != CKEDITOR.NODE_ELEMENT) return; + if (b.isIdentical(c)) { + for (var g = e ? b.getLast() : b.getFirst(); d.length;) d.shift().move(b, !e); + c.moveChildren(b, !e); + c.remove(); + g && g.type == CKEDITOR.NODE_ELEMENT && g.mergeSiblings() + } + } + } + return function(b) { + if (!1 === b || CKEDITOR.dtd.$removeEmpty[this.getName()] || this.is("a")) a(this, this.getNext(), !0), a(this, this.getPrevious()) + } + }(), + show: function() { + this.setStyles({ + display: "", + visibility: "" + }) + }, + setAttribute: function() { + var a = function(a, b) { + this.$.setAttribute(a, b); + return this + }; + return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function(b, c) { + "class" == b ? this.$.className = c : "style" == b ? this.$.style.cssText = c : "tabindex" == b ? this.$.tabIndex = c : "checked" == b ? this.$.checked = c : "contenteditable" == b ? a.call(this, "contentEditable", c) : a.apply(this, arguments); + return this + } : CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ? function(b, c) { + if ("src" == b && c.match(/^http:\/\//)) try { + a.apply(this, + arguments) + } catch (e) {} else a.apply(this, arguments); + return this + } : a + }(), + setAttributes: function(a) { + for (var b in a) this.setAttribute(b, a[b]); + return this + }, + setValue: function(a) { + this.$.value = a; + return this + }, + removeAttribute: function() { + var a = function(a) { + this.$.removeAttribute(a) + }; + return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function(a) { + "class" == a ? a = "className" : "tabindex" == a ? a = "tabIndex" : "contenteditable" == a && (a = "contentEditable"); + this.$.removeAttribute(a) + } : a + }(), + removeAttributes: function(a) { + if (CKEDITOR.tools.isArray(a)) + for (var b = + 0; b < a.length; b++) this.removeAttribute(a[b]); + else + for (b in a = a || this.getAttributes(), a) a.hasOwnProperty(b) && this.removeAttribute(b) + }, + removeStyle: function(a) { + var b = this.$.style; + if (b.removeProperty || "border" != a && "margin" != a && "padding" != a) b.removeProperty ? b.removeProperty(a) : b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)), this.$.style.cssText || this.removeAttribute("style"); + else { + var c = ["top", "left", "right", "bottom"], + e; + "border" == a && (e = ["color", "style", "width"]); + for (var b = [], d = 0; d < c.length; d++) + if (e) + for (var v = + 0; v < e.length; v++) b.push([a, c[d], e[v]].join("-")); + else b.push([a, c[d]].join("-")); + for (a = 0; a < b.length; a++) this.removeStyle(b[a]) + } + }, + setStyle: function(a, b) { + this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] = b; + return this + }, + setStyles: function(a) { + for (var b in a) this.setStyle(b, a[b]); + return this + }, + setOpacity: function(a) { + CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? (a = Math.round(100 * a), this.setStyle("filter", 100 <= a ? "" : "progid:DXImageTransform.Microsoft.Alpha(opacity\x3d" + a + ")")) : this.setStyle("opacity", a) + }, + unselectable: function() { + this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", + "none")); + if (CKEDITOR.env.ie) { + this.setAttribute("unselectable", "on"); + for (var a, b = this.getElementsByTag("*"), c = 0, e = b.count(); c < e; c++) a = b.getItem(c), a.setAttribute("unselectable", "on") + } + }, + getPositionedAncestor: function() { + for (var a = this; + "html" != a.getName();) { + if ("static" != a.getComputedStyle("position")) return a; + a = a.getParent() + } + return null + }, + getDocumentPosition: function(a) { + var b = 0, + c = 0, + e = this.getDocument(), + d = e.getBody(), + v = "BackCompat" == e.$.compatMode; + if (document.documentElement.getBoundingClientRect && (CKEDITOR.env.ie ? + 8 !== CKEDITOR.env.version : 1)) { + var f = this.$.getBoundingClientRect(), + h = e.$.documentElement, + x = h.clientTop || d.$.clientTop || 0, + m = h.clientLeft || d.$.clientLeft || 0, + k = !0; + CKEDITOR.env.ie && (k = e.getDocumentElement().contains(this), e = e.getBody().contains(this), k = v && e || !v && k); + k && (CKEDITOR.env.webkit || CKEDITOR.env.ie && 12 <= CKEDITOR.env.version ? (b = d.$.scrollLeft || h.scrollLeft, c = d.$.scrollTop || h.scrollTop) : (c = v ? d.$ : h, b = c.scrollLeft, c = c.scrollTop), b = f.left + b - m, c = f.top + c - x) + } else + for (x = this, m = null; x && "body" != x.getName() && + "html" != x.getName();) { + b += x.$.offsetLeft - x.$.scrollLeft; + c += x.$.offsetTop - x.$.scrollTop; + x.equals(this) || (b += x.$.clientLeft || 0, c += x.$.clientTop || 0); + for (; m && !m.equals(x);) b -= m.$.scrollLeft, c -= m.$.scrollTop, m = m.getParent(); + m = x; + x = (f = x.$.offsetParent) ? new CKEDITOR.dom.element(f) : null + } + a && (f = this.getWindow(), x = a.getWindow(), !f.equals(x) && f.$.frameElement && (a = (new CKEDITOR.dom.element(f.$.frameElement)).getDocumentPosition(a), b += a.x, c += a.y)); + document.documentElement.getBoundingClientRect || !CKEDITOR.env.gecko || + v || (b += this.$.clientLeft ? 1 : 0, c += this.$.clientTop ? 1 : 0); + return { + x: b, + y: c + } + }, + scrollIntoView: function(a) { + var b = this.getParent(); + if (b) { + do + if ((b.$.clientWidth && b.$.clientWidth < b.$.scrollWidth || b.$.clientHeight && b.$.clientHeight < b.$.scrollHeight) && !b.is("body") && this.scrollIntoParent(b, a, 1), b.is("html")) { + var c = b.getWindow(); + try { + var e = c.$.frameElement; + e && (b = new CKEDITOR.dom.element(e)) + } catch (d) {} + } while (b = b.getParent()) + } + }, + scrollIntoParent: function(a, b, c) { + var e, d, v, f; + + function h(b, c) { + /body|html/.test(a.getName()) ? + a.getWindow().$.scrollBy(b, c) : (a.$.scrollLeft += b, a.$.scrollTop += c) + } + + function x(a, b) { + var c = { + x: 0, + y: 0 + }; + if (!a.is(k ? "body" : "html")) { + var e = a.$.getBoundingClientRect(); + c.x = e.left; + c.y = e.top + } + e = a.getWindow(); + e.equals(b) || (e = x(CKEDITOR.dom.element.get(e.$.frameElement), b), c.x += e.x, c.y += e.y); + return c + } + + function m(a, b) { + return parseInt(a.getComputedStyle("margin-" + b) || 0, 10) || 0 + }!a && (a = this.getWindow()); + v = a.getDocument(); + var k = "BackCompat" == v.$.compatMode; + a instanceof CKEDITOR.dom.window && (a = k ? v.getBody() : v.getDocumentElement()); + CKEDITOR.env.webkit && (v = this.getEditor(!1)) && (v._.previousScrollTop = null); + v = a.getWindow(); + d = x(this, v); + var u = x(a, v), + K = this.$.offsetHeight; + e = this.$.offsetWidth; + var l = a.$.clientHeight, + t = a.$.clientWidth; + v = d.x - m(this, "left") - u.x || 0; + f = d.y - m(this, "top") - u.y || 0; + e = d.x + e + m(this, "right") - (u.x + t) || 0; + d = d.y + K + m(this, "bottom") - (u.y + l) || 0; + (0 > f || 0 < d) && h(0, !0 === b ? f : !1 === b ? d : 0 > f ? f : d); + c && (0 > v || 0 < e) && h(0 > v ? v : e, 0) + }, + setState: function(a, b, c) { + b = b || "cke"; + switch (a) { + case CKEDITOR.TRISTATE_ON: + this.addClass(b + "_on"); + this.removeClass(b + + "_off"); + this.removeClass(b + "_disabled"); + c && this.setAttribute("aria-pressed", !0); + c && this.removeAttribute("aria-disabled"); + break; + case CKEDITOR.TRISTATE_DISABLED: + this.addClass(b + "_disabled"); + this.removeClass(b + "_off"); + this.removeClass(b + "_on"); + c && this.setAttribute("aria-disabled", !0); + c && this.removeAttribute("aria-pressed"); + break; + default: + this.addClass(b + "_off"), this.removeClass(b + "_on"), this.removeClass(b + "_disabled"), c && this.removeAttribute("aria-pressed"), c && this.removeAttribute("aria-disabled") + } + }, + getFrameDocument: function() { + var a = this.$; + try { + a.contentWindow.document + } catch (b) { + a.src = a.src + } + return a && new CKEDITOR.dom.document(a.contentWindow.document) + }, + copyAttributes: function(a, b) { + var c = this.$.attributes; + b = b || {}; + for (var e = 0; e < c.length; e++) { + var d = c[e], + v = d.nodeName.toLowerCase(), + f; + if (!(v in b)) + if ("checked" == v && (f = this.getAttribute(v))) a.setAttribute(v, f); + else if (!CKEDITOR.env.ie || this.hasAttribute(v)) f = this.getAttribute(v), null === f && (f = d.nodeValue), a.setAttribute(v, f) + } + "" !== this.$.style.cssText && + (a.$.style.cssText = this.$.style.cssText) + }, + renameNode: function(a) { + if (this.getName() != a) { + var b = this.getDocument(); + a = new CKEDITOR.dom.element(a, b); + this.copyAttributes(a); + this.moveChildren(a); + this.getParent(!0) && this.$.parentNode.replaceChild(a.$, this.$); + a.$["data-cke-expando"] = this.$["data-cke-expando"]; + this.$ = a.$; + delete this.getName + } + }, + getChild: function() { + function a(b, c) { + var e = b.childNodes; + if (0 <= c && c < e.length) return e[c] + } + return function(b) { + var c = this.$; + if (b.slice) + for (b = b.slice(); 0 < b.length && c;) c = a(c, + b.shift()); + else c = a(c, b); + return c ? new CKEDITOR.dom.node(c) : null + } + }(), + getChildCount: function() { + return this.$.childNodes.length + }, + disableContextMenu: function() { + function a(b) { + return b.type == CKEDITOR.NODE_ELEMENT && b.hasClass("cke_enable_context_menu") + } + this.on("contextmenu", function(b) { + b.data.getTarget().getAscendant(a, !0) || b.data.preventDefault() + }) + }, + getDirection: function(a) { + return a ? this.getComputedStyle("direction") || this.getDirection() || this.getParent() && this.getParent().getDirection(1) || this.getDocument().$.dir || + "ltr" : this.getStyle("direction") || this.getAttribute("dir") + }, + data: function(a, b) { + a = "data-" + a; + if (void 0 === b) return this.getAttribute(a); + !1 === b ? this.removeAttribute(a) : this.setAttribute(a, b); + return null + }, + getEditor: function(a) { + var b = CKEDITOR.instances, + c, e, d; + a = a || void 0 === a; + for (c in b) + if (e = b[c], e.element.equals(this) && e.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || !a && (d = e.editable()) && (d.equals(this) || d.contains(this))) return e; + return null + }, + find: function(a) { + var c = d(this); + a = new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this, + a))); + c(); + return a + }, + findOne: function(a) { + var c = d(this); + a = this.$.querySelector(b(this, a)); + c(); + return a ? new CKEDITOR.dom.element(a) : null + }, + forEach: function(a, b, c) { + if (!(c || b && this.type != b)) var e = a(this); + if (!1 !== e) { + c = this.getChildren(); + for (var d = 0; d < c.count(); d++) e = c.getItem(d), e.type == CKEDITOR.NODE_ELEMENT ? e.forEach(a, b) : b && e.type != b || a(e) + } + } + }); + var k = { + width: ["border-left-width", "border-right-width", "padding-left", "padding-right"], + height: ["border-top-width", "border-bottom-width", "padding-top", "padding-bottom"] + }; + CKEDITOR.dom.element.prototype.setSize = function(a, b, d) { + "number" == typeof b && (!d || CKEDITOR.env.ie && CKEDITOR.env.quirks || (b -= c.call(this, a)), this.setStyle(a, b + "px")) + }; + CKEDITOR.dom.element.prototype.getSize = function(a, b) { + var d = Math.max(this.$["offset" + CKEDITOR.tools.capitalize(a)], this.$["client" + CKEDITOR.tools.capitalize(a)]) || 0; + b && (d -= c.call(this, a)); + return d + } + })(); + CKEDITOR.dom.documentFragment = function(a) { + a = a || CKEDITOR.document; + this.$ = a.type == CKEDITOR.NODE_DOCUMENT ? a.$.createDocumentFragment() : a + }; + CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.element.prototype, { + type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, + insertAfterNode: function(a) { + a = a.$; + a.parentNode.insertBefore(this.$, a.nextSibling) + }, + getHtml: function() { + var a = new CKEDITOR.dom.element("div"); + this.clone(1, 1).appendTo(a); + return a.getHtml().replace(/\s*data-cke-expando=".*?"/g, "") + } + }, !0, { + append: 1, + appendBogus: 1, + clone: 1, + getFirst: 1, + getHtml: 1, + getLast: 1, + getParent: 1, + getNext: 1, + getPrevious: 1, + appendTo: 1, + moveChildren: 1, + insertBefore: 1, + insertAfterNode: 1, + replace: 1, + trim: 1, + type: 1, + ltrim: 1, + rtrim: 1, + getDocument: 1, + getChildCount: 1, + getChild: 1, + getChildren: 1 + }); + (function() { + function a(a, b) { + var c = this.range; + if (this._.end) return null; + if (!this._.start) { + this._.start = 1; + if (c.collapsed) return this.end(), null; + c.optimize() + } + var e, d = c.startContainer; + e = c.endContainer; + var f = c.startOffset, + y = c.endOffset, + h, l = this.guard, + t = this.type, + g = a ? "getPreviousSourceNode" : "getNextSourceNode"; + if (!a && !this._.guardLTR) { + var L = e.type == CKEDITOR.NODE_ELEMENT ? e : e.getParent(), + C = e.type == CKEDITOR.NODE_ELEMENT ? e.getChild(y) : e.getNext(); + this._.guardLTR = function(a, b) { + return (!b || !L.equals(a)) && (!C || + !a.equals(C)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !a.equals(c.root)) + } + } + if (a && !this._.guardRTL) { + var k = d.type == CKEDITOR.NODE_ELEMENT ? d : d.getParent(), + q = d.type == CKEDITOR.NODE_ELEMENT ? f ? d.getChild(f - 1) : null : d.getPrevious(); + this._.guardRTL = function(a, b) { + return (!b || !k.equals(a)) && (!q || !a.equals(q)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !a.equals(c.root)) + } + } + var E = a ? this._.guardRTL : this._.guardLTR; + h = l ? function(a, b) { + return !1 === E(a, b) ? !1 : l(a, b) + } : E; + this.current ? e = this.current[g](!1, t, h) : (a ? e.type == CKEDITOR.NODE_ELEMENT && + (e = 0 < y ? e.getChild(y - 1) : !1 === h(e, !0) ? null : e.getPreviousSourceNode(!0, t, h)) : (e = d, e.type == CKEDITOR.NODE_ELEMENT && ((e = e.getChild(f)) || (e = !1 === h(d, !0) ? null : d.getNextSourceNode(!0, t, h)))), e && !1 === h(e) && (e = null)); + for (; e && !this._.end;) { + this.current = e; + if (!this.evaluator || !1 !== this.evaluator(e)) { + if (!b) return e + } else if (b && this.evaluator) return !1; + e = e[g](!1, t, h) + } + this.end(); + return this.current = null + } + + function d(b) { + for (var c, e = null; c = a.call(this, b);) e = c; + return e + } + CKEDITOR.dom.walker = CKEDITOR.tools.createClass({ + $: function(a) { + this.range = + a; + this._ = {} + }, + proto: { + end: function() { + this._.end = 1 + }, + next: function() { + return a.call(this) + }, + previous: function() { + return a.call(this, 1) + }, + checkForward: function() { + return !1 !== a.call(this, 0, 1) + }, + checkBackward: function() { + return !1 !== a.call(this, 1, 1) + }, + lastForward: function() { + return d.call(this) + }, + lastBackward: function() { + return d.call(this, 1) + }, + reset: function() { + delete this.current; + this._ = {} + } + } + }); + var b = { + block: 1, + "list-item": 1, + table: 1, + "table-row-group": 1, + "table-header-group": 1, + "table-footer-group": 1, + "table-row": 1, + "table-column-group": 1, + "table-column": 1, + "table-cell": 1, + "table-caption": 1 + }, + c = { + absolute: 1, + fixed: 1 + }; + CKEDITOR.dom.element.prototype.isBlockBoundary = function(a) { + return "none" != this.getComputedStyle("float") || this.getComputedStyle("position") in c || !b[this.getComputedStyle("display")] ? !!(this.is(CKEDITOR.dtd.$block) || a && this.is(a)) : !0 + }; + CKEDITOR.dom.walker.blockBoundary = function(a) { + return function(b) { + return !(b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary(a)) + } + }; + CKEDITOR.dom.walker.listItemBoundary = function() { + return this.blockBoundary({ + br: 1 + }) + }; + CKEDITOR.dom.walker.bookmark = function(a, b) { + function c(a) { + return a && a.getName && "span" == a.getName() && a.data("cke-bookmark") + } + return function(e) { + var d, f; + d = e && e.type != CKEDITOR.NODE_ELEMENT && (f = e.getParent()) && c(f); + d = a ? d : d || c(e); + return !!(b ^ d) + } + }; + CKEDITOR.dom.walker.whitespaces = function(a) { + return function(b) { + var c; + b && b.type == CKEDITOR.NODE_TEXT && (c = !CKEDITOR.tools.trim(b.getText()) || CKEDITOR.env.webkit && b.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE); + return !!(a ^ c) + } + }; + CKEDITOR.dom.walker.invisible = + function(a) { + var b = CKEDITOR.dom.walker.whitespaces(), + c = CKEDITOR.env.webkit ? 1 : 0; + return function(e) { + b(e) ? e = 1 : (e.type == CKEDITOR.NODE_TEXT && (e = e.getParent()), e = e.$.offsetWidth <= c); + return !!(a ^ e) + } + }; + CKEDITOR.dom.walker.nodeType = function(a, b) { + return function(c) { + return !!(b ^ c.type == a) + } + }; + CKEDITOR.dom.walker.bogus = function(a) { + function b(a) { + return !h(a) && !k(a) + } + return function(c) { + var e = CKEDITOR.env.needsBrFiller ? c.is && c.is("br") : c.getText && f.test(c.getText()); + e && (e = c.getParent(), c = c.getNext(b), e = e.isBlockBoundary() && + (!c || c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary())); + return !!(a ^ e) + } + }; + CKEDITOR.dom.walker.temp = function(a) { + return function(b) { + b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent()); + b = b && b.hasAttribute("data-cke-temp"); + return !!(a ^ b) + } + }; + var f = /^[\t\r\n ]*(?: |\xa0)$/, + h = CKEDITOR.dom.walker.whitespaces(), + k = CKEDITOR.dom.walker.bookmark(), + g = CKEDITOR.dom.walker.temp(), + n = function(a) { + return k(a) || h(a) || a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$inline) && !a.is(CKEDITOR.dtd.$empty) + }; + CKEDITOR.dom.walker.ignored = + function(a) { + return function(b) { + b = h(b) || k(b) || g(b); + return !!(a ^ b) + } + }; + var r = CKEDITOR.dom.walker.ignored(); + CKEDITOR.dom.walker.empty = function(a) { + return function(b) { + for (var c = 0, e = b.getChildCount(); c < e; ++c) + if (!r(b.getChild(c))) return !!a; + return !a + } + }; + var e = CKEDITOR.dom.walker.empty(), + y = CKEDITOR.dom.walker.validEmptyBlockContainers = CKEDITOR.tools.extend(function(a) { + var b = {}, + c; + for (c in a) CKEDITOR.dtd[c]["#"] && (b[c] = 1); + return b + }(CKEDITOR.dtd.$block), { + caption: 1, + td: 1, + th: 1 + }); + CKEDITOR.dom.walker.editable = function(a) { + return function(b) { + b = + r(b) ? !1 : b.type == CKEDITOR.NODE_TEXT || b.type == CKEDITOR.NODE_ELEMENT && (b.is(CKEDITOR.dtd.$inline) || b.is("hr") || "false" == b.getAttribute("contenteditable") || !CKEDITOR.env.needsBrFiller && b.is(y) && e(b)) ? !0 : !1; + return !!(a ^ b) + } + }; + CKEDITOR.dom.element.prototype.getBogus = function() { + var a = this; + do a = a.getPreviousSourceNode(); while (n(a)); + return a && (CKEDITOR.env.needsBrFiller ? a.is && a.is("br") : a.getText && f.test(a.getText())) ? a : !1 + } + })(); + CKEDITOR.dom.range = function(a) { + this.endOffset = this.endContainer = this.startOffset = this.startContainer = null; + this.collapsed = !0; + var d = a instanceof CKEDITOR.dom.document; + this.document = d ? a : a.getDocument(); + this.root = d ? a.getBody() : a + }; + (function() { + function a(a) { + a.collapsed = a.startContainer && a.endContainer && a.startContainer.equals(a.endContainer) && a.startOffset == a.endOffset + } + + function d(a, b, c, d, f) { + function h(a, b, c, e) { + var d = c ? a.getPrevious() : a.getNext(); + if (e && k) return d; + l || e ? b.append(a.clone(!0, f), c) : (a.remove(), r && b.append(a, c)); + return d + } + + function m() { + var a, b, c, e = Math.min(O.length, p.length); + for (a = 0; a < e; a++) + if (b = O[a], c = p[a], !b.equals(c)) return a; + return a - 1 + } + + function g() { + var b = N - 1, + c = E && z && !t.equals(F); + b < w - 1 || b < A - 1 || c ? (c ? a.moveToPosition(F, + CKEDITOR.POSITION_BEFORE_START) : A == b + 1 && q ? a.moveToPosition(p[b], CKEDITOR.POSITION_BEFORE_END) : a.moveToPosition(p[b + 1], CKEDITOR.POSITION_BEFORE_START), d && (b = O[b + 1]) && b.type == CKEDITOR.NODE_ELEMENT && (c = CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e', a.document), c.insertAfter(b), b.mergeSiblings(!1), a.moveToBookmark({ + startNode: c + }))) : a.collapse(!0) + } + a.optimizeBookmark(); + var k = 0 === b, + r = 1 == b, + l = 2 == b; + b = l || r; + var t = a.startContainer, + F = a.endContainer, + L = a.startOffset, + C = a.endOffset, + M, q, E, z, H, P; + if (l && F.type == CKEDITOR.NODE_TEXT && (t.equals(F) || t.type === CKEDITOR.NODE_ELEMENT && t.getFirst().equals(F))) c.append(a.document.createText(F.substring(L, C))); + else { + F.type == CKEDITOR.NODE_TEXT ? l ? P = !0 : F = F.split(C) : 0 < F.getChildCount() ? C >= F.getChildCount() ? (F = F.getChild(C - 1), q = !0) : F = F.getChild(C) : z = q = !0; + t.type == CKEDITOR.NODE_TEXT ? l ? H = !0 : t.split(L) : 0 < t.getChildCount() ? 0 === L ? (t = t.getChild(L), M = !0) : t = t.getChild(L - 1) : E = M = !0; + for (var O = t.getParents(), p = F.getParents(), N = m(), + w = O.length - 1, A = p.length - 1, G = c, I, X, V, da = -1, Q = N; Q <= w; Q++) { + X = O[Q]; + V = X.getNext(); + for (Q != w || X.equals(p[Q]) && w < A ? b && (I = G.append(X.clone(0, f))) : M ? h(X, G, !1, E) : H && G.append(a.document.createText(X.substring(L))); V;) { + if (V.equals(p[Q])) { + da = Q; + break + } + V = h(V, G) + } + G = I + } + G = c; + for (Q = N; Q <= A; Q++) + if (c = p[Q], V = c.getPrevious(), c.equals(O[Q])) b && (G = G.getChild(0)); + else { + Q != A || c.equals(O[Q]) && A < w ? b && (I = G.append(c.clone(0, f))) : q ? h(c, G, !1, z) : P && G.append(a.document.createText(c.substring(0, C))); + if (Q > da) + for (; V;) V = h(V, G, !0); + G = I + } l || g() + } + } + + function b() { + var a = !1, + b = CKEDITOR.dom.walker.whitespaces(), + c = CKEDITOR.dom.walker.bookmark(!0), + d = CKEDITOR.dom.walker.bogus(); + return function(f) { + return c(f) || b(f) ? !0 : d(f) && !a ? a = !0 : f.type == CKEDITOR.NODE_TEXT && (f.hasAscendant("pre") || CKEDITOR.tools.trim(f.getText()).length) || f.type == CKEDITOR.NODE_ELEMENT && !f.is(h) ? !1 : !0 + } + } + + function c(a) { + var b = CKEDITOR.dom.walker.whitespaces(), + c = CKEDITOR.dom.walker.bookmark(1); + return function(d) { + return c(d) || b(d) ? !0 : !a && k(d) || d.type == CKEDITOR.NODE_ELEMENT && d.is(CKEDITOR.dtd.$removeEmpty) + } + } + + function f(a) { + return function() { + var b; + return this[a ? "getPreviousNode" : "getNextNode"](function(a) { + !b && r(a) && (b = a); + return n(a) && !(k(a) && a.equals(b)) + }) + } + } + var h = { + abbr: 1, + acronym: 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, + samp: 1, + small: 1, + span: 1, + strike: 1, + strong: 1, + sub: 1, + sup: 1, + tt: 1, + u: 1, + "var": 1 + }, + k = CKEDITOR.dom.walker.bogus(), + g = /^[\t\r\n ]*(?: |\xa0)$/, + n = CKEDITOR.dom.walker.editable(), + r = CKEDITOR.dom.walker.ignored(!0); + CKEDITOR.dom.range.prototype = { + clone: function() { + var a = + new CKEDITOR.dom.range(this.root); + a._setStartContainer(this.startContainer); + a.startOffset = this.startOffset; + a._setEndContainer(this.endContainer); + a.endOffset = this.endOffset; + a.collapsed = this.collapsed; + return a + }, + collapse: function(a) { + a ? (this._setEndContainer(this.startContainer), this.endOffset = this.startOffset) : (this._setStartContainer(this.endContainer), this.startOffset = this.endOffset); + this.collapsed = !0 + }, + cloneContents: function(a) { + var b = new CKEDITOR.dom.documentFragment(this.document); + this.collapsed || + d(this, 2, b, !1, "undefined" == typeof a ? !0 : a); + return b + }, + deleteContents: function(a) { + this.collapsed || d(this, 0, null, a) + }, + extractContents: function(a, b) { + var c = new CKEDITOR.dom.documentFragment(this.document); + this.collapsed || d(this, 1, c, a, "undefined" == typeof b ? !0 : b); + return c + }, + createBookmark: function(a) { + var b, c, d, f, h = this.collapsed; + b = this.document.createElement("span"); + b.data("cke-bookmark", 1); + b.setStyle("display", "none"); + b.setHtml("\x26nbsp;"); + a && (d = "cke_bm_" + CKEDITOR.tools.getNextNumber(), b.setAttribute("id", + d + (h ? "C" : "S"))); + h || (c = b.clone(), c.setHtml("\x26nbsp;"), a && c.setAttribute("id", d + "E"), f = this.clone(), f.collapse(), f.insertNode(c)); + f = this.clone(); + f.collapse(!0); + f.insertNode(b); + c ? (this.setStartAfter(b), this.setEndBefore(c)) : this.moveToPosition(b, CKEDITOR.POSITION_AFTER_END); + return { + startNode: a ? d + (h ? "C" : "S") : b, + endNode: a ? d + "E" : c, + serializable: a, + collapsed: h + } + }, + createBookmark2: function() { + function a(b) { + var e = b.container, + d = b.offset, + m; + m = e; + var f = d; + m = m.type != CKEDITOR.NODE_ELEMENT || 0 === f || f == m.getChildCount() ? + 0 : m.getChild(f - 1).type == CKEDITOR.NODE_TEXT && m.getChild(f).type == CKEDITOR.NODE_TEXT; + m && (e = e.getChild(d - 1), d = e.getLength()); + if (e.type == CKEDITOR.NODE_ELEMENT && 0 < d) { + a: { + for (m = e; d--;) + if (f = m.getChild(d).getIndex(!0), 0 <= f) { + d = f; + break a + } d = -1 + } + d += 1 + } + if (e.type == CKEDITOR.NODE_TEXT) { + m = e; + for (f = 0; + (m = m.getPrevious()) && m.type == CKEDITOR.NODE_TEXT;) f += m.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE, "").length; + m = f; + e.getText() ? d += m : (f = e.getPrevious(c), m ? (d = m, e = f ? f.getNext() : e.getParent().getFirst()) : (e = + e.getParent(), d = f ? f.getIndex(!0) + 1 : 0)) + } + b.container = e; + b.offset = d + } + + function b(a, c) { + var e = c.getCustomData("cke-fillingChar"); + if (e) { + var d = a.container; + e.equals(d) && (a.offset -= CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length, 0 >= a.offset && (a.offset = d.getIndex(), a.container = d.getParent())) + } + } + var c = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0); + return function(c) { + var d = this.collapsed, + f = { + container: this.startContainer, + offset: this.startOffset + }, + m = { + container: this.endContainer, + offset: this.endOffset + }; + c && (a(f), + b(f, this.root), d || (a(m), b(m, this.root))); + return { + start: f.container.getAddress(c), + end: d ? null : m.container.getAddress(c), + startOffset: f.offset, + endOffset: m.offset, + normalized: c, + collapsed: d, + is2: !0 + } + } + }(), + moveToBookmark: function(a) { + if (a.is2) { + var b = this.document.getByAddress(a.start, a.normalized), + c = a.startOffset, + d = a.end && this.document.getByAddress(a.end, a.normalized); + a = a.endOffset; + this.setStart(b, c); + d ? this.setEnd(d, a) : this.collapse(!0) + } else b = (c = a.serializable) ? this.document.getById(a.startNode) : a.startNode, + a = c ? this.document.getById(a.endNode) : a.endNode, this.setStartBefore(b), b.remove(), a ? (this.setEndBefore(a), a.remove()) : this.collapse(!0) + }, + getBoundaryNodes: function() { + var a = this.startContainer, + b = this.endContainer, + c = this.startOffset, + d = this.endOffset, + f; + if (a.type == CKEDITOR.NODE_ELEMENT) + if (f = a.getChildCount(), f > c) a = a.getChild(c); + else if (1 > f) a = a.getPreviousSourceNode(); + else { + for (a = a.$; a.lastChild;) a = a.lastChild; + a = new CKEDITOR.dom.node(a); + a = a.getNextSourceNode() || a + } + if (b.type == CKEDITOR.NODE_ELEMENT) + if (f = b.getChildCount(), + f > d) b = b.getChild(d).getPreviousSourceNode(!0); + else if (1 > f) b = b.getPreviousSourceNode(); + else { + for (b = b.$; b.lastChild;) b = b.lastChild; + b = new CKEDITOR.dom.node(b) + } + a.getPosition(b) & CKEDITOR.POSITION_FOLLOWING && (a = b); + return { + startNode: a, + endNode: b + } + }, + getCommonAncestor: function(a, b) { + var c = this.startContainer, + d = this.endContainer, + c = c.equals(d) ? a && c.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 ? c.getChild(this.startOffset) : c : c.getCommonAncestor(d); + return b && !c.is ? c.getParent() : c + }, + optimize: function() { + var a = + this.startContainer, + b = this.startOffset; + a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setStartAfter(a) : this.setStartBefore(a)); + a = this.endContainer; + b = this.endOffset; + a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setEndAfter(a) : this.setEndBefore(a)) + }, + optimizeBookmark: function() { + var a = this.startContainer, + b = this.endContainer; + a.is && a.is("span") && a.data("cke-bookmark") && this.setStartAt(a, CKEDITOR.POSITION_BEFORE_START); + b && b.is && b.is("span") && b.data("cke-bookmark") && this.setEndAt(b, CKEDITOR.POSITION_AFTER_END) + }, + trim: function(a, b) { + var c = this.startContainer, + d = this.startOffset, + f = this.collapsed; + if ((!a || f) && c && c.type == CKEDITOR.NODE_TEXT) { + if (d) + if (d >= c.getLength()) d = c.getIndex() + 1, c = c.getParent(); + else { + var h = c.split(d), + d = c.getIndex() + 1, + c = c.getParent(); + this.startContainer.equals(this.endContainer) ? this.setEnd(h, this.endOffset - this.startOffset) : c.equals(this.endContainer) && (this.endOffset += 1) + } + else d = c.getIndex(), c = c.getParent(); + this.setStart(c, d); + if (f) { + this.collapse(!0); + return + } + } + c = this.endContainer; + d = this.endOffset; + b || f || !c || c.type != CKEDITOR.NODE_TEXT || (d ? (d >= c.getLength() || c.split(d), d = c.getIndex() + 1) : d = c.getIndex(), c = c.getParent(), this.setEnd(c, d)) + }, + enlarge: function(a, b) { + function c(a) { + return a && a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") ? null : a + } + var d = new RegExp(/[^\s\ufeff]/); + switch (a) { + case CKEDITOR.ENLARGE_INLINE: + var f = 1; + case CKEDITOR.ENLARGE_ELEMENT: + var h = function(a, b) { + var c = new CKEDITOR.dom.range(g); + c.setStart(a, b); + c.setEndAt(g, CKEDITOR.POSITION_BEFORE_END); + var c = new CKEDITOR.dom.walker(c), + e; + for (c.guard = function(a) { + return !(a.type == CKEDITOR.NODE_ELEMENT && a.isBlockBoundary()) + }; e = c.next();) { + if (e.type != CKEDITOR.NODE_TEXT) return !1; + M = e != a ? e.getText() : e.substring(b); + if (d.test(M)) return !1 + } + return !0 + }; + if (this.collapsed) break; + var m = this.getCommonAncestor(), + g = this.root, + k, r, l, t, F, L = !1, + C, M; + C = this.startContainer; + var q = this.startOffset; + C.type == CKEDITOR.NODE_TEXT ? (q && (C = !CKEDITOR.tools.trim(C.substring(0, q)).length && C, L = !!C), C && ((t = C.getPrevious()) || (l = C.getParent()))) : (q && (t = C.getChild(q - 1) || C.getLast()), + t || (l = C)); + for (l = c(l); l || t;) { + if (l && !t) { + !F && l.equals(m) && (F = !0); + if (f ? l.isBlockBoundary() : !g.contains(l)) break; + L && "inline" == l.getComputedStyle("display") || (L = !1, F ? k = l : this.setStartBefore(l)); + t = l.getPrevious() + } + for (; t;) + if (C = !1, t.type == CKEDITOR.NODE_COMMENT) t = t.getPrevious(); + else { + if (t.type == CKEDITOR.NODE_TEXT) M = t.getText(), d.test(M) && (t = null), C = /[\s\ufeff]$/.test(M); + else if ((t.$.offsetWidth > (CKEDITOR.env.webkit ? 1 : 0) || b && t.is("br")) && !t.data("cke-bookmark")) + if (L && CKEDITOR.dtd.$removeEmpty[t.getName()]) { + M = + t.getText(); + if (d.test(M)) t = null; + else + for (var q = t.$.getElementsByTagName("*"), E = 0, z; z = q[E++];) + if (!CKEDITOR.dtd.$removeEmpty[z.nodeName.toLowerCase()]) { + t = null; + break + } t && (C = !!M.length) + } else t = null; + C && (L ? F ? k = l : l && this.setStartBefore(l) : L = !0); + if (t) { + C = t.getPrevious(); + if (!l && !C) { + l = t; + t = null; + break + } + t = C + } else l = null + } l && (l = c(l.getParent())) + } + C = this.endContainer; + q = this.endOffset; + l = t = null; + F = L = !1; + C.type == CKEDITOR.NODE_TEXT ? CKEDITOR.tools.trim(C.substring(q)).length ? L = !0 : (L = !C.getLength(), q == C.getLength() ? (t = C.getNext()) || + (l = C.getParent()) : h(C, q) && (l = C.getParent())) : (t = C.getChild(q)) || (l = C); + for (; l || t;) { + if (l && !t) { + !F && l.equals(m) && (F = !0); + if (f ? l.isBlockBoundary() : !g.contains(l)) break; + L && "inline" == l.getComputedStyle("display") || (L = !1, F ? r = l : l && this.setEndAfter(l)); + t = l.getNext() + } + for (; t;) { + C = !1; + if (t.type == CKEDITOR.NODE_TEXT) M = t.getText(), h(t, 0) || (t = null), C = /^[\s\ufeff]/.test(M); + else if (t.type == CKEDITOR.NODE_ELEMENT) { + if ((0 < t.$.offsetWidth || b && t.is("br")) && !t.data("cke-bookmark")) + if (L && CKEDITOR.dtd.$removeEmpty[t.getName()]) { + M = + t.getText(); + if (d.test(M)) t = null; + else + for (q = t.$.getElementsByTagName("*"), E = 0; z = q[E++];) + if (!CKEDITOR.dtd.$removeEmpty[z.nodeName.toLowerCase()]) { + t = null; + break + } t && (C = !!M.length) + } else t = null + } else C = 1; + C && L && (F ? r = l : this.setEndAfter(l)); + if (t) { + C = t.getNext(); + if (!l && !C) { + l = t; + t = null; + break + } + t = C + } else l = null + } + l && (l = c(l.getParent())) + } + k && r && (m = k.contains(r) ? r : k, this.setStartBefore(m), this.setEndAfter(m)); + break; + case CKEDITOR.ENLARGE_BLOCK_CONTENTS: + case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS: + l = new CKEDITOR.dom.range(this.root); + g = this.root; + l.setStartAt(g, CKEDITOR.POSITION_AFTER_START); + l.setEnd(this.startContainer, this.startOffset); + l = new CKEDITOR.dom.walker(l); + var H, P, O = CKEDITOR.dom.walker.blockBoundary(a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? { + br: 1 + } : null), + p = null, + N = function(a) { + if (a.type == CKEDITOR.NODE_ELEMENT && "false" == a.getAttribute("contenteditable")) + if (p) { + if (p.equals(a)) { + p = null; + return + } + } else p = a; + else if (p) return; + var b = O(a); + b || (H = a); + return b + }, + f = function(a) { + var b = N(a); + !b && a.is && a.is("br") && (P = a); + return b + }; + l.guard = N; + l = l.lastBackward(); + H = H || g; + this.setStartAt(H, !H.is("br") && (!l && this.checkStartOfBlock() || l && H.contains(l)) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END); + if (a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS) { + l = this.clone(); + l = new CKEDITOR.dom.walker(l); + var w = CKEDITOR.dom.walker.whitespaces(), + A = CKEDITOR.dom.walker.bookmark(); + l.evaluator = function(a) { + return !w(a) && !A(a) + }; + if ((l = l.previous()) && l.type == CKEDITOR.NODE_ELEMENT && l.is("br")) break + } + l = this.clone(); + l.collapse(); + l.setEndAt(g, CKEDITOR.POSITION_BEFORE_END); + l = new CKEDITOR.dom.walker(l); + l.guard = a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? f : N; + H = p = P = null; + l = l.lastForward(); + H = H || g; + this.setEndAt(H, !l && this.checkEndOfBlock() || l && H.contains(l) ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_BEFORE_START); + P && this.setEndAfter(P) + } + }, + shrink: function(a, b, c) { + var d = "boolean" === typeof c ? c : c && "boolean" === typeof c.shrinkOnBlockBoundary ? c.shrinkOnBlockBoundary : !0, + f = c && c.skipBogus; + if (!this.collapsed) { + a = a || CKEDITOR.SHRINK_TEXT; + var h = this.clone(), + m = this.startContainer, + g = this.endContainer, + k = this.startOffset, + r = this.endOffset, + l = c = 1; + m && m.type == CKEDITOR.NODE_TEXT && (k ? k >= m.getLength() ? h.setStartAfter(m) : (h.setStartBefore(m), c = 0) : h.setStartBefore(m)); + g && g.type == CKEDITOR.NODE_TEXT && (r ? r >= g.getLength() ? h.setEndAfter(g) : (h.setEndAfter(g), l = 0) : h.setEndBefore(g)); + var h = new CKEDITOR.dom.walker(h), + t = CKEDITOR.dom.walker.bookmark(), + F = CKEDITOR.dom.walker.bogus(); + h.evaluator = function(b) { + return b.type == (a == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT) + }; + var L; + h.guard = function(b, c) { + if (f && F(b) || t(b)) return !0; + if (a == CKEDITOR.SHRINK_ELEMENT && b.type == CKEDITOR.NODE_TEXT || c && b.equals(L) || !1 === d && b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary() || b.type == CKEDITOR.NODE_ELEMENT && b.hasAttribute("contenteditable")) return !1; + c || b.type != CKEDITOR.NODE_ELEMENT || (L = b); + return !0 + }; + c && (m = h[a == CKEDITOR.SHRINK_ELEMENT ? "lastForward" : "next"]()) && this.setStartAt(m, b ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START); + l && (h.reset(), (h = h[a == CKEDITOR.SHRINK_ELEMENT ? "lastBackward" : "previous"]()) && this.setEndAt(h, b ? CKEDITOR.POSITION_BEFORE_END : + CKEDITOR.POSITION_AFTER_END)); + return !(!c && !l) + } + }, + insertNode: function(a) { + this.optimizeBookmark(); + this.trim(!1, !0); + var b = this.startContainer, + c = b.getChild(this.startOffset); + c ? a.insertBefore(c) : b.append(a); + a.getParent() && a.getParent().equals(this.endContainer) && this.endOffset++; + this.setStartBefore(a) + }, + moveToPosition: function(a, b) { + this.setStartAt(a, b); + this.collapse(!0) + }, + moveToRange: function(a) { + this.setStart(a.startContainer, a.startOffset); + this.setEnd(a.endContainer, a.endOffset) + }, + selectNodeContents: function(a) { + this.setStart(a, + 0); + this.setEnd(a, a.type == CKEDITOR.NODE_TEXT ? a.getLength() : a.getChildCount()) + }, + setStart: function(b, c) { + b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && (c = b.getIndex(), b = b.getParent()); + this._setStartContainer(b); + this.startOffset = c; + this.endContainer || (this._setEndContainer(b), this.endOffset = c); + a(this) + }, + setEnd: function(b, c) { + b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && (c = b.getIndex() + 1, b = b.getParent()); + this._setEndContainer(b); + this.endOffset = c; + this.startContainer || + (this._setStartContainer(b), this.startOffset = c); + a(this) + }, + setStartAfter: function(a) { + this.setStart(a.getParent(), a.getIndex() + 1) + }, + setStartBefore: function(a) { + this.setStart(a.getParent(), a.getIndex()) + }, + setEndAfter: function(a) { + this.setEnd(a.getParent(), a.getIndex() + 1) + }, + setEndBefore: function(a) { + this.setEnd(a.getParent(), a.getIndex()) + }, + setStartAt: function(b, c) { + switch (c) { + case CKEDITOR.POSITION_AFTER_START: + this.setStart(b, 0); + break; + case CKEDITOR.POSITION_BEFORE_END: + b.type == CKEDITOR.NODE_TEXT ? this.setStart(b, + b.getLength()) : this.setStart(b, b.getChildCount()); + break; + case CKEDITOR.POSITION_BEFORE_START: + this.setStartBefore(b); + break; + case CKEDITOR.POSITION_AFTER_END: + this.setStartAfter(b) + } + a(this) + }, + setEndAt: function(b, c) { + switch (c) { + case CKEDITOR.POSITION_AFTER_START: + this.setEnd(b, 0); + break; + case CKEDITOR.POSITION_BEFORE_END: + b.type == CKEDITOR.NODE_TEXT ? this.setEnd(b, b.getLength()) : this.setEnd(b, b.getChildCount()); + break; + case CKEDITOR.POSITION_BEFORE_START: + this.setEndBefore(b); + break; + case CKEDITOR.POSITION_AFTER_END: + this.setEndAfter(b) + } + a(this) + }, + fixBlock: function(a, b) { + var c = this.createBookmark(), + d = this.document.createElement(b); + this.collapse(a); + this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS); + this.extractContents().appendTo(d); + d.trim(); + this.insertNode(d); + var f = d.getBogus(); + f && f.remove(); + d.appendBogus(); + this.moveToBookmark(c); + return d + }, + splitBlock: function(a, b) { + var c = new CKEDITOR.dom.elementPath(this.startContainer, this.root), + d = new CKEDITOR.dom.elementPath(this.endContainer, this.root), + f = c.block, + h = d.block, + m = null; + if (!c.blockLimit.equals(d.blockLimit)) return null; + "br" != a && (f || (f = this.fixBlock(!0, a), h = (new CKEDITOR.dom.elementPath(this.endContainer, this.root)).block), h || (h = this.fixBlock(!1, a))); + c = f && this.checkStartOfBlock(); + d = h && this.checkEndOfBlock(); + this.deleteContents(); + f && f.equals(h) && (d ? (m = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(h, CKEDITOR.POSITION_AFTER_END), h = null) : c ? (m = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(f, CKEDITOR.POSITION_BEFORE_START), f = null) : (h = this.splitElement(f, + b || !1), f.is("ul", "ol") || f.appendBogus())); + return { + previousBlock: f, + nextBlock: h, + wasStartOfBlock: c, + wasEndOfBlock: d, + elementPath: m + } + }, + splitElement: function(a, b) { + if (!this.collapsed) return null; + this.setEndAt(a, CKEDITOR.POSITION_BEFORE_END); + var c = this.extractContents(!1, b || !1), + d = a.clone(!1, b || !1); + c.appendTo(d); + d.insertAfter(a); + this.moveToPosition(a, CKEDITOR.POSITION_AFTER_END); + return d + }, + removeEmptyBlocksAtEnd: function() { + function a(d) { + return function(a) { + return b(a) || c(a) || a.type == CKEDITOR.NODE_ELEMENT && a.isEmptyInlineRemoveable() || + d.is("table") && a.is("caption") ? !1 : !0 + } + } + var b = CKEDITOR.dom.walker.whitespaces(), + c = CKEDITOR.dom.walker.bookmark(!1); + return function(b) { + for (var c = this.createBookmark(), d = this[b ? "endPath" : "startPath"](), f = d.block || d.blockLimit, h; f && !f.equals(d.root) && !f.getFirst(a(f));) h = f.getParent(), this[b ? "setEndAt" : "setStartAt"](f, CKEDITOR.POSITION_AFTER_END), f.remove(1), f = h; + this.moveToBookmark(c) + } + }(), + startPath: function() { + return new CKEDITOR.dom.elementPath(this.startContainer, this.root) + }, + endPath: function() { + return new CKEDITOR.dom.elementPath(this.endContainer, + this.root) + }, + checkBoundaryOfElement: function(a, b) { + var d = b == CKEDITOR.START, + f = this.clone(); + f.collapse(d); + f[d ? "setStartAt" : "setEndAt"](a, d ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END); + f = new CKEDITOR.dom.walker(f); + f.evaluator = c(d); + return f[d ? "checkBackward" : "checkForward"]() + }, + checkStartOfBlock: function() { + var a = this.startContainer, + c = this.startOffset; + CKEDITOR.env.ie && c && a.type == CKEDITOR.NODE_TEXT && (a = CKEDITOR.tools.ltrim(a.substring(0, c)), g.test(a) && this.trim(0, 1)); + this.trim(); + a = new CKEDITOR.dom.elementPath(this.startContainer, + this.root); + c = this.clone(); + c.collapse(!0); + c.setStartAt(a.block || a.blockLimit, CKEDITOR.POSITION_AFTER_START); + a = new CKEDITOR.dom.walker(c); + a.evaluator = b(); + return a.checkBackward() + }, + checkEndOfBlock: function() { + var a = this.endContainer, + c = this.endOffset; + CKEDITOR.env.ie && a.type == CKEDITOR.NODE_TEXT && (a = CKEDITOR.tools.rtrim(a.substring(c)), g.test(a) && this.trim(1, 0)); + this.trim(); + a = new CKEDITOR.dom.elementPath(this.endContainer, this.root); + c = this.clone(); + c.collapse(!1); + c.setEndAt(a.block || a.blockLimit, CKEDITOR.POSITION_BEFORE_END); + a = new CKEDITOR.dom.walker(c); + a.evaluator = b(); + return a.checkForward() + }, + getPreviousNode: function(a, b, c) { + var d = this.clone(); + d.collapse(1); + d.setStartAt(c || this.root, CKEDITOR.POSITION_AFTER_START); + c = new CKEDITOR.dom.walker(d); + c.evaluator = a; + c.guard = b; + return c.previous() + }, + getNextNode: function(a, b, c) { + var d = this.clone(); + d.collapse(); + d.setEndAt(c || this.root, CKEDITOR.POSITION_BEFORE_END); + c = new CKEDITOR.dom.walker(d); + c.evaluator = a; + c.guard = b; + return c.next() + }, + checkReadOnly: function() { + function a(b, c) { + for (; b;) { + if (b.type == + CKEDITOR.NODE_ELEMENT) { + if ("false" == b.getAttribute("contentEditable") && !b.data("cke-editable")) return 0; + if (b.is("html") || "true" == b.getAttribute("contentEditable") && (b.contains(c) || b.equals(c))) break + } + b = b.getParent() + } + return 1 + } + return function() { + var b = this.startContainer, + c = this.endContainer; + return !(a(b, c) && a(c, b)) + } + }(), + moveToElementEditablePosition: function(a, b) { + if (a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable(!1)) return this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START), + !0; + for (var c = 0; a;) { + if (a.type == CKEDITOR.NODE_TEXT) { + b && this.endContainer && this.checkEndOfBlock() && g.test(a.getText()) ? this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START) : this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START); + c = 1; + break + } + if (a.type == CKEDITOR.NODE_ELEMENT) + if (a.isEditable()) this.moveToPosition(a, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_START), c = 1; + else if (b && a.is("br") && this.endContainer && this.checkEndOfBlock()) this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START); + else if ("false" == a.getAttribute("contenteditable") && a.is(CKEDITOR.dtd.$block)) return this.setStartBefore(a), this.setEndAfter(a), !0; + var d = a, + f = c, + h = void 0; + d.type == CKEDITOR.NODE_ELEMENT && d.isEditable(!1) && (h = d[b ? "getLast" : "getFirst"](r)); + f || h || (h = d[b ? "getPrevious" : "getNext"](r)); + a = h + } + return !!c + }, + moveToClosestEditablePosition: function(a, b) { + var c, d = 0, + f, h, m = [CKEDITOR.POSITION_AFTER_END, CKEDITOR.POSITION_BEFORE_START]; + a ? (c = new CKEDITOR.dom.range(this.root), c.moveToPosition(a, m[b ? 0 : 1])) : c = this.clone(); + if (a && + !a.is(CKEDITOR.dtd.$block)) d = 1; + else if (f = c[b ? "getNextEditableNode" : "getPreviousEditableNode"]()) d = 1, (h = f.type == CKEDITOR.NODE_ELEMENT) && f.is(CKEDITOR.dtd.$block) && "false" == f.getAttribute("contenteditable") ? (c.setStartAt(f, CKEDITOR.POSITION_BEFORE_START), c.setEndAt(f, CKEDITOR.POSITION_AFTER_END)) : !CKEDITOR.env.needsBrFiller && h && f.is(CKEDITOR.dom.walker.validEmptyBlockContainers) ? (c.setEnd(f, 0), c.collapse()) : c.moveToPosition(f, m[b ? 1 : 0]); + d && this.moveToRange(c); + return !!d + }, + moveToElementEditStart: function(a) { + return this.moveToElementEditablePosition(a) + }, + moveToElementEditEnd: function(a) { + return this.moveToElementEditablePosition(a, !0) + }, + getEnclosedNode: function() { + var a = this.clone(); + a.optimize(); + if (a.startContainer.type != CKEDITOR.NODE_ELEMENT || a.endContainer.type != CKEDITOR.NODE_ELEMENT) return null; + var a = new CKEDITOR.dom.walker(a), + b = CKEDITOR.dom.walker.bookmark(!1, !0), + c = CKEDITOR.dom.walker.whitespaces(!0); + a.evaluator = function(a) { + return c(a) && b(a) + }; + var d = a.next(); + a.reset(); + return d && d.equals(a.previous()) ? d : null + }, + getTouchedStartNode: function() { + var a = this.startContainer; + return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.startOffset) || a + }, + getTouchedEndNode: function() { + var a = this.endContainer; + return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.endOffset - 1) || a + }, + getNextEditableNode: f(), + getPreviousEditableNode: f(1), + _getTableElement: function(a) { + a = a || { + td: 1, + th: 1, + tr: 1, + tbody: 1, + thead: 1, + tfoot: 1, + table: 1 + }; + var b = this.startContainer, + c = this.endContainer, + d = b.getAscendant("table", !0), + f = c.getAscendant("table", !0); + return CKEDITOR.env.safari && d && c.equals(this.root) ? + b.getAscendant(a, !0) : this.getEnclosedNode() ? this.getEnclosedNode().getAscendant(a, !0) : d && f && (d.equals(f) || d.contains(f) || f.contains(d)) ? b.getAscendant(a, !0) : null + }, + scrollIntoView: function() { + var a = new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", this.document), + b, c, d, f = this.clone(); + f.optimize(); + (d = f.startContainer.type == CKEDITOR.NODE_TEXT) ? (c = f.startContainer.getText(), b = f.startContainer.split(f.startOffset), a.insertAfter(f.startContainer)) : f.insertNode(a); + a.scrollIntoView(); + d && (f.startContainer.setText(c), b.remove()); + a.remove() + }, + getClientRects: function() { + function a(b, c) { + var d = CKEDITOR.tools.array.map(b, function(a) { + return a + }), + e = new CKEDITOR.dom.range(c.root), + f, h, l; + c.startContainer instanceof CKEDITOR.dom.element && (h = 0 === c.startOffset && c.startContainer.hasAttribute("data-widget")); + c.endContainer instanceof CKEDITOR.dom.element && (l = (l = c.endOffset === (c.endContainer.getChildCount ? c.endContainer.getChildCount() : c.endContainer.length)) && c.endContainer.hasAttribute("data-widget")); + h && e.setStart(c.startContainer.getParent(), c.startContainer.getIndex()); + l && e.setEnd(c.endContainer.getParent(), c.endContainer.getIndex() + 1); + if (h || l) c = e; + e = c.cloneContents(); + e = CKEDITOR.dom.document.prototype.find.call(e, "[data-cke-widget-id]").toArray(); + if (e = CKEDITOR.tools.array.map(e, function(a) { + var b = c.root.editor; + a = a.getAttribute("data-cke-widget-id"); + return b.widgets.instances[a].element + })) return e = CKEDITOR.tools.array.map(e, function(a) { + var b; + b = a.getParent().hasClass("cke_widget_wrapper") ? a.getParent() : + a; + f = this.root.getDocument().$.createRange(); + f.setStart(b.getParent().$, b.getIndex()); + f.setEnd(b.getParent().$, b.getIndex() + 1); + b = f.getClientRects(); + b.widgetRect = a.getClientRect(); + return b + }, c), CKEDITOR.tools.array.forEach(e, function(a) { + function b(e) { + CKEDITOR.tools.array.forEach(d, function(b, f) { + var l = CKEDITOR.tools.objectCompare(a[e], b); + l || (l = CKEDITOR.tools.objectCompare(a.widgetRect, b)); + l && (Array.prototype.splice.call(d, f, a.length - e, a.widgetRect), c = !0) + }); + c || (e < d.length - 1 ? b(e + 1) : d.push(a.widgetRect)) + } + var c; + b(0) + }), d + } + + function b(a, c, e) { + var f; + c.collapsed ? e.startContainer instanceof CKEDITOR.dom.element ? (a = e.checkStartOfBlock(), f = new CKEDITOR.dom.text("​"), a ? e.startContainer.append(f, !0) : 0 === e.startOffset ? f.insertBefore(e.startContainer.getFirst()) : (e = e.startContainer.getChildren().getItem(e.startOffset - 1), f.insertAfter(e)), c.setStart(f.$, 0), c.setEnd(f.$, 0), a = c.getClientRects(), f.remove()) : e.startContainer instanceof CKEDITOR.dom.text && ("" === e.startContainer.getText() ? (e.startContainer.setText("​"), + a = c.getClientRects(), e.startContainer.setText("")) : a = [d(e.createBookmark())]) : a = [d(e.createBookmark())]; + return a + } + + function c(a, b, d) { + a = CKEDITOR.tools.extend({}, a); + b && (a = CKEDITOR.tools.getAbsoluteRectPosition(d.document.getWindow(), a)); + !a.width && (a.width = a.right - a.left); + !a.height && (a.height = a.bottom - a.top); + return a + } + + function d(a) { + var b = a.startNode; + a = a.endNode; + var c; + b.setText("​"); + b.removeStyle("display"); + a ? (a.setText("​"), a.removeStyle("display"), c = [b.getClientRect(), a.getClientRect()], a.remove()) : c = [b.getClientRect(), b.getClientRect()]; + b.remove(); + return { + right: Math.max(c[0].right, c[1].right), + bottom: Math.max(c[0].bottom, c[1].bottom), + left: Math.min(c[0].left, c[1].left), + top: Math.min(c[0].top, c[1].top), + width: Math.abs(c[0].left - c[1].left), + height: Math.max(c[0].bottom, c[1].bottom) - Math.min(c[0].top, c[1].top) + } + } + return void 0 !== this.document.getSelection ? function(d) { + var f = this.root.getDocument().$.createRange(), + m; + f.setStart(this.startContainer.$, this.startOffset); + f.setEnd(this.endContainer.$, this.endOffset); + m = f.getClientRects(); + m = a(m, this); + m.length || (m = b(m, f, this)); + return CKEDITOR.tools.array.map(m, function(a) { + return c(a, d, this) + }, this) + } : function(a) { + return [c(d(this.createBookmark()), a, this)] + } + }(), + _setStartContainer: function(a) { + this.startContainer = a + }, + _setEndContainer: function(a) { + this.endContainer = a + }, + _find: function(a, b) { + var c = this.getCommonAncestor(), + d = this.getBoundaryNodes(), + f = [], + h, m, g, k; + if (c && c.find) + for (m = c.find(a), h = 0; h < m.count(); h++) + if (c = m.getItem(h), b || !c.isReadOnly()) g = c.getPosition(d.startNode) & CKEDITOR.POSITION_FOLLOWING || + d.startNode.equals(c), k = c.getPosition(d.endNode) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IS_CONTAINED || d.endNode.equals(c), g && k && f.push(c); + return f + } + }; + CKEDITOR.dom.range.mergeRanges = function(a) { + return CKEDITOR.tools.array.reduce(a, function(a, b) { + var c = a[a.length - 1], + d = !1; + b = b.clone(); + b.enlarge(CKEDITOR.ENLARGE_ELEMENT); + if (c) { + var e = new CKEDITOR.dom.range(b.root), + d = new CKEDITOR.dom.walker(e), + f = CKEDITOR.dom.walker.whitespaces(); + e.setStart(c.endContainer, c.endOffset); + e.setEnd(b.startContainer, b.startOffset); + for (e = d.next(); f(e) || b.endContainer.equals(e);) e = d.next(); + d = !e + } + d ? c.setEnd(b.endContainer, b.endOffset) : a.push(b); + return a + }, []) + } + })(); + CKEDITOR.POSITION_AFTER_START = 1; + CKEDITOR.POSITION_BEFORE_END = 2; + CKEDITOR.POSITION_BEFORE_START = 3; + CKEDITOR.POSITION_AFTER_END = 4; + CKEDITOR.ENLARGE_ELEMENT = 1; + CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2; + CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3; + CKEDITOR.ENLARGE_INLINE = 4; + CKEDITOR.START = 1; + CKEDITOR.END = 2; + CKEDITOR.SHRINK_ELEMENT = 1; + CKEDITOR.SHRINK_TEXT = 2; + "use strict"; + (function() { + function a(a) { + 1 > arguments.length || (this.range = a, this.forceBrBreak = 0, this.enlargeBr = 1, this.enforceRealBlocks = 0, this._ || (this._ = {})) + } + + function d(a) { + var b = []; + a.forEach(function(a) { + if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1 + }, CKEDITOR.NODE_ELEMENT, !0); + return b + } + + function b(a, c, f, h) { + a: { + null == h && (h = d(f)); + for (var g; g = h.shift();) + if (g.getDtd().p) { + h = { + element: g, + remaining: h + }; + break a + } h = null + } + if (!h) return 0; + if ((g = CKEDITOR.filter.instances[h.element.data("cke-filter")]) && !g.check(c)) return b(a, + c, f, h.remaining);c = new CKEDITOR.dom.range(h.element);c.selectNodeContents(h.element);c = c.createIterator();c.enlargeBr = a.enlargeBr;c.enforceRealBlocks = a.enforceRealBlocks;c.activeFilter = c.filter = g;a._.nestedEditable = { + element: h.element, + container: f, + remaining: h.remaining, + iterator: c + }; + return 1 + } + + function c(a, b, c) { + if (!b) return !1; + a = a.clone(); + a.collapse(!c); + return a.checkBoundaryOfElement(b, c ? CKEDITOR.START : CKEDITOR.END) + } + var f = /^[\r\n\t ]+$/, + h = CKEDITOR.dom.walker.bookmark(!1, !0), + k = CKEDITOR.dom.walker.whitespaces(!0), + g = function(a) { + return h(a) && k(a) + }, + n = { + dd: 1, + dt: 1, + li: 1 + }; + a.prototype = { + getNextParagraph: function(a) { + var d, k, v, B, D; + a = a || "p"; + if (this._.nestedEditable) { + if (d = this._.nestedEditable.iterator.getNextParagraph(a)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, d; + this.activeFilter = this.filter; + if (b(this, a, this._.nestedEditable.container, this._.nestedEditable.remaining)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, this._.nestedEditable.iterator.getNextParagraph(a); + this._.nestedEditable = + null + } + if (!this.range.root.getDtd()[a]) return null; + if (!this._.started) { + var x = this.range.clone(); + k = x.startPath(); + var m = x.endPath(), + J = !x.collapsed && c(x, k.block), + u = !x.collapsed && c(x, m.block, 1); + x.shrink(CKEDITOR.SHRINK_ELEMENT, !0); + J && x.setStartAt(k.block, CKEDITOR.POSITION_BEFORE_END); + u && x.setEndAt(m.block, CKEDITOR.POSITION_AFTER_START); + k = x.endContainer.hasAscendant("pre", !0) || x.startContainer.hasAscendant("pre", !0); + x.enlarge(this.forceBrBreak && !k || !this.enlargeBr ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS); + x.collapsed || (k = new CKEDITOR.dom.walker(x.clone()), m = CKEDITOR.dom.walker.bookmark(!0, !0), k.evaluator = m, this._.nextNode = k.next(), k = new CKEDITOR.dom.walker(x.clone()), k.evaluator = m, k = k.previous(), this._.lastNode = k.getNextSourceNode(!0, null, x.root), this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(this._.lastNode.getText()) && this._.lastNode.getParent().isBlockBoundary() && (m = this.range.clone(), m.moveToPosition(this._.lastNode, CKEDITOR.POSITION_AFTER_END), m.checkEndOfBlock() && + (m = new CKEDITOR.dom.elementPath(m.endContainer, m.root), this._.lastNode = (m.block || m.blockLimit).getNextSourceNode(!0))), this._.lastNode && x.root.contains(this._.lastNode) || (this._.lastNode = this._.docEndMarker = x.document.createText(""), this._.lastNode.insertAfter(k)), x = null); + this._.started = 1; + k = x + } + m = this._.nextNode; + x = this._.lastNode; + for (this._.nextNode = null; m;) { + var J = 0, + u = m.hasAscendant("pre"), + K = m.type != CKEDITOR.NODE_ELEMENT, + l = 0; + if (K) m.type == CKEDITOR.NODE_TEXT && f.test(m.getText()) && (K = 0); + else { + var t = m.getName(); + if (CKEDITOR.dtd.$block[t] && "false" == m.getAttribute("contenteditable")) { + d = m; + b(this, a, d); + break + } else if (m.isBlockBoundary(this.forceBrBreak && !u && { + br: 1 + })) { + if ("br" == t) K = 1; + else if (!k && !m.getChildCount() && "hr" != t) { + d = m; + v = m.equals(x); + break + } + k && (k.setEndAt(m, CKEDITOR.POSITION_BEFORE_START), "br" != t && (this._.nextNode = m)); + J = 1 + } else { + if (m.getFirst()) { + k || (k = this.range.clone(), k.setStartAt(m, CKEDITOR.POSITION_BEFORE_START)); + m = m.getFirst(); + continue + } + K = 1 + } + } + K && !k && (k = this.range.clone(), k.setStartAt(m, CKEDITOR.POSITION_BEFORE_START)); + v = (!J || K) && m.equals(x); + if (k && !J) + for (; !m.getNext(g) && !v;) { + t = m.getParent(); + if (t.isBlockBoundary(this.forceBrBreak && !u && { + br: 1 + })) { + J = 1; + K = 0; + v || t.equals(x); + k.setEndAt(t, CKEDITOR.POSITION_BEFORE_END); + break + } + m = t; + K = 1; + v = m.equals(x); + l = 1 + } + K && k.setEndAt(m, CKEDITOR.POSITION_AFTER_END); + m = this._getNextSourceNode(m, l, x); + if ((v = !m) || J && k) break + } + if (!d) { + if (!k) return this._.docEndMarker && this._.docEndMarker.remove(), this._.nextNode = null; + d = new CKEDITOR.dom.elementPath(k.startContainer, k.root); + m = d.blockLimit; + J = { + div: 1, + th: 1, + td: 1 + }; + d = d.block; + !d && m && !this.enforceRealBlocks && J[m.getName()] && k.checkStartOfBlock() && k.checkEndOfBlock() && !m.equals(k.root) ? d = m : !d || this.enforceRealBlocks && d.is(n) ? (d = this.range.document.createElement(a), k.extractContents().appendTo(d), d.trim(), k.insertNode(d), B = D = !0) : "li" != d.getName() ? k.checkStartOfBlock() && k.checkEndOfBlock() || (d = d.clone(!1), k.extractContents().appendTo(d), d.trim(), D = k.splitBlock(), B = !D.wasStartOfBlock, D = !D.wasEndOfBlock, k.insertNode(d)) : v || (this._.nextNode = d.equals(x) ? null : this._getNextSourceNode(k.getBoundaryNodes().endNode, + 1, x)) + } + B && (B = d.getPrevious()) && B.type == CKEDITOR.NODE_ELEMENT && ("br" == B.getName() ? B.remove() : B.getLast() && "br" == B.getLast().$.nodeName.toLowerCase() && B.getLast().remove()); + D && (B = d.getLast()) && B.type == CKEDITOR.NODE_ELEMENT && "br" == B.getName() && (!CKEDITOR.env.needsBrFiller || B.getPrevious(h) || B.getNext(h)) && B.remove(); + this._.nextNode || (this._.nextNode = v || d.equals(x) || !x ? null : this._getNextSourceNode(d, 1, x)); + return d + }, + _getNextSourceNode: function(a, b, c) { + function d(a) { + return !(a.equals(c) || a.equals(f)) + } + var f = + this.range.root; + for (a = a.getNextSourceNode(b, null, d); !h(a);) a = a.getNextSourceNode(b, null, d); + return a + } + }; + CKEDITOR.dom.range.prototype.createIterator = function() { + return new a(this) + } + })(); + CKEDITOR.command = function(a, d) { + this.uiItems = []; + this.exec = function(b) { + if (this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed()) return !1; + this.editorFocus && a.focus(); + return !1 === this.fire("exec") ? !0 : !1 !== d.exec.call(this, a, b) + }; + this.refresh = function(a, b) { + if (!this.readOnly && a.readOnly) return !0; + if (this.context && !b.isContextFor(this.context) || !this.checkAllowed(!0)) return this.disable(), !0; + this.startDisabled || this.enable(); + this.modes && !this.modes[a.mode] && this.disable(); + return !1 === this.fire("refresh", { + editor: a, + path: b + }) ? !0 : d.refresh && !1 !== d.refresh.apply(this, arguments) + }; + var b; + this.checkAllowed = function(c) { + return c || "boolean" != typeof b ? b = a.activeFilter.checkFeature(this) : b + }; + CKEDITOR.tools.extend(this, d, { + modes: { + wysiwyg: 1 + }, + editorFocus: 1, + contextSensitive: !!d.context, + state: CKEDITOR.TRISTATE_DISABLED + }); + CKEDITOR.event.call(this) + }; + CKEDITOR.command.prototype = { + enable: function() { + this.state == CKEDITOR.TRISTATE_DISABLED && this.checkAllowed() && this.setState(this.preserveState && "undefined" != typeof this.previousState ? this.previousState : CKEDITOR.TRISTATE_OFF) + }, + disable: function() { + this.setState(CKEDITOR.TRISTATE_DISABLED) + }, + setState: function(a) { + if (this.state == a || a != CKEDITOR.TRISTATE_DISABLED && !this.checkAllowed()) return !1; + this.previousState = this.state; + this.state = a; + this.fire("state"); + return !0 + }, + toggleState: function() { + this.state == CKEDITOR.TRISTATE_OFF ? + this.setState(CKEDITOR.TRISTATE_ON) : this.state == CKEDITOR.TRISTATE_ON && this.setState(CKEDITOR.TRISTATE_OFF) + } + }; + CKEDITOR.event.implementOn(CKEDITOR.command.prototype); + CKEDITOR.ENTER_P = 1; + CKEDITOR.ENTER_BR = 2; + CKEDITOR.ENTER_DIV = 3; + CKEDITOR.config = { + customConfig: "config.js", + autoUpdateElement: !0, + language: "", + defaultLanguage: "en", + contentsLangDirection: "", + enterMode: CKEDITOR.ENTER_P, + forceEnterMode: !1, + shiftEnterMode: CKEDITOR.ENTER_BR, + docType: "\x3c!DOCTYPE html\x3e", + bodyId: "", + bodyClass: "", + fullPage: !1, + height: 200, + contentsCss: CKEDITOR.getUrl("contents.css"), + extraPlugins: "", + removePlugins: "", + protectedSource: [], + tabIndex: 0, + width: "", + baseFloatZIndex: 1E4, + blockedKeystrokes: [CKEDITOR.CTRL + 66, CKEDITOR.CTRL + 73, CKEDITOR.CTRL + 85] + }; + (function() { + function a(a, b, c, d, f) { + var e, w; + a = []; + for (e in b) { + w = b[e]; + w = "boolean" == typeof w ? {} : "function" == typeof w ? { + match: w + } : E(w); + "$" != e.charAt(0) && (w.elements = e); + c && (w.featureName = c.toLowerCase()); + var l = w; + l.elements = k(l.elements, /\s+/) || null; + l.propertiesOnly = l.propertiesOnly || !0 === l.elements; + var p = /\s*,\s*/, + m = void 0; + for (m in P) { + l[m] = k(l[m], p) || null; + var h = l, + t = O[m], + q = k(l[O[m]], p), + A = l[m], + z = [], + g = !0, + H = void 0; + q ? g = !1 : q = {}; + for (H in A) "!" == H.charAt(0) && (H = H.slice(1), z.push(H), q[H] = !0, g = !1); + for (; H = z.pop();) A[H] = + A["!" + H], delete A["!" + H]; + h[t] = (g ? !1 : q) || null + } + l.match = l.match || null; + d.push(w); + a.push(w) + } + b = f.elements; + f = f.generic; + var F; + c = 0; + for (d = a.length; c < d; ++c) { + e = E(a[c]); + w = !0 === e.classes || !0 === e.styles || !0 === e.attributes; + l = e; + m = t = p = void 0; + for (p in P) l[p] = J(l[p]); + h = !0; + for (m in O) { + p = O[m]; + t = l[p]; + q = []; + A = void 0; + for (A in t) - 1 < A.indexOf("*") ? q.push(new RegExp("^" + A.replace(/\*/g, ".*") + "$")) : q.push(A); + t = q; + t.length && (l[p] = t, h = !1) + } + l.nothingRequired = h; + l.noProperties = !(l.attributes || l.classes || l.styles); + if (!0 === e.elements || + null === e.elements) f[w ? "unshift" : "push"](e); + else + for (F in l = e.elements, delete e.elements, l) + if (b[F]) b[F][w ? "unshift" : "push"](e); + else b[F] = [e] + } + } + + function d(a, c, d, f) { + if (!a.match || a.match(c)) + if (f || g(a, c)) + if (a.propertiesOnly || (d.valid = !0), d.allAttributes || (d.allAttributes = b(a.attributes, c.attributes, d.validAttributes)), d.allStyles || (d.allStyles = b(a.styles, c.styles, d.validStyles)), !d.allClasses) { + a = a.classes; + c = c.classes; + f = d.validClasses; + if (a) + if (!0 === a) a = !0; + else { + for (var e = 0, w = c.length, l; e < w; ++e) l = c[e], f[l] || + (f[l] = a(l)); + a = !1 + } + else a = !1; + d.allClasses = a + } + } + + function b(a, b, c) { + if (!a) return !1; + if (!0 === a) return !0; + for (var d in b) c[d] || (c[d] = a(d)); + return !1 + } + + function c(a, b, c) { + if (!a.match || a.match(b)) { + if (a.noProperties) return !1; + c.hadInvalidAttribute = f(a.attributes, b.attributes) || c.hadInvalidAttribute; + c.hadInvalidStyle = f(a.styles, b.styles) || c.hadInvalidStyle; + a = a.classes; + b = b.classes; + if (a) { + for (var d = !1, e = !0 === a, l = b.length; l--;) + if (e || a(b[l])) b.splice(l, 1), d = !0; + a = d + } else a = !1; + c.hadInvalidClass = a || c.hadInvalidClass + } + } + + function f(a, + b) { + if (!a) return !1; + var c = !1, + d = !0 === a, + f; + for (f in b) + if (d || a(f)) delete b[f], c = !0; + return c + } + + function h(a, b, c) { + if (a.disabled || a.customConfig && !c || !b) return !1; + a._.cachedChecks = {}; + return !0 + } + + function k(a, b) { + if (!a) return !1; + if (!0 === a) return a; + if ("string" == typeof a) return a = z(a), "*" == a ? !0 : CKEDITOR.tools.convertArrayToObject(a.split(b)); + if (CKEDITOR.tools.isArray(a)) return a.length ? CKEDITOR.tools.convertArrayToObject(a) : !1; + var c = {}, + d = 0, + f; + for (f in a) c[f] = a[f], d++; + return d ? c : !1 + } + + function g(a, b) { + if (a.nothingRequired) return !0; + var c, d, f, e; + if (f = a.requiredClasses) + for (e = b.classes, c = 0; c < f.length; ++c) + if (d = f[c], "string" == typeof d) { + if (-1 == CKEDITOR.tools.indexOf(e, d)) return !1 + } else if (!CKEDITOR.tools.checkIfAnyArrayItemMatches(e, d)) return !1; + return n(b.styles, a.requiredStyles) && n(b.attributes, a.requiredAttributes) + } + + function n(a, b) { + if (!b) return !0; + for (var c = 0, d; c < b.length; ++c) + if (d = b[c], "string" == typeof d) { + if (!(d in a)) return !1 + } else if (!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a, d)) return !1; + return !0 + } + + function r(a) { + if (!a) return {}; + a = a.split(/\s*,\s*/).sort(); + for (var b = {}; a.length;) b[a.shift()] = "cke-test"; + return b + } + + function e(a) { + var b, c, d, f, e = {}, + l = 1; + for (a = z(a); b = a.match(p);)(c = b[2]) ? (d = y(c, "styles"), f = y(c, "attrs"), c = y(c, "classes")) : d = f = c = null, e["$" + l++] = { + elements: b[1], + classes: c, + styles: d, + attributes: f + }, a = a.slice(b[0].length); + return e + } + + function y(a, b) { + var c = a.match(N[b]); + return c ? z(c[1]) : null + } + + function v(a) { + var b = a.styleBackup = a.attributes.style, + c = a.classBackup = a.attributes["class"]; + a.styles || (a.styles = CKEDITOR.tools.parseCssText(b || + "", 1)); + a.classes || (a.classes = c ? c.split(/\s+/) : []) + } + + function B(a, b, f, e) { + var l = 0, + p; + e.toHtml && (b.name = b.name.replace(w, "$1")); + if (e.doCallbacks && a.elementCallbacks) { + a: { + p = a.elementCallbacks; + for (var h = 0, q = p.length, E; h < q; ++h) + if (E = p[h](b)) { + p = E; + break a + } p = void 0 + } + if (p) return p + } + if (e.doTransform && (p = a._.transformations[b.name])) { + v(b); + for (h = 0; h < p.length; ++h) t(a, b, p[h]); + x(b) + } + if (e.doFilter) { + a: { + h = b.name;q = a._;a = q.allowedRules.elements[h];p = q.allowedRules.generic;h = q.disallowedRules.elements[h];q = q.disallowedRules.generic; + E = e.skipRequired; + var z = { + valid: !1, + validAttributes: {}, + validClasses: {}, + validStyles: {}, + allAttributes: !1, + allClasses: !1, + allStyles: !1, + hadInvalidAttribute: !1, + hadInvalidClass: !1, + hadInvalidStyle: !1 + }, + g, k; + if (a || p) { + v(b); + if (h) + for (g = 0, k = h.length; g < k; ++g) + if (!1 === c(h[g], b, z)) { + a = null; + break a + } if (q) + for (g = 0, k = q.length; g < k; ++g) c(q[g], b, z); + if (a) + for (g = 0, k = a.length; g < k; ++g) d(a[g], b, z, E); + if (p) + for (g = 0, k = p.length; g < k; ++g) d(p[g], b, z, E); + a = z + } else a = null + } + if (!a || !a.valid) return f.push(b), + 1;k = a.validAttributes; + var H = a.validStyles; + p = a.validClasses; + var h = b.attributes, + F = b.styles, + q = b.classes;E = b.classBackup; + var L = b.styleBackup, + G, N, C = [], + z = [], + O = /^data-cke-/;g = !1;delete h.style;delete h["class"];delete b.classBackup;delete b.styleBackup; + if (!a.allAttributes) + for (G in h) k[G] || (O.test(G) ? G == (N = G.replace(/^data-cke-saved-/, "")) || k[N] || (delete h[G], g = !0) : (delete h[G], g = !0)); + if (!a.allStyles || a.hadInvalidStyle) { + for (G in F) a.allStyles || H[G] ? C.push(G + ":" + F[G]) : g = !0; + C.length && (h.style = C.sort().join("; ")) + } else L && (h.style = L); + if (!a.allClasses || + a.hadInvalidClass) { + for (G = 0; G < q.length; ++G)(a.allClasses || p[q[G]]) && z.push(q[G]); + z.length && (h["class"] = z.sort().join(" ")); + E && z.length < E.split(/\s+/).length && (g = !0) + } else E && (h["class"] = E);g && (l = 1); + if (!e.skipFinalValidation && !m(b)) return f.push(b), + 1 + } + e.toHtml && (b.name = b.name.replace(A, "cke:$1")); + return l + } + + function D(a) { + var b = [], + c; + for (c in a) - 1 < c.indexOf("*") && b.push(c.replace(/\*/g, ".*")); + return b.length ? new RegExp("^(?:" + b.join("|") + ")$") : null + } + + function x(a) { + var b = a.attributes, + c; + delete b.style; + delete b["class"]; + if (c = CKEDITOR.tools.writeCssText(a.styles, !0)) b.style = c; + a.classes.length && (b["class"] = a.classes.sort().join(" ")) + } + + function m(a) { + switch (a.name) { + case "a": + if (!(a.children.length || a.attributes.name || a.attributes.id)) return !1; + break; + case "img": + if (!a.attributes.src) return !1 + } + return !0 + } + + function J(a) { + if (!a) return !1; + if (!0 === a) return !0; + var b = D(a); + return function(c) { + return c in a || b && c.match(b) + } + } + + function u() { + return new CKEDITOR.htmlParser.element("br") + } + + function K(a) { + return a.type == CKEDITOR.NODE_ELEMENT && ("br" == + a.name || q.$block[a.name]) + } + + function l(a, b, c) { + var d = a.name; + if (q.$empty[d] || !a.children.length) "hr" == d && "br" == b ? a.replaceWith(u()) : (a.parent && c.push({ + check: "it", + el: a.parent + }), a.remove()); + else if (q.$block[d] || "tr" == d) + if ("br" == b) a.previous && !K(a.previous) && (b = u(), b.insertBefore(a)), a.next && !K(a.next) && (b = u(), b.insertAfter(a)), a.replaceWithChildren(); + else { + var d = a.children, + f; + b: { + f = q[b]; + for (var e = 0, l = d.length, w; e < l; ++e) + if (w = d[e], w.type == CKEDITOR.NODE_ELEMENT && !f[w.name]) { + f = !1; + break b + } f = !0 + } + if (f) a.name = b, a.attributes = {}, c.push({ + check: "parent-down", + el: a + }); + else { + f = a.parent; + for (var e = f.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || "body" == f.name, p, h, l = d.length; 0 < l;) w = d[--l], e && (w.type == CKEDITOR.NODE_TEXT || w.type == CKEDITOR.NODE_ELEMENT && q.$inline[w.name]) ? (p || (p = new CKEDITOR.htmlParser.element(b), p.insertAfter(a), c.push({ + check: "parent-down", + el: p + })), p.add(w, 0)) : (p = null, h = q[f.name] || q.span, w.insertAfter(a), f.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || w.type != CKEDITOR.NODE_ELEMENT || h[w.name] || c.push({ + check: "el-up", + el: w + })); + a.remove() + } + } + else d in { + style: 1, + script: 1 + } ? a.remove() : (a.parent && c.push({ + check: "it", + el: a.parent + }), a.replaceWithChildren()) + } + + function t(a, b, c) { + var d, f; + for (d = 0; d < c.length; ++d) + if (f = c[d], !(f.check && !a.check(f.check, !1) || f.left && !f.left(b))) { + f.right(b, G); + break + } + } + + function F(a, b) { + var c = b.getDefinition(), + d = c.attributes, + f = c.styles, + e, l, w, p; + if (a.name != c.element) return !1; + for (e in d) + if ("class" == e) + for (c = d[e].split(/\s+/), w = a.classes.join("|"); p = c.pop();) { + if (-1 == w.indexOf(p)) return !1 + } else if (a.attributes[e] != d[e]) return !1; + for (l in f) + if (a.styles[l] != + f[l]) return !1; + return !0 + } + + function L(a, b) { + var c, d; + "string" == typeof a ? c = a : a instanceof CKEDITOR.style ? d = a : (c = a[0], d = a[1]); + return [{ + element: c, + left: d, + right: function(a, c) { + c.transform(a, b) + } + }] + } + + function C(a) { + return function(b) { + return F(b, a) + } + } + + function M(a) { + return function(b, c) { + c[a](b) + } + } + var q = CKEDITOR.dtd, + E = CKEDITOR.tools.copy, + z = CKEDITOR.tools.trim, + H = ["", "p", "br", "div"]; + CKEDITOR.FILTER_SKIP_TREE = 2; + CKEDITOR.filter = function(a) { + this.allowedContent = []; + this.disallowedContent = []; + this.elementCallbacks = null; + this.disabled = !1; + this.editor = null; + this.id = CKEDITOR.tools.getNextNumber(); + this._ = { + allowedRules: { + elements: {}, + generic: [] + }, + disallowedRules: { + elements: {}, + generic: [] + }, + transformations: {}, + cachedTests: {}, + cachedChecks: {} + }; + CKEDITOR.filter.instances[this.id] = this; + if (a instanceof CKEDITOR.editor) { + a = this.editor = a; + this.customConfig = !0; + var b = a.config.allowedContent; + !0 === b ? this.disabled = !0 : (b || (this.customConfig = !1), this.allow(b, "config", 1), this.allow(a.config.extraAllowedContent, "extra", 1), this.allow(H[a.enterMode] + " " + H[a.shiftEnterMode], + "default", 1), this.disallow(a.config.disallowedContent)) + } else this.customConfig = !1, this.allow(a, "default", 1) + }; + CKEDITOR.filter.instances = {}; + CKEDITOR.filter.prototype = { + allow: function(b, c, d) { + if (!h(this, b, d)) return !1; + var f, l; + if ("string" == typeof b) b = e(b); + else if (b instanceof CKEDITOR.style) { + if (b.toAllowedContentRules) return this.allow(b.toAllowedContentRules(this.editor), c, d); + f = b.getDefinition(); + b = {}; + d = f.attributes; + b[f.element] = f = { + styles: f.styles, + requiredStyles: f.styles && CKEDITOR.tools.objectKeys(f.styles) + }; + d && (d = E(d), f.classes = d["class"] ? d["class"].split(/\s+/) : null, f.requiredClasses = f.classes, delete d["class"], f.attributes = d, f.requiredAttributes = d && CKEDITOR.tools.objectKeys(d)) + } else if (CKEDITOR.tools.isArray(b)) { + for (f = 0; f < b.length; ++f) l = this.allow(b[f], c, d); + return l + } + a(this, b, c, this.allowedContent, this._.allowedRules); + return !0 + }, + applyTo: function(a, b, c, d) { + if (this.disabled) return !1; + var f = this, + e = [], + w = this.editor && this.editor.config.protectedSource, + p, h = !1, + t = { + doFilter: !c, + doTransform: !0, + doCallbacks: !0, + toHtml: b + }; + a.forEach(function(a) { + if (a.type == CKEDITOR.NODE_ELEMENT) { + if ("off" == a.attributes["data-cke-filter"]) return !1; + if (!b || "span" != a.name || !~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-")) + if (p = B(f, a, e, t), p & 1) h = !0; + else if (p & 2) return !1 + } else if (a.type == CKEDITOR.NODE_COMMENT && a.value.match(/^\{cke_protected\}(?!\{C\})/)) { + var c; + a: { + var d = decodeURIComponent(a.value.replace(/^\{cke_protected\}/, ""));c = []; + var l, m, q; + if (w) + for (m = 0; m < w.length; ++m) + if ((q = d.match(w[m])) && q[0].length == d.length) { + c = !0; + break a + } d = CKEDITOR.htmlParser.fragment.fromHtml(d);1 == d.children.length && (l = d.children[0]).type == CKEDITOR.NODE_ELEMENT && B(f, l, c, t);c = !c.length + } + c || e.push(a) + } + }, null, !0); + e.length && (h = !0); + var E; + a = []; + d = H[d || (this.editor ? this.editor.enterMode : CKEDITOR.ENTER_P)]; + for (var z; c = e.pop();) c.type == CKEDITOR.NODE_ELEMENT ? l(c, d, a) : c.remove(); + for (; E = a.pop();) + if (c = E.el, c.parent) switch (z = q[c.parent.name] || q.span, E.check) { + case "it": + q.$removeEmpty[c.name] && !c.children.length ? l(c, d, a) : m(c) || l(c, d, a); + break; + case "el-up": + c.parent.type == + CKEDITOR.NODE_DOCUMENT_FRAGMENT || z[c.name] || l(c, d, a); + break; + case "parent-down": + c.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || z[c.name] || l(c.parent, d, a) + } + return h + }, + checkFeature: function(a) { + if (this.disabled || !a) return !0; + a.toFeature && (a = a.toFeature(this.editor)); + return !a.requiredContent || this.check(a.requiredContent) + }, + disable: function() { + this.disabled = !0 + }, + disallow: function(b) { + if (!h(this, b, !0)) return !1; + "string" == typeof b && (b = e(b)); + a(this, b, null, this.disallowedContent, this._.disallowedRules); + return !0 + }, + addContentForms: function(a) { + if (!this.disabled && a) { + var b, c, d = [], + f; + for (b = 0; b < a.length && !f; ++b) c = a[b], ("string" == typeof c || c instanceof CKEDITOR.style) && this.check(c) && (f = c); + if (f) { + for (b = 0; b < a.length; ++b) d.push(L(a[b], f)); + this.addTransformations(d) + } + } + }, + addElementCallback: function(a) { + this.elementCallbacks || (this.elementCallbacks = []); + this.elementCallbacks.push(a) + }, + addFeature: function(a) { + if (this.disabled || !a) return !0; + a.toFeature && (a = a.toFeature(this.editor)); + this.allow(a.allowedContent, a.name); + this.addTransformations(a.contentTransformations); + this.addContentForms(a.contentForms); + return a.requiredContent && (this.customConfig || this.disallowedContent.length) ? this.check(a.requiredContent) : !0 + }, + addTransformations: function(a) { + var b, c; + if (!this.disabled && a) { + var d = this._.transformations, + f; + for (f = 0; f < a.length; ++f) { + b = a[f]; + var e = void 0, + l = void 0, + w = void 0, + p = void 0, + h = void 0, + m = void 0; + c = []; + for (l = 0; l < b.length; ++l) w = b[l], "string" == typeof w ? (w = w.split(/\s*:\s*/), p = w[0], h = null, m = w[1]) : (p = w.check, h = w.left, m = w.right), e || (e = w, e = e.element ? e.element : p ? p.match(/^([a-z0-9]+)/i)[0] : + e.left.getDefinition().element), h instanceof CKEDITOR.style && (h = C(h)), c.push({ + check: p == e ? null : p, + left: h, + right: "string" == typeof m ? M(m) : m + }); + b = e; + d[b] || (d[b] = []); + d[b].push(c) + } + } + }, + check: function(a, b, c) { + if (this.disabled) return !0; + if (CKEDITOR.tools.isArray(a)) { + for (var d = a.length; d--;) + if (this.check(a[d], b, c)) return !0; + return !1 + } + var f, w; + if ("string" == typeof a) { + w = a + "\x3c" + (!1 === b ? "0" : "1") + (c ? "1" : "0") + "\x3e"; + if (w in this._.cachedChecks) return this._.cachedChecks[w]; + f = e(a).$1; + var l = f.styles, + d = f.classes; + f.name = f.elements; + f.classes = d = d ? d.split(/\s*,\s*/) : []; + f.styles = r(l); + f.attributes = r(f.attributes); + f.children = []; + d.length && (f.attributes["class"] = d.join(" ")); + l && (f.attributes.style = CKEDITOR.tools.writeCssText(f.styles)) + } else f = a.getDefinition(), l = f.styles, d = f.attributes || {}, l && !CKEDITOR.tools.isEmpty(l) ? (l = E(l), d.style = CKEDITOR.tools.writeCssText(l, !0)) : l = {}, f = { + name: f.element, + attributes: d, + classes: d["class"] ? d["class"].split(/\s+/) : [], + styles: l, + children: [] + }; + var l = CKEDITOR.tools.clone(f), + p = [], + h; + if (!1 !== b && (h = this._.transformations[f.name])) { + for (d = + 0; d < h.length; ++d) t(this, f, h[d]); + x(f) + } + B(this, l, p, { + doFilter: !0, + doTransform: !1 !== b, + skipRequired: !c, + skipFinalValidation: !c + }); + 0 < p.length ? c = !1 : ((b = f.attributes["class"]) && (f.attributes["class"] = f.attributes["class"].split(" ").sort().join(" ")), c = CKEDITOR.tools.objectCompare(f.attributes, l.attributes, !0), b && (f.attributes["class"] = b)); + "string" == typeof a && (this._.cachedChecks[w] = c); + return c + }, + getAllowedEnterMode: function() { + var a = ["p", "div", "br"], + b = { + p: CKEDITOR.ENTER_P, + div: CKEDITOR.ENTER_DIV, + br: CKEDITOR.ENTER_BR + }; + return function(c, d) { + var f = a.slice(), + e; + if (this.check(H[c])) return c; + for (d || (f = f.reverse()); e = f.pop();) + if (this.check(e)) return b[e]; + return CKEDITOR.ENTER_BR + } + }(), + clone: function() { + var a = new CKEDITOR.filter, + b = CKEDITOR.tools.clone; + a.allowedContent = b(this.allowedContent); + a._.allowedRules = b(this._.allowedRules); + a.disallowedContent = b(this.disallowedContent); + a._.disallowedRules = b(this._.disallowedRules); + a._.transformations = b(this._.transformations); + a.disabled = this.disabled; + a.editor = this.editor; + return a + }, + destroy: function() { + delete CKEDITOR.filter.instances[this.id]; + delete this._; + delete this.allowedContent; + delete this.disallowedContent + } + }; + var P = { + styles: 1, + attributes: 1, + classes: 1 + }, + O = { + styles: "requiredStyles", + attributes: "requiredAttributes", + classes: "requiredClasses" + }, + p = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i, + N = { + styles: /{([^}]+)}/, + attrs: /\[([^\]]+)\]/, + classes: /\(([^\)]+)\)/ + }, + w = /^cke:(object|embed|param)$/, + A = /^(object|embed|param)$/, + G; + G = CKEDITOR.filter.transformationsTools = { + sizeToStyle: function(a) { + this.lengthToStyle(a, + "width"); + this.lengthToStyle(a, "height") + }, + sizeToAttribute: function(a) { + this.lengthToAttribute(a, "width"); + this.lengthToAttribute(a, "height") + }, + lengthToStyle: function(a, b, c) { + c = c || b; + if (!(c in a.styles)) { + var d = a.attributes[b]; + d && (/^\d+$/.test(d) && (d += "px"), a.styles[c] = d) + } + delete a.attributes[b] + }, + lengthToAttribute: function(a, b, c) { + c = c || b; + if (!(c in a.attributes)) { + var d = a.styles[b], + f = d && d.match(/^(\d+)(?:\.\d*)?px$/); + f ? a.attributes[c] = f[1] : "cke-test" == d && (a.attributes[c] = "cke-test") + } + delete a.styles[b] + }, + alignmentToStyle: function(a) { + if (!("float" in + a.styles)) { + var b = a.attributes.align; + if ("left" == b || "right" == b) a.styles["float"] = b + } + delete a.attributes.align + }, + alignmentToAttribute: function(a) { + if (!("align" in a.attributes)) { + var b = a.styles["float"]; + if ("left" == b || "right" == b) a.attributes.align = b + } + delete a.styles["float"] + }, + splitBorderShorthand: function(a) { + if (a.styles.border) { + var b = CKEDITOR.tools.style.parse.border(a.styles.border); + b.color && (a.styles["border-color"] = b.color); + b.style && (a.styles["border-style"] = b.style); + b.width && (a.styles["border-width"] = b.width); + delete a.styles.border + } + }, + listTypeToStyle: function(a) { + if (a.attributes.type) switch (a.attributes.type) { + case "a": + a.styles["list-style-type"] = "lower-alpha"; + break; + case "A": + a.styles["list-style-type"] = "upper-alpha"; + break; + case "i": + a.styles["list-style-type"] = "lower-roman"; + break; + case "I": + a.styles["list-style-type"] = "upper-roman"; + break; + case "1": + a.styles["list-style-type"] = "decimal"; + break; + default: + a.styles["list-style-type"] = a.attributes.type + } + }, + splitMarginShorthand: function(a) { + function b(d) { + a.styles["margin-top"] = + c[d[0]]; + a.styles["margin-right"] = c[d[1]]; + a.styles["margin-bottom"] = c[d[2]]; + a.styles["margin-left"] = c[d[3]] + } + if (a.styles.margin) { + var c = a.styles.margin.match(/(\-?[\.\d]+\w+)/g) || ["0px"]; + switch (c.length) { + case 1: + b([0, 0, 0, 0]); + break; + case 2: + b([0, 1, 0, 1]); + break; + case 3: + b([0, 1, 2, 1]); + break; + case 4: + b([0, 1, 2, 3]) + } + delete a.styles.margin + } + }, + matchesStyle: F, + transform: function(a, b) { + if ("string" == typeof b) a.name = b; + else { + var c = b.getDefinition(), + d = c.styles, + f = c.attributes, + e, l, w, p; + a.name = c.element; + for (e in f) + if ("class" == e) + for (c = + a.classes.join("|"), w = f[e].split(/\s+/); p = w.pop();) - 1 == c.indexOf(p) && a.classes.push(p); + else a.attributes[e] = f[e]; + for (l in d) a.styles[l] = d[l] + } + } + } + })(); + (function() { + CKEDITOR.focusManager = function(a) { + if (a.focusManager) return a.focusManager; + this.hasFocus = !1; + this.currentActive = null; + this._ = { + editor: a + }; + return this + }; + CKEDITOR.focusManager._ = { + blurDelay: 200 + }; + CKEDITOR.focusManager.prototype = { + focus: function(a) { + this._.timer && clearTimeout(this._.timer); + a && (this.currentActive = a); + this.hasFocus || this._.locked || ((a = CKEDITOR.currentInstance) && a.focusManager.blur(1), this.hasFocus = !0, (a = this._.editor.container) && a.addClass("cke_focus"), this._.editor.fire("focus")) + }, + lock: function() { + this._.locked = + 1 + }, + unlock: function() { + delete this._.locked + }, + blur: function(a) { + function d() { + if (this.hasFocus) { + this.hasFocus = !1; + var a = this._.editor.container; + a && a.removeClass("cke_focus"); + this._.editor.fire("blur") + } + } + if (!this._.locked) { + this._.timer && clearTimeout(this._.timer); + var b = CKEDITOR.focusManager._.blurDelay; + a || !b ? d.call(this) : this._.timer = CKEDITOR.tools.setTimeout(function() { + delete this._.timer; + d.call(this) + }, b, this) + } + }, + add: function(a, d) { + var b = a.getCustomData("focusmanager"); + if (!b || b != this) { + b && b.remove(a); + var b = + "focus", + c = "blur"; + d && (CKEDITOR.env.ie ? (b = "focusin", c = "focusout") : CKEDITOR.event.useCapture = 1); + var f = { + blur: function() { + a.equals(this.currentActive) && this.blur() + }, + focus: function() { + this.focus(a) + } + }; + a.on(b, f.focus, this); + a.on(c, f.blur, this); + d && (CKEDITOR.event.useCapture = 0); + a.setCustomData("focusmanager", this); + a.setCustomData("focusmanager_handlers", f) + } + }, + remove: function(a) { + a.removeCustomData("focusmanager"); + var d = a.removeCustomData("focusmanager_handlers"); + a.removeListener("blur", d.blur); + a.removeListener("focus", + d.focus) + } + } + })(); + CKEDITOR.keystrokeHandler = function(a) { + if (a.keystrokeHandler) return a.keystrokeHandler; + this.keystrokes = {}; + this.blockedKeystrokes = {}; + this._ = { + editor: a + }; + return this + }; + (function() { + var a, d = function(b) { + b = b.data; + var d = b.getKeystroke(), + h = this.keystrokes[d], + k = this._.editor; + a = !1 === k.fire("key", { + keyCode: d, + domEvent: b + }); + a || (h && (a = !1 !== k.execCommand(h, { + from: "keystrokeHandler" + })), a || (a = !!this.blockedKeystrokes[d])); + a && b.preventDefault(!0); + return !a + }, + b = function(b) { + a && (a = !1, b.data.preventDefault(!0)) + }; + CKEDITOR.keystrokeHandler.prototype = { + attach: function(a) { + a.on("keydown", d, this); + if (CKEDITOR.env.gecko && CKEDITOR.env.mac) a.on("keypress", b, this) + } + } + })(); + (function() { + CKEDITOR.lang = { + languages: { + af: 1, + ar: 1, + az: 1, + bg: 1, + bn: 1, + bs: 1, + ca: 1, + cs: 1, + cy: 1, + da: 1, + de: 1, + "de-ch": 1, + el: 1, + "en-au": 1, + "en-ca": 1, + "en-gb": 1, + en: 1, + eo: 1, + es: 1, + "es-mx": 1, + et: 1, + eu: 1, + fa: 1, + fi: 1, + fo: 1, + "fr-ca": 1, + fr: 1, + gl: 1, + gu: 1, + he: 1, + hi: 1, + hr: 1, + hu: 1, + id: 1, + is: 1, + it: 1, + ja: 1, + ka: 1, + km: 1, + ko: 1, + ku: 1, + lt: 1, + lv: 1, + mk: 1, + mn: 1, + ms: 1, + nb: 1, + nl: 1, + no: 1, + oc: 1, + pl: 1, + "pt-br": 1, + pt: 1, + ro: 1, + ru: 1, + si: 1, + sk: 1, + sl: 1, + sq: 1, + "sr-latn": 1, + sr: 1, + sv: 1, + th: 1, + tr: 1, + tt: 1, + ug: 1, + uk: 1, + vi: 1, + "zh-cn": 1, + zh: 1 + }, + rtl: { + ar: 1, + fa: 1, + he: 1, + ku: 1, + ug: 1 + }, + load: function(a, d, b) { + a && CKEDITOR.lang.languages[a] || + (a = this.detect(d, a)); + var c = this; + d = function() { + c[a].dir = c.rtl[a] ? "rtl" : "ltr"; + b(a, c[a]) + }; + this[a] ? d() : CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/" + a + ".js"), d, this) + }, + detect: function(a, d) { + var b = this.languages; + d = d || navigator.userLanguage || navigator.language || a; + var c = d.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/), + f = c[1], + c = c[2]; + b[f + "-" + c] ? f = f + "-" + c : b[f] || (f = null); + CKEDITOR.lang.detect = f ? function() { + return f + } : function(a) { + return a + }; + return f || a + } + } + })(); + CKEDITOR.scriptLoader = function() { + var a = {}, + d = {}; + return { + load: function(b, c, f, h) { + var k = "string" == typeof b; + k && (b = [b]); + f || (f = CKEDITOR); + var g = b.length, + n = [], + r = [], + e = function(a) { + c && (k ? c.call(f, a) : c.call(f, n, r)) + }; + if (0 === g) e(!0); + else { + var y = function(a, b) { + (b ? n : r).push(a); + 0 >= --g && (h && CKEDITOR.document.getDocumentElement().removeStyle("cursor"), e(b)) + }, + v = function(b, c) { + a[b] = 1; + var f = d[b]; + delete d[b]; + for (var e = 0; e < f.length; e++) f[e](b, c) + }, + B = function(b) { + if (a[b]) y(b, !0); + else { + var f = d[b] || (d[b] = []); + f.push(y); + if (!(1 < f.length)) { + var e = + new CKEDITOR.dom.element("script"); + e.setAttributes({ + type: "text/javascript", + src: b + }); + c && (CKEDITOR.env.ie && (8 >= CKEDITOR.env.version || CKEDITOR.env.ie9Compat) ? e.$.onreadystatechange = function() { + if ("loaded" == e.$.readyState || "complete" == e.$.readyState) e.$.onreadystatechange = null, v(b, !0) + } : (e.$.onload = function() { + setTimeout(function() { + v(b, !0) + }, 0) + }, e.$.onerror = function() { + v(b, !1) + })); + e.appendTo(CKEDITOR.document.getHead()) + } + } + }; + h && CKEDITOR.document.getDocumentElement().setStyle("cursor", "wait"); + for (var D = 0; D < g; D++) B(b[D]) + } + }, + queue: function() { + function a() { + var b; + (b = c[0]) && this.load(b.scriptUrl, b.callback, CKEDITOR, 0) + } + var c = []; + return function(d, h) { + var k = this; + c.push({ + scriptUrl: d, + callback: function() { + h && h.apply(this, arguments); + c.shift(); + a.call(k) + } + }); + 1 == c.length && a.call(this) + } + }() + } + }(); + CKEDITOR.resourceManager = function(a, d) { + this.basePath = a; + this.fileName = d; + this.registered = {}; + this.loaded = {}; + this.externals = {}; + this._ = { + waitingList: {} + } + }; + CKEDITOR.resourceManager.prototype = { + add: function(a, d) { + if (this.registered[a]) throw Error('[CKEDITOR.resourceManager.add] The resource name "' + a + '" is already registered.'); + var b = this.registered[a] = d || {}; + b.name = a; + b.path = this.getPath(a); + CKEDITOR.fire(a + CKEDITOR.tools.capitalize(this.fileName) + "Ready", b); + return this.get(a) + }, + get: function(a) { + return this.registered[a] || null + }, + getPath: function(a) { + var d = this.externals[a]; + return CKEDITOR.getUrl(d && d.dir || this.basePath + a + "/") + }, + getFilePath: function(a) { + var d = this.externals[a]; + return CKEDITOR.getUrl(this.getPath(a) + (d ? d.file : this.fileName + ".js")) + }, + addExternal: function(a, d, b) { + a = a.split(","); + for (var c = 0; c < a.length; c++) { + var f = a[c]; + b || (d = d.replace(/[^\/]+$/, function(a) { + b = a; + return "" + })); + this.externals[f] = { + dir: d, + file: b || this.fileName + ".js" + } + } + }, + load: function(a, d, b) { + CKEDITOR.tools.isArray(a) || (a = a ? [a] : []); + for (var c = this.loaded, f = this.registered, h = [], k = {}, g = {}, n = 0; n < a.length; n++) { + var r = a[n]; + if (r) + if (c[r] || f[r]) g[r] = this.get(r); + else { + var e = this.getFilePath(r); + h.push(e); + e in k || (k[e] = []); + k[e].push(r) + } + } + CKEDITOR.scriptLoader.load(h, function(a, f) { + if (f.length) throw Error('[CKEDITOR.resourceManager.load] Resource name "' + k[f[0]].join(",") + '" was not found at "' + f[0] + '".'); + for (var e = 0; e < a.length; e++) + for (var h = k[a[e]], n = 0; n < h.length; n++) { + var m = h[n]; + g[m] = this.get(m); + c[m] = 1 + } + d.call(b, g) + }, this) + } + }; + CKEDITOR.plugins = new CKEDITOR.resourceManager("plugins/", "plugin"); + CKEDITOR.plugins.load = CKEDITOR.tools.override(CKEDITOR.plugins.load, function(a) { + var d = {}; + return function(b, c, f) { + var h = {}, + k = function(b) { + a.call(this, b, function(a) { + CKEDITOR.tools.extend(h, a); + var b = [], + e; + for (e in a) { + var g = a[e], + v = g && g.requires; + if (!d[e]) { + if (g.icons) + for (var B = g.icons.split(","), D = B.length; D--;) CKEDITOR.skin.addIcon(B[D], g.path + "icons/" + (CKEDITOR.env.hidpi && g.hidpi ? "hidpi/" : "") + B[D] + ".png"); + d[e] = 1 + } + if (v) + for (v.split && (v = v.split(",")), g = 0; g < v.length; g++) h[v[g]] || b.push(v[g]) + } + if (b.length) k.call(this, + b); + else { + for (e in h) g = h[e], g.onLoad && !g.onLoad._called && (!1 === g.onLoad() && delete h[e], g.onLoad._called = 1); + c && c.call(f || window, h) + } + }, this) + }; + k.call(this, b) + } + }); + CKEDITOR.plugins.setLang = function(a, d, b) { + var c = this.get(a); + a = c.langEntries || (c.langEntries = {}); + c = c.lang || (c.lang = []); + c.split && (c = c.split(",")); - 1 == CKEDITOR.tools.indexOf(c, d) && c.push(d); + a[d] = b + }; + CKEDITOR.ui = function(a) { + if (a.ui) return a.ui; + this.items = {}; + this.instances = {}; + this.editor = a; + this._ = { + handlers: {} + }; + return this + }; + CKEDITOR.ui.prototype = { + add: function(a, d, b) { + b.name = a.toLowerCase(); + var c = this.items[a] = { + type: d, + command: b.command || null, + args: Array.prototype.slice.call(arguments, 2) + }; + CKEDITOR.tools.extend(c, b) + }, + get: function(a) { + return this.instances[a] + }, + create: function(a) { + var d = this.items[a], + b = d && this._.handlers[d.type], + c = d && d.command && this.editor.getCommand(d.command), + b = b && b.create.apply(this, d.args); + this.instances[a] = b; + c && c.uiItems.push(b); + b && !b.type && (b.type = d.type); + return b + }, + addHandler: function(a, d) { + this._.handlers[a] = + d + }, + space: function(a) { + return CKEDITOR.document.getById(this.spaceId(a)) + }, + spaceId: function(a) { + return this.editor.id + "_" + a + } + }; + CKEDITOR.event.implementOn(CKEDITOR.ui); + (function() { + function a(a, f, e) { + CKEDITOR.event.call(this); + a = a && CKEDITOR.tools.clone(a); + if (void 0 !== f) { + if (!(f instanceof CKEDITOR.dom.element)) throw Error("Expect element of type CKEDITOR.dom.element."); + if (!e) throw Error("One of the element modes must be specified."); + if (CKEDITOR.env.ie && CKEDITOR.env.quirks && e == CKEDITOR.ELEMENT_MODE_INLINE) throw Error("Inline element mode is not supported on IE quirks."); + if (!b(f, e)) throw Error('The specified element mode is not supported on element: "' + f.getName() + '".'); + this.element = f; + this.elementMode = e; + this.name = this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO && (f.getId() || f.getNameAtt()) + } else this.elementMode = CKEDITOR.ELEMENT_MODE_NONE; + this._ = {}; + this.commands = {}; + this.templates = {}; + this.name = this.name || d(); + this.id = CKEDITOR.tools.getNextId(); + this.status = "unloaded"; + this.config = CKEDITOR.tools.prototypedCopy(CKEDITOR.config); + this.ui = new CKEDITOR.ui(this); + this.focusManager = new CKEDITOR.focusManager(this); + this.keystrokeHandler = new CKEDITOR.keystrokeHandler(this); + this.on("readOnly", + c); + this.on("selectionChange", function(a) { + h(this, a.data.path) + }); + this.on("activeFilterChange", function() { + h(this, this.elementPath(), !0) + }); + this.on("mode", c); + this.on("instanceReady", function() { + if (this.config.startupFocus) { + if ("end" === this.config.startupFocus) { + var a = this.createRange(); + a.selectNodeContents(this.editable()); + a.shrink(CKEDITOR.SHRINK_ELEMENT, !0); + a.collapse(); + this.getSelection().selectRanges([a]) + } + this.focus() + } + }); + CKEDITOR.fire("instanceCreated", null, this); + CKEDITOR.add(this); + CKEDITOR.tools.setTimeout(function() { + "destroyed" !== + this.status ? g(this, a) : CKEDITOR.warn("editor-incorrect-destroy") + }, 0, this) + } + + function d() { + do var a = "editor" + ++D; while (CKEDITOR.instances[a]); + return a + } + + function b(a, b) { + return b == CKEDITOR.ELEMENT_MODE_INLINE ? a.is(CKEDITOR.dtd.$editable) || a.is("textarea") : b == CKEDITOR.ELEMENT_MODE_REPLACE ? !a.is(CKEDITOR.dtd.$nonBodyContent) : 1 + } + + function c() { + var a = this.commands, + b; + for (b in a) f(this, a[b]) + } + + function f(a, b) { + b[b.startDisabled ? "disable" : a.readOnly && !b.readOnly ? "disable" : b.modes[a.mode] ? "enable" : "disable"]() + } + + function h(a, + b, c) { + if (b) { + var d, f, e = a.commands; + for (f in e) d = e[f], (c || d.contextSensitive) && d.refresh(a, b) + } + } + + function k(a) { + var b = a.config.customConfig; + if (!b) return !1; + var b = CKEDITOR.getUrl(b), + c = x[b] || (x[b] = {}); + c.fn ? (c.fn.call(a, a.config), CKEDITOR.getUrl(a.config.customConfig) != b && k(a) || a.fireOnce("customConfigLoaded")) : CKEDITOR.scriptLoader.queue(b, function() { + c.fn = CKEDITOR.editorConfig ? CKEDITOR.editorConfig : function() {}; + k(a) + }); + return !0 + } + + function g(a, b) { + a.on("customConfigLoaded", function() { + if (b) { + if (b.on) + for (var c in b.on) a.on(c, + b.on[c]); + CKEDITOR.tools.extend(a.config, b, !0); + delete a.config.on + } + c = a.config; + a.readOnly = c.readOnly ? !0 : a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.is("textarea") ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : a.element.isReadOnly() : a.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : !1; + a.blockless = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? !(a.element.is("textarea") || CKEDITOR.dtd[a.element.getName()].p) : + !1; + a.tabIndex = c.tabIndex || a.element && a.element.getAttribute("tabindex") || 0; + a.activeEnterMode = a.enterMode = a.blockless ? CKEDITOR.ENTER_BR : c.enterMode; + a.activeShiftEnterMode = a.shiftEnterMode = a.blockless ? CKEDITOR.ENTER_BR : c.shiftEnterMode; + c.skin && (CKEDITOR.skinName = c.skin); + a.fireOnce("configLoaded"); + a.dataProcessor = new CKEDITOR.htmlDataProcessor(a); + a.filter = a.activeFilter = new CKEDITOR.filter(a); + n(a) + }); + b && null != b.customConfig && (a.config.customConfig = b.customConfig); + k(a) || a.fireOnce("customConfigLoaded") + } + + function n(a) { + CKEDITOR.skin.loadPart("editor", function() { + r(a) + }) + } + + function r(a) { + CKEDITOR.lang.load(a.config.language, a.config.defaultLanguage, function(b, c) { + var d = a.config.title; + a.langCode = b; + a.lang = CKEDITOR.tools.prototypedCopy(c); + a.title = "string" == typeof d || !1 === d ? d : [a.lang.editor, a.name].join(", "); + a.config.contentsLangDirection || (a.config.contentsLangDirection = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.getDirection(1) : a.lang.dir); + a.fire("langLoaded"); + e(a) + }) + } + + function e(a) { + a.getStylesSet(function(b) { + a.once("loaded", + function() { + a.fire("stylesSet", { + styles: b + }) + }, null, null, 1); + y(a) + }) + } + + function y(a) { + function b(a) { + if (!a) return ""; + CKEDITOR.tools.isArray(a) && (a = a.join(",")); + return a.replace(/\s/g, "") + } + var c = a.config, + d = b(c.plugins), + f = b(c.extraPlugins), + e = b(c.removePlugins); + if (f) var h = new RegExp("(?:^|,)(?:" + f.replace(/,/g, "|") + ")(?\x3d,|$)", "g"), + d = d.replace(h, ""), + d = d + ("," + f); + if (e) var g = new RegExp("(?:^|,)(?:" + e.replace(/,/g, "|") + ")(?\x3d,|$)", "g"), + d = d.replace(g, ""); + CKEDITOR.env.air && (d += ",adobeair"); + CKEDITOR.plugins.load(d.split(","), + function(b) { + var d = [], + f = [], + e = []; + a.plugins = CKEDITOR.tools.extend({}, a.plugins, b); + for (var l in b) { + var h = b[l], + t = h.lang, + k = null, + p = h.requires, + F; + CKEDITOR.tools.isArray(p) && (p = p.join(",")); + if (p && (F = p.match(g))) + for (; p = F.pop();) CKEDITOR.error("editor-plugin-required", { + plugin: p.replace(",", ""), + requiredBy: l + }); + t && !a.lang[l] && (t.split && (t = t.split(",")), 0 <= CKEDITOR.tools.indexOf(t, a.langCode) ? k = a.langCode : (k = a.langCode.replace(/-.*/, ""), k = k != a.langCode && 0 <= CKEDITOR.tools.indexOf(t, k) ? k : 0 <= CKEDITOR.tools.indexOf(t, + "en") ? "en" : t[0]), h.langEntries && h.langEntries[k] ? (a.lang[l] = h.langEntries[k], k = null) : e.push(CKEDITOR.getUrl(h.path + "lang/" + k + ".js"))); + f.push(k); + d.push(h) + } + CKEDITOR.scriptLoader.load(e, function() { + for (var b = ["beforeInit", "init", "afterInit"], e = 0; e < b.length; e++) + for (var l = 0; l < d.length; l++) { + var p = d[l]; + 0 === e && f[l] && p.lang && p.langEntries && (a.lang[p.name] = p.langEntries[f[l]]); + if (p[b[e]]) p[b[e]](a) + } + a.fireOnce("pluginsLoaded"); + c.keystrokes && a.setKeystroke(a.config.keystrokes); + for (l = 0; l < a.config.blockedKeystrokes.length; l++) a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[l]] = + 1; + a.status = "loaded"; + a.fireOnce("loaded"); + CKEDITOR.fire("instanceLoaded", null, a) + }) + }) + } + + function v() { + var a = this.element; + if (a && this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) { + var b = this.getData(); + this.config.htmlEncodeOutput && (b = CKEDITOR.tools.htmlEncode(b)); + a.is("textarea") ? a.setValue(b) : a.setHtml(b); + return !0 + } + return !1 + } + + function B(a, b) { + function c(a) { + var b = a.startContainer, + d = a.endContainer; + return b.is && (b.is("tr") || b.is("td") && b.equals(d) && a.endOffset === b.getChildCount()) ? !0 : !1 + } + + function d(a) { + var b = a.startContainer; + return b.is("tr") ? a.cloneContents() : b.clone(!0) + } + for (var f = new CKEDITOR.dom.documentFragment, e, h, g, k = 0; k < a.length; k++) { + var M = a[k], + q = M.startContainer.getAscendant("tr", !0); + c(M) ? (e || (e = q.getAscendant("table").clone(), e.append(q.getAscendant({ + thead: 1, + tbody: 1, + tfoot: 1 + }).clone()), f.append(e), e = e.findOne("thead, tbody, tfoot")), h && h.equals(q) || (h = q, g = q.clone(), e.append(g)), g.append(d(M))) : f.append(M.cloneContents()) + } + return e ? f : b.getHtmlFromRange(a[0]) + } + a.prototype = CKEDITOR.editor.prototype; + CKEDITOR.editor = + a; + var D = 0, + x = {}; + CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { + plugins: { + detectConflict: function(a, b) { + for (var c = 0; c < b.length; c++) { + var d = b[c]; + if (this[d]) return CKEDITOR.warn("editor-plugin-conflict", { + plugin: a, + replacedWith: d + }), !0 + } + return !1 + } + }, + addCommand: function(a, b) { + b.name = a.toLowerCase(); + var c = b instanceof CKEDITOR.command ? b : new CKEDITOR.command(this, b); + this.mode && f(this, c); + return this.commands[a] = c + }, + _attachToForm: function() { + function a(b) { + c.updateElement(); + c._.required && !d.getValue() && !1 === c.fire("required") && + b.data.preventDefault() + } + + function b(a) { + return !!(a && a.call && a.apply) + } + var c = this, + d = c.element, + f = new CKEDITOR.dom.element(d.$.form); + d.is("textarea") && f && (f.on("submit", a), b(f.$.submit) && (f.$.submit = CKEDITOR.tools.override(f.$.submit, function(b) { + return function() { + a(); + b.apply ? b.apply(this) : b() + } + })), c.on("destroy", function() { + f.removeListener("submit", a) + })) + }, + destroy: function(a) { + this.fire("beforeDestroy"); + !a && v.call(this); + this.editable(null); + this.filter && (this.filter.destroy(), delete this.filter); + delete this.activeFilter; + this.status = "destroyed"; + this.fire("destroy"); + this.removeAllListeners(); + CKEDITOR.remove(this); + CKEDITOR.fire("instanceDestroyed", null, this) + }, + elementPath: function(a) { + if (!a) { + a = this.getSelection(); + if (!a) return null; + a = a.getStartElement() + } + return a ? new CKEDITOR.dom.elementPath(a, this.editable()) : null + }, + createRange: function() { + var a = this.editable(); + return a ? new CKEDITOR.dom.range(a) : null + }, + execCommand: function(a, b) { + var c = this.getCommand(a), + d = { + name: a, + commandData: b || {}, + command: c + }; + return c && c.state != CKEDITOR.TRISTATE_DISABLED && + !1 !== this.fire("beforeCommandExec", d) && (d.returnValue = c.exec(d.commandData), !c.async && !1 !== this.fire("afterCommandExec", d)) ? d.returnValue : !1 + }, + getCommand: function(a) { + return this.commands[a] + }, + getData: function(a) { + !a && this.fire("beforeGetData"); + var b = this._.data; + "string" != typeof b && (b = (b = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? b.is("textarea") ? b.getValue() : b.getHtml() : ""); + b = { + dataValue: b + }; + !a && this.fire("getData", b); + return b.dataValue + }, + getSnapshot: function() { + var a = this.fire("getSnapshot"); + "string" != typeof a && (a = (a = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.is("textarea") ? a.getValue() : a.getHtml() : ""); + return a + }, + loadSnapshot: function(a) { + this.fire("loadSnapshot", a) + }, + setData: function(a, b, c) { + var d = !0, + f = b; + b && "object" == typeof b && (c = b.internal, f = b.callback, d = !b.noSnapshot); + !c && d && this.fire("saveSnapshot"); + if (f || !c) this.once("dataReady", function(a) { + !c && d && this.fire("saveSnapshot"); + f && f.call(a.editor) + }); + a = { + dataValue: a + }; + !c && this.fire("setData", a); + this._.data = a.dataValue; + !c && this.fire("afterSetData", a) + }, + setReadOnly: function(a) { + a = null == a || a; + this.readOnly != a && (this.readOnly = a, this.keystrokeHandler.blockedKeystrokes[8] = +a, this.editable().setReadOnly(a), this.fire("readOnly")) + }, + insertHtml: function(a, b, c) { + this.fire("insertHtml", { + dataValue: a, + mode: b, + range: c + }) + }, + insertText: function(a) { + this.fire("insertText", a) + }, + insertElement: function(a) { + this.fire("insertElement", a) + }, + getSelectedHtml: function(a) { + var b = this.editable(), + c = this.getSelection(), + c = c && c.getRanges(); + if (!b || !c || 0 === c.length) return null; + b = B(c, b); + return a ? b.getHtml() : b + }, + extractSelectedHtml: function(a, b) { + var c = this.editable(), + d = this.getSelection().getRanges(), + f = new CKEDITOR.dom.documentFragment, + e; + if (!c || 0 === d.length) return null; + for (e = 0; e < d.length; e++) f.append(c.extractHtmlFromRange(d[e], b)); + b || this.getSelection().selectRanges([d[0]]); + return a ? f.getHtml() : f + }, + focus: function() { + this.fire("beforeFocus") + }, + checkDirty: function() { + return "ready" == this.status && this._.previousValue !== this.getSnapshot() + }, + resetDirty: function() { + this._.previousValue = + this.getSnapshot() + }, + updateElement: function() { + return v.call(this) + }, + setKeystroke: function() { + for (var a = this.keystrokeHandler.keystrokes, b = CKEDITOR.tools.isArray(arguments[0]) ? arguments[0] : [ + [].slice.call(arguments, 0) + ], c, d, f = b.length; f--;) c = b[f], d = 0, CKEDITOR.tools.isArray(c) && (d = c[1], c = c[0]), d ? a[c] = d : delete a[c] + }, + getCommandKeystroke: function(a) { + if (a = "string" === typeof a ? this.getCommand(a) : a) { + var b = CKEDITOR.tools.object.findKey(this.commands, a), + c = this.keystrokeHandler.keystrokes, + d; + if (a.fakeKeystroke) return a.fakeKeystroke; + for (d in c) + if (c.hasOwnProperty(d) && c[d] == b) return d + } + return null + }, + addFeature: function(a) { + return this.filter.addFeature(a) + }, + setActiveFilter: function(a) { + a || (a = this.filter); + this.activeFilter !== a && (this.activeFilter = a, this.fire("activeFilterChange"), a === this.filter ? this.setActiveEnterMode(null, null) : this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode), a.getAllowedEnterMode(this.shiftEnterMode, !0))) + }, + setActiveEnterMode: function(a, b) { + a = a ? this.blockless ? CKEDITOR.ENTER_BR : a : this.enterMode; + b = b ? this.blockless ? + CKEDITOR.ENTER_BR : b : this.shiftEnterMode; + if (this.activeEnterMode != a || this.activeShiftEnterMode != b) this.activeEnterMode = a, this.activeShiftEnterMode = b, this.fire("activeEnterModeChange") + }, + showNotification: function(a) { + alert(a) + } + }) + })(); + CKEDITOR.ELEMENT_MODE_NONE = 0; + CKEDITOR.ELEMENT_MODE_REPLACE = 1; + CKEDITOR.ELEMENT_MODE_APPENDTO = 2; + CKEDITOR.ELEMENT_MODE_INLINE = 3; + CKEDITOR.htmlParser = function() { + this._ = { + htmlPartsRegex: /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g + } + }; + (function() { + var a = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g, + d = { + checked: 1, + compact: 1, + declare: 1, + defer: 1, + disabled: 1, + ismap: 1, + multiple: 1, + nohref: 1, + noresize: 1, + noshade: 1, + nowrap: 1, + readonly: 1, + selected: 1 + }; + CKEDITOR.htmlParser.prototype = { + onTagOpen: function() {}, + onTagClose: function() {}, + onText: function() {}, + onCDATA: function() {}, + onComment: function() {}, + parse: function(b) { + for (var c, f, h = 0, k; c = this._.htmlPartsRegex.exec(b);) { + f = c.index; + if (f > h) + if (h = b.substring(h, f), k) k.push(h); + else this.onText(h); + h = this._.htmlPartsRegex.lastIndex; + if (f = c[1]) + if (f = f.toLowerCase(), k && CKEDITOR.dtd.$cdata[f] && (this.onCDATA(k.join("")), k = null), !k) { + this.onTagClose(f); + continue + } if (k) k.push(c[0]); + else if (f = c[3]) { + if (f = f.toLowerCase(), !/="/.test(f)) { + var g = {}, + n, r = c[4]; + c = !!c[5]; + if (r) + for (; n = a.exec(r);) { + var e = n[1].toLowerCase(); + n = n[2] || n[3] || n[4] || ""; + g[e] = !n && d[e] ? e : CKEDITOR.tools.htmlDecodeAttr(n) + } + this.onTagOpen(f, g, c); + !k && CKEDITOR.dtd.$cdata[f] && (k = []) + } + } else if (f = c[2]) this.onComment(f) + } + if (b.length > h) this.onText(b.substring(h, + b.length)) + } + } + })(); + CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ + $: function() { + this._ = { + output: [] + } + }, + proto: { + openTag: function(a) { + this._.output.push("\x3c", a) + }, + openTagClose: function(a, d) { + d ? this._.output.push(" /\x3e") : this._.output.push("\x3e") + }, + attribute: function(a, d) { + "string" == typeof d && (d = CKEDITOR.tools.htmlEncodeAttr(d)); + this._.output.push(" ", a, '\x3d"', d, '"') + }, + closeTag: function(a) { + this._.output.push("\x3c/", a, "\x3e") + }, + text: function(a) { + this._.output.push(a) + }, + comment: function(a) { + this._.output.push("\x3c!--", a, + "--\x3e") + }, + write: function(a) { + this._.output.push(a) + }, + reset: function() { + this._.output = []; + this._.indent = !1 + }, + getHtml: function(a) { + var d = this._.output.join(""); + a && this.reset(); + return d + } + } + }); + "use strict"; + (function() { + CKEDITOR.htmlParser.node = function() {}; + CKEDITOR.htmlParser.node.prototype = { + remove: function() { + var a = this.parent.children, + d = CKEDITOR.tools.indexOf(a, this), + b = this.previous, + c = this.next; + b && (b.next = c); + c && (c.previous = b); + a.splice(d, 1); + this.parent = null + }, + replaceWith: function(a) { + var d = this.parent.children, + b = CKEDITOR.tools.indexOf(d, this), + c = a.previous = this.previous, + f = a.next = this.next; + c && (c.next = a); + f && (f.previous = a); + d[b] = a; + a.parent = this.parent; + this.parent = null + }, + insertAfter: function(a) { + var d = a.parent.children, + b = CKEDITOR.tools.indexOf(d, a), + c = a.next; + d.splice(b + 1, 0, this); + this.next = a.next; + this.previous = a; + a.next = this; + c && (c.previous = this); + this.parent = a.parent + }, + insertBefore: function(a) { + var d = a.parent.children, + b = CKEDITOR.tools.indexOf(d, a); + d.splice(b, 0, this); + this.next = a; + (this.previous = a.previous) && (a.previous.next = this); + a.previous = this; + this.parent = a.parent + }, + getAscendant: function(a) { + var d = "function" == typeof a ? a : "string" == typeof a ? function(b) { + return b.name == a + } : function(b) { + return b.name in a + }, + b = this.parent; + for (; b && + b.type == CKEDITOR.NODE_ELEMENT;) { + if (d(b)) return b; + b = b.parent + } + return null + }, + wrapWith: function(a) { + this.replaceWith(a); + a.add(this); + return a + }, + getIndex: function() { + return CKEDITOR.tools.indexOf(this.parent.children, this) + }, + getFilterContext: function(a) { + return a || {} + } + } + })(); + "use strict"; + CKEDITOR.htmlParser.comment = function(a) { + this.value = a; + this._ = { + isBlockLike: !1 + } + }; + CKEDITOR.htmlParser.comment.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node, { + type: CKEDITOR.NODE_COMMENT, + filter: function(a, d) { + var b = this.value; + if (!(b = a.onComment(d, b, this))) return this.remove(), !1; + if ("string" != typeof b) return this.replaceWith(b), !1; + this.value = b; + return !0 + }, + writeHtml: function(a, d) { + d && this.filter(d); + a.comment(this.value) + } + }); + "use strict"; + (function() { + CKEDITOR.htmlParser.text = function(a) { + this.value = a; + this._ = { + isBlockLike: !1 + } + }; + CKEDITOR.htmlParser.text.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node, { + type: CKEDITOR.NODE_TEXT, + filter: function(a, d) { + if (!(this.value = a.onText(d, this.value, this))) return this.remove(), !1 + }, + writeHtml: function(a, d) { + d && this.filter(d); + a.text(this.value) + } + }) + })(); + "use strict"; + (function() { + CKEDITOR.htmlParser.cdata = function(a) { + this.value = a + }; + CKEDITOR.htmlParser.cdata.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node, { + type: CKEDITOR.NODE_TEXT, + filter: function() {}, + writeHtml: function(a) { + a.write(this.value) + } + }) + })(); + "use strict"; + CKEDITOR.htmlParser.fragment = function() { + this.children = []; + this.parent = null; + this._ = { + isBlockLike: !0, + hasInlineStarted: !1 + } + }; + (function() { + function a(a) { + return a.attributes["data-cke-survive"] ? !1 : "a" == a.name && a.attributes.href || CKEDITOR.dtd.$removeEmpty[a.name] + } + var d = CKEDITOR.tools.extend({ + table: 1, + ul: 1, + ol: 1, + dl: 1 + }, CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl), + b = { + ol: 1, + ul: 1 + }, + c = CKEDITOR.tools.extend({}, { + html: 1 + }, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head, { + style: 1, + script: 1 + }), + f = { + ul: "li", + ol: "li", + dl: "dd", + table: "tbody", + tbody: "tr", + thead: "tr", + tfoot: "tr", + tr: "td" + }; + CKEDITOR.htmlParser.fragment.fromHtml = + function(h, k, g) { + function n(a) { + var b; + if (0 < m.length) + for (var c = 0; c < m.length; c++) { + var d = m[c], + f = d.name, + e = CKEDITOR.dtd[f], + l = u.name && CKEDITOR.dtd[u.name]; + l && !l[f] || a && e && !e[a] && CKEDITOR.dtd[a] ? f == u.name && (y(u, u.parent, 1), c--) : (b || (r(), b = 1), d = d.clone(), d.parent = u, u = d, m.splice(c, 1), c--) + } + } + + function r() { + for (; J.length;) y(J.shift(), u) + } + + function e(a) { + if (a._.isBlockLike && "pre" != a.name && "textarea" != a.name) { + var b = a.children.length, + c = a.children[b - 1], + d; + c && c.type == CKEDITOR.NODE_TEXT && ((d = CKEDITOR.tools.rtrim(c.value)) ? + c.value = d : a.children.length = b - 1) + } + } + + function y(b, c, d) { + c = c || u || x; + var f = u; + void 0 === b.previous && (v(c, b) && (u = c, D.onTagOpen(g, {}), b.returnPoint = c = u), e(b), a(b) && !b.children.length || c.add(b), "pre" == b.name && (l = !1), "textarea" == b.name && (K = !1)); + b.returnPoint ? (u = b.returnPoint, delete b.returnPoint) : u = d ? c : f + } + + function v(a, b) { + if ((a == x || "body" == a.name) && g && (!a.name || CKEDITOR.dtd[a.name][g])) { + var c, d; + return (c = b.attributes && (d = b.attributes["data-cke-real-element-type"]) ? d : b.name) && c in CKEDITOR.dtd.$inline && !(c in CKEDITOR.dtd.head) && + !b.isOrphan || b.type == CKEDITOR.NODE_TEXT + } + } + + function B(a, b) { + return a in CKEDITOR.dtd.$listItem || a in CKEDITOR.dtd.$tableContent ? a == b || "dt" == a && "dd" == b || "dd" == a && "dt" == b : !1 + } + var D = new CKEDITOR.htmlParser, + x = k instanceof CKEDITOR.htmlParser.element ? k : "string" == typeof k ? new CKEDITOR.htmlParser.element(k) : new CKEDITOR.htmlParser.fragment, + m = [], + J = [], + u = x, + K = "textarea" == x.name, + l = "pre" == x.name; + D.onTagOpen = function(f, e, h, g) { + e = new CKEDITOR.htmlParser.element(f, e); + e.isUnknown && h && (e.isEmpty = !0); + e.isOptionalClose = g; + if (a(e)) m.push(e); + else { + if ("pre" == f) l = !0; + else { + if ("br" == f && l) { + u.add(new CKEDITOR.htmlParser.text("\n")); + return + } + "textarea" == f && (K = !0) + } + if ("br" == f) J.push(e); + else { + for (; !(g = (h = u.name) ? CKEDITOR.dtd[h] || (u._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : c, e.isUnknown || u.isUnknown || g[f]);) + if (u.isOptionalClose) D.onTagClose(h); + else if (f in b && h in b) h = u.children, (h = h[h.length - 1]) && "li" == h.name || y(h = new CKEDITOR.htmlParser.element("li"), u), !e.returnPoint && (e.returnPoint = u), u = h; + else if (f in CKEDITOR.dtd.$listItem && + !B(f, h)) D.onTagOpen("li" == f ? "ul" : "dl", {}, 0, 1); + else if (h in d && !B(f, h)) !e.returnPoint && (e.returnPoint = u), u = u.parent; + else if (h in CKEDITOR.dtd.$inline && m.unshift(u), u.parent) y(u, u.parent, 1); + else { + e.isOrphan = 1; + break + } + n(f); + r(); + e.parent = u; + e.isEmpty ? y(e) : u = e + } + } + }; + D.onTagClose = function(a) { + for (var b = m.length - 1; 0 <= b; b--) + if (a == m[b].name) { + m.splice(b, 1); + return + } for (var c = [], d = [], f = u; f != x && f.name != a;) f._.isBlockLike || d.unshift(f), c.push(f), f = f.returnPoint || f.parent; + if (f != x) { + for (b = 0; b < c.length; b++) { + var e = c[b]; + y(e, e.parent) + } + u = + f; + f._.isBlockLike && r(); + y(f, f.parent); + f == u && (u = u.parent); + m = m.concat(d) + } + "body" == a && (g = !1) + }; + D.onText = function(a) { + if (!(u._.hasInlineStarted && !J.length || l || K) && (a = CKEDITOR.tools.ltrim(a), 0 === a.length)) return; + var b = u.name, + e = b ? CKEDITOR.dtd[b] || (u._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : c; + if (!K && !e["#"] && b in d) D.onTagOpen(f[b] || ""), D.onText(a); + else { + r(); + n(); + l || K || (a = a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g, " ")); + a = new CKEDITOR.htmlParser.text(a); + if (v(u, a)) this.onTagOpen(g, {}, 0, 1); + u.add(a) + } + }; + D.onCDATA = + function(a) { + u.add(new CKEDITOR.htmlParser.cdata(a)) + }; + D.onComment = function(a) { + r(); + n(); + u.add(new CKEDITOR.htmlParser.comment(a)) + }; + D.parse(h); + for (r(); u != x;) y(u, u.parent, 1); + e(x); + return x + }; + CKEDITOR.htmlParser.fragment.prototype = { + type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, + add: function(a, b) { + isNaN(b) && (b = this.children.length); + var c = 0 < b ? this.children[b - 1] : null; + if (c) { + if (a._.isBlockLike && c.type == CKEDITOR.NODE_TEXT && (c.value = CKEDITOR.tools.rtrim(c.value), 0 === c.value.length)) { + this.children.pop(); + this.add(a); + return + } + c.next = + a + } + a.previous = c; + a.parent = this; + this.children.splice(b, 0, a); + this._.hasInlineStarted || (this._.hasInlineStarted = a.type == CKEDITOR.NODE_TEXT || a.type == CKEDITOR.NODE_ELEMENT && !a._.isBlockLike) + }, + filter: function(a, b) { + b = this.getFilterContext(b); + a.onRoot(b, this); + this.filterChildren(a, !1, b) + }, + filterChildren: function(a, b, c) { + if (this.childrenFilteredBy != a.id) { + c = this.getFilterContext(c); + if (b && !this.parent) a.onRoot(c, this); + this.childrenFilteredBy = a.id; + for (b = 0; b < this.children.length; b++) !1 === this.children[b].filter(a, + c) && b-- + } + }, + writeHtml: function(a, b) { + b && this.filter(b); + this.writeChildrenHtml(a) + }, + writeChildrenHtml: function(a, b, c) { + var d = this.getFilterContext(); + if (c && !this.parent && b) b.onRoot(d, this); + b && this.filterChildren(b, !1, d); + b = 0; + c = this.children; + for (d = c.length; b < d; b++) c[b].writeHtml(a) + }, + forEach: function(a, b, c) { + if (!(c || b && this.type != b)) var d = a(this); + if (!1 !== d) { + c = this.children; + for (var f = 0; f < c.length; f++) d = c[f], d.type == CKEDITOR.NODE_ELEMENT ? d.forEach(a, b) : b && d.type != b || a(d) + } + }, + getFilterContext: function(a) { + return a || {} + } + } + })(); + "use strict"; + (function() { + function a() { + this.rules = [] + } + + function d(b, c, d, h) { + var k, g; + for (k in c)(g = b[k]) || (g = b[k] = new a), g.add(c[k], d, h) + } + CKEDITOR.htmlParser.filter = CKEDITOR.tools.createClass({ + $: function(b) { + this.id = CKEDITOR.tools.getNextNumber(); + this.elementNameRules = new a; + this.attributeNameRules = new a; + this.elementsRules = {}; + this.attributesRules = {}; + this.textRules = new a; + this.commentRules = new a; + this.rootRules = new a; + b && this.addRules(b, 10) + }, + proto: { + addRules: function(a, c) { + var f; + "number" == typeof c ? f = c : c && "priority" in c && (f = + c.priority); + "number" != typeof f && (f = 10); + "object" != typeof c && (c = {}); + a.elementNames && this.elementNameRules.addMany(a.elementNames, f, c); + a.attributeNames && this.attributeNameRules.addMany(a.attributeNames, f, c); + a.elements && d(this.elementsRules, a.elements, f, c); + a.attributes && d(this.attributesRules, a.attributes, f, c); + a.text && this.textRules.add(a.text, f, c); + a.comment && this.commentRules.add(a.comment, f, c); + a.root && this.rootRules.add(a.root, f, c) + }, + applyTo: function(a) { + a.filter(this) + }, + onElementName: function(a, c) { + return this.elementNameRules.execOnName(a, + c) + }, + onAttributeName: function(a, c) { + return this.attributeNameRules.execOnName(a, c) + }, + onText: function(a, c, d) { + return this.textRules.exec(a, c, d) + }, + onComment: function(a, c, d) { + return this.commentRules.exec(a, c, d) + }, + onRoot: function(a, c) { + return this.rootRules.exec(a, c) + }, + onElement: function(a, c) { + for (var d = [this.elementsRules["^"], this.elementsRules[c.name], this.elementsRules.$], h, k = 0; 3 > k; k++) + if (h = d[k]) { + h = h.exec(a, c, this); + if (!1 === h) return null; + if (h && h != c) return this.onNode(a, h); + if (c.parent && !c.name) break + } return c + }, + onNode: function(a, c) { + var d = c.type; + return d == CKEDITOR.NODE_ELEMENT ? this.onElement(a, c) : d == CKEDITOR.NODE_TEXT ? new CKEDITOR.htmlParser.text(this.onText(a, c.value)) : d == CKEDITOR.NODE_COMMENT ? new CKEDITOR.htmlParser.comment(this.onComment(a, c.value)) : null + }, + onAttribute: function(a, c, d, h) { + return (d = this.attributesRules[d]) ? d.exec(a, h, c, this) : h + } + } + }); + CKEDITOR.htmlParser.filterRulesGroup = a; + a.prototype = { + add: function(a, c, d) { + this.rules.splice(this.findIndex(c), 0, { + value: a, + priority: c, + options: d + }) + }, + addMany: function(a, + c, d) { + for (var h = [this.findIndex(c), 0], k = 0, g = a.length; k < g; k++) h.push({ + value: a[k], + priority: c, + options: d + }); + this.rules.splice.apply(this.rules, h) + }, + findIndex: function(a) { + for (var c = this.rules, d = c.length - 1; 0 <= d && a < c[d].priority;) d--; + return d + 1 + }, + exec: function(a, c) { + var d = c instanceof CKEDITOR.htmlParser.node || c instanceof CKEDITOR.htmlParser.fragment, + h = Array.prototype.slice.call(arguments, 1), + k = this.rules, + g = k.length, + n, r, e, y; + for (y = 0; y < g; y++) + if (d && (n = c.type, r = c.name), e = k[y], !(a.nonEditable && !e.options.applyToAll || + a.nestedEditable && e.options.excludeNestedEditable)) { + e = e.value.apply(null, h); + if (!1 === e || d && e && (e.name != r || e.type != n)) return e; + null != e && (h[0] = c = e) + } return c + }, + execOnName: function(a, c) { + for (var d = 0, h = this.rules, k = h.length, g; c && d < k; d++) g = h[d], a.nonEditable && !g.options.applyToAll || a.nestedEditable && g.options.excludeNestedEditable || (c = c.replace(g.value[0], g.value[1])); + return c + } + } + })(); + (function() { + function a(a, d) { + function e(a) { + return a || CKEDITOR.env.needsNbspFiller ? new CKEDITOR.htmlParser.text(" ") : new CKEDITOR.htmlParser.element("br", { + "data-cke-bogus": 1 + }) + } + + function p(a, d) { + return function(f) { + if (f.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { + var l = [], + w = b(f), + p, E; + if (w) + for (q(w, 1) && l.push(w); w;) h(w) && (p = c(w)) && q(p) && ((E = c(p)) && !h(E) ? l.push(p) : (e(z).insertAfter(p), p.remove())), w = w.previous; + for (w = 0; w < l.length; w++) l[w].remove(); + if (l = !a || !1 !== ("function" == typeof d ? d(f) : d)) z || CKEDITOR.env.needsBrFiller || + f.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT ? z || CKEDITOR.env.needsBrFiller || !(7 < document.documentMode || f.name in CKEDITOR.dtd.tr || f.name in CKEDITOR.dtd.$listItem) ? (l = b(f), l = !l || "form" == f.name && "input" == l.name) : l = !1 : l = !1; + l && f.add(e(a)) + } + } + } + + function q(a, b) { + if ((!z || CKEDITOR.env.needsBrFiller) && a.type == CKEDITOR.NODE_ELEMENT && "br" == a.name && !a.attributes["data-cke-eol"]) return !0; + var c; + return a.type == CKEDITOR.NODE_TEXT && (c = a.value.match(m)) && (c.index && ((new CKEDITOR.htmlParser.text(a.value.substring(0, c.index))).insertBefore(a), + a.value = c[0]), !CKEDITOR.env.needsBrFiller && z && (!b || a.parent.name in g) || !z && ((c = a.previous) && "br" == c.name || !c || h(c))) ? !0 : !1 + } + var E = { + elements: {} + }, + z = "html" == d, + g = CKEDITOR.tools.extend({}, l), + t; + for (t in g) "#" in u[t] || delete g[t]; + for (t in g) E.elements[t] = p(z, a.config.fillEmptyBlocks); + E.root = p(z, !1); + E.elements.br = function(a) { + return function(b) { + if (b.parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) { + var d = b.attributes; + if ("data-cke-bogus" in d || "data-cke-eol" in d) delete d["data-cke-bogus"]; + else { + for (d = b.next; d && f(d);) d = + d.next; + var l = c(b); + !d && h(b.parent) ? k(b.parent, e(a)) : h(d) && l && !h(l) && e(a).insertBefore(d) + } + } + } + }(z); + return E + } + + function d(a, b) { + return a != CKEDITOR.ENTER_BR && !1 !== b ? a == CKEDITOR.ENTER_DIV ? "div" : "p" : !1 + } + + function b(a) { + for (a = a.children[a.children.length - 1]; a && f(a);) a = a.previous; + return a + } + + function c(a) { + for (a = a.previous; a && f(a);) a = a.previous; + return a + } + + function f(a) { + return a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(a.value) || a.type == CKEDITOR.NODE_ELEMENT && a.attributes["data-cke-bookmark"] + } + + function h(a) { + return a && + (a.type == CKEDITOR.NODE_ELEMENT && a.name in l || a.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) + } + + function k(a, b) { + var c = a.children[a.children.length - 1]; + a.children.push(b); + b.parent = a; + c && (c.next = b, b.previous = c) + } + + function g(a) { + a = a.attributes; + "false" != a.contenteditable && (a["data-cke-editable"] = a.contenteditable ? "true" : 1); + a.contenteditable = "false" + } + + function n(a) { + a = a.attributes; + switch (a["data-cke-editable"]) { + case "true": + a.contenteditable = "true"; + break; + case "1": + delete a.contenteditable + } + } + + function r(a) { + return a.replace(M, + function(a, b, c) { + return "\x3c" + b + c.replace(q, function(a, b) { + return E.test(b) && -1 == c.indexOf("data-cke-saved-" + b) ? " data-cke-saved-" + a + " data-cke-" + CKEDITOR.rnd + "-" + a : a + }) + "\x3e" + }) + } + + function e(a, b) { + return a.replace(b, function(a, b, c) { + 0 === a.indexOf("\x3ctextarea") && (a = b + B(c).replace(//g, "\x26gt;") + "\x3c/textarea\x3e"); + return "\x3ccke:encoded\x3e" + encodeURIComponent(a) + "\x3c/cke:encoded\x3e" + }) + } + + function y(a) { + return a.replace(P, function(a, b) { + return decodeURIComponent(b) + }) + } + + function v(a) { + return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, + function(a) { + return "\x3c!--" + J + "{C}" + encodeURIComponent(a).replace(/--/g, "%2D%2D") + "--\x3e" + }) + } + + function B(a) { + return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g, function(a, b) { + return decodeURIComponent(b) + }) + } + + function D(a, b) { + var c = b._.dataStore; + return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g, function(a, b) { + return decodeURIComponent(b) + }).replace(/\{cke_protected_(\d+)\}/g, function(a, b) { + return c && c[b] || "" + }) + } + + function x(a, b) { + var c = [], + d = b.config.protectedSource, + f = b._.dataStore || (b._.dataStore = { + id: 1 + }), + e = /<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g, + d = [/|$)/gi, //gi, //gi].concat(d); + a = a.replace(/\x3c!--[\s\S]*?--\x3e/g, function(a) { + return "\x3c!--{cke_tempcomment}" + (c.push(a) - 1) + "--\x3e" + }); + for (var l = 0; l < d.length; l++) a = a.replace(d[l], function(a) { + a = a.replace(e, function(a, b, d) { + return c[d] + }); + return /cke_temp(comment)?/.test(a) ? a : "\x3c!--{cke_temp}" + (c.push(a) - 1) + "--\x3e" + }); + a = a.replace(e, function(a, b, d) { + return "\x3c!--" + J + (b ? "{C}" : + "") + encodeURIComponent(c[d]).replace(/--/g, "%2D%2D") + "--\x3e" + }); + a = a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function(a) { + return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g, function(a, b) { + f[f.id] = decodeURIComponent(b); + return "{cke_protected_" + f.id++ + "}" + }) + }); + return a = a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function(a, c, d, f) { + return "\x3c" + c + d + "\x3e" + D(B(f), b) + "\x3c/" + c + "\x3e" + }) + } + CKEDITOR.htmlDataProcessor = function(b) { + var c, + f, l = this; + this.editor = b; + this.dataFilter = c = new CKEDITOR.htmlParser.filter; + this.htmlFilter = f = new CKEDITOR.htmlParser.filter; + this.writer = new CKEDITOR.htmlParser.basicWriter; + c.addRules(t); + c.addRules(F, { + applyToAll: !0 + }); + c.addRules(a(b, "data"), { + applyToAll: !0 + }); + f.addRules(L); + f.addRules(C, { + applyToAll: !0 + }); + f.addRules(a(b, "html"), { + applyToAll: !0 + }); + b.on("toHtml", function(a) { + a = a.data; + var c = a.dataValue, + f, c = x(c, b), + c = e(c, H), + c = r(c), + c = e(c, z), + c = c.replace(O, "$1cke:$2"), + c = c.replace(N, "\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), + c = c.replace(/(]*>)(\r\n|\n)/g, "$1$2$2"), + c = c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi, "$1data-cke-" + CKEDITOR.rnd + "-$2"); + f = a.context || b.editable().getName(); + var l; + CKEDITOR.env.ie && 9 > CKEDITOR.env.version && "pre" == f && (f = "div", c = "\x3cpre\x3e" + c + "\x3c/pre\x3e", l = 1); + f = b.document.createElement(f); + f.setHtml("a" + c); + c = f.getHtml().substr(1); + c = c.replace(new RegExp("data-cke-" + CKEDITOR.rnd + "-", "ig"), ""); + l && (c = c.replace(/^
|<\/pre>$/gi, ""));
+                c = c.replace(p, "$1$2");
+                c = y(c);
+                c = B(c);
+                f = !1 === a.fixForBody ? !1 :
+                    d(a.enterMode, b.config.autoParagraph);
+                c = CKEDITOR.htmlParser.fragment.fromHtml(c, a.context, f);
+                f && (l = c, !l.children.length && CKEDITOR.dtd[l.name][f] && (f = new CKEDITOR.htmlParser.element(f), l.add(f)));
+                a.dataValue = c
+            }, null, null, 5);
+            b.on("toHtml", function(a) {
+                a.data.filter.applyTo(a.data.dataValue, !0, a.data.dontFilter, a.data.enterMode) && b.fire("dataFiltered")
+            }, null, null, 6);
+            b.on("toHtml", function(a) {
+                a.data.dataValue.filterChildren(l.dataFilter, !0)
+            }, null, null, 10);
+            b.on("toHtml", function(a) {
+                a = a.data;
+                var b = a.dataValue,
+                    c = new CKEDITOR.htmlParser.basicWriter;
+                b.writeChildrenHtml(c);
+                b = c.getHtml(!0);
+                a.dataValue = v(b)
+            }, null, null, 15);
+            b.on("toDataFormat", function(a) {
+                var c = a.data.dataValue;
+                a.data.enterMode != CKEDITOR.ENTER_BR && (c = c.replace(/^
/i, "")); + a.data.dataValue = CKEDITOR.htmlParser.fragment.fromHtml(c, a.data.context, d(a.data.enterMode, b.config.autoParagraph)) + }, null, null, 5); + b.on("toDataFormat", function(a) { + a.data.dataValue.filterChildren(l.htmlFilter, !0) + }, null, null, 10); + b.on("toDataFormat", function(a) { + a.data.filter.applyTo(a.data.dataValue, + !1, !0) + }, null, null, 11); + b.on("toDataFormat", function(a) { + var c = a.data.dataValue, + d = l.writer; + d.reset(); + c.writeChildrenHtml(d); + c = d.getHtml(!0); + c = B(c); + c = D(c, b); + a.data.dataValue = c + }, null, null, 15) + }; + CKEDITOR.htmlDataProcessor.prototype = { + toHtml: function(a, b, c, d) { + var f = this.editor, + e, l, p, h; + b && "object" == typeof b ? (e = b.context, c = b.fixForBody, d = b.dontFilter, l = b.filter, p = b.enterMode, h = b.protectedWhitespaces) : e = b; + e || null === e || (e = f.editable().getName()); + return f.fire("toHtml", { + dataValue: a, + context: e, + fixForBody: c, + dontFilter: d, + filter: l || f.filter, + enterMode: p || f.enterMode, + protectedWhitespaces: h + }).dataValue + }, + toDataFormat: function(a, b) { + var c, d, f; + b && (c = b.context, d = b.filter, f = b.enterMode); + c || null === c || (c = this.editor.editable().getName()); + return this.editor.fire("toDataFormat", { + dataValue: a, + filter: d || this.editor.filter, + context: c, + enterMode: f || this.editor.enterMode + }).dataValue + } + }; + var m = /(?: |\xa0)$/, + J = "{cke_protected}", + u = CKEDITOR.dtd, + K = "caption colgroup col thead tfoot tbody".split(" "), + l = CKEDITOR.tools.extend({}, u.$blockLimit, + u.$block), + t = { + elements: { + input: g, + textarea: g + } + }, + F = { + attributeNames: [ + [/^on/, "data-cke-pa-on"], + [/^srcdoc/, "data-cke-pa-srcdoc"], + [/^data-cke-expando$/, ""] + ], + elements: { + iframe: function(a) { + if (a.attributes && a.attributes.src) { + var b = a.attributes.src.toLowerCase().replace(/[^a-z]/gi, ""); + if (0 === b.indexOf("javascript") || 0 === b.indexOf("data")) a.attributes["data-cke-pa-src"] = a.attributes.src, delete a.attributes.src + } + } + } + }, + L = { + elements: { + embed: function(a) { + var b = a.parent; + if (b && "object" == b.name) { + var c = b.attributes.width, + b = b.attributes.height; + c && (a.attributes.width = c); + b && (a.attributes.height = b) + } + }, + a: function(a) { + var b = a.attributes; + if (!(a.children.length || b.name || b.id || a.attributes["data-cke-saved-name"])) return !1 + } + } + }, + C = { + elementNames: [ + [/^cke:/, ""], + [/^\?xml:namespace$/, ""] + ], + attributeNames: [ + [/^data-cke-(saved|pa)-/, ""], + [/^data-cke-.*/, ""], + ["hidefocus", ""] + ], + elements: { + $: function(a) { + var b = a.attributes; + if (b) { + if (b["data-cke-temp"]) return !1; + for (var c = ["name", "href", "src"], d, f = 0; f < c.length; f++) d = "data-cke-saved-" + c[f], d in b && delete b[c[f]] + } + return a + }, + table: function(a) { + a.children.slice(0).sort(function(a, b) { + var c, d; + a.type == CKEDITOR.NODE_ELEMENT && b.type == a.type && (c = CKEDITOR.tools.indexOf(K, a.name), d = CKEDITOR.tools.indexOf(K, b.name)); - 1 < c && -1 < d && c != d || (c = a.parent ? a.getIndex() : -1, d = b.parent ? b.getIndex() : -1); + return c > d ? 1 : -1 + }) + }, + param: function(a) { + a.children = []; + a.isEmpty = !0; + return a + }, + span: function(a) { + "Apple-style-span" == a.attributes["class"] && delete a.name + }, + html: function(a) { + delete a.attributes.contenteditable; + delete a.attributes["class"] + }, + body: function(a) { + delete a.attributes.spellcheck; + delete a.attributes.contenteditable + }, + style: function(a) { + var b = a.children[0]; + b && b.value && (b.value = CKEDITOR.tools.trim(b.value)); + a.attributes.type || (a.attributes.type = "text/css") + }, + title: function(a) { + var b = a.children[0]; + !b && k(a, b = new CKEDITOR.htmlParser.text); + b.value = a.attributes["data-cke-title"] || "" + }, + input: n, + textarea: n + }, + attributes: { + "class": function(a) { + return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, "")) || !1 + } + } + }; + CKEDITOR.env.ie && (C.attributes.style = function(a) { + return a.replace(/(^|;)([^\:]+)/g, + function(a) { + return a.toLowerCase() + }) + }); + var M = /<(a|area|img|input|source)\b([^>]*)>/gi, + q = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi, + E = /^(href|src|name)$/i, + z = /(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, + H = /(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi, + P = /([^<]*)<\/cke:encoded>/gi, + O = /(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi, + p = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi, + N = /]*?)\/?>(?!\s*<\/cke:\1)/gi + })(); + "use strict"; + CKEDITOR.htmlParser.element = function(a, d) { + this.name = a; + this.attributes = d || {}; + this.children = []; + var b = a || "", + c = b.match(/^cke:(.*)/); + c && (b = c[1]); + b = !!(CKEDITOR.dtd.$nonBodyContent[b] || CKEDITOR.dtd.$block[b] || CKEDITOR.dtd.$listItem[b] || CKEDITOR.dtd.$tableContent[b] || CKEDITOR.dtd.$nonEditable[b] || "br" == b); + this.isEmpty = !!CKEDITOR.dtd.$empty[a]; + this.isUnknown = !CKEDITOR.dtd[a]; + this._ = { + isBlockLike: b, + hasInlineStarted: this.isEmpty || !b + } + }; + CKEDITOR.htmlParser.cssStyle = function(a) { + var d = {}; + ((a instanceof CKEDITOR.htmlParser.element ? a.attributes.style : a) || "").replace(/"/g, '"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function(a, c, f) { + "font-family" == c && (f = f.replace(/["']/g, "")); + d[c.toLowerCase()] = f + }); + return { + rules: d, + populate: function(a) { + var c = this.toString(); + c && (a instanceof CKEDITOR.dom.element ? a.setAttribute("style", c) : a instanceof CKEDITOR.htmlParser.element ? a.attributes.style = c : a.style = c) + }, + toString: function() { + var a = [], + c; + for (c in d) d[c] && a.push(c, ":", d[c], ";"); + return a.join("") + } + } + }; + (function() { + function a(a) { + return function(b) { + return b.type == CKEDITOR.NODE_ELEMENT && ("string" == typeof a ? b.name == a : b.name in a) + } + } + var d = function(a, b) { + a = a[0]; + b = b[0]; + return a < b ? -1 : a > b ? 1 : 0 + }, + b = CKEDITOR.htmlParser.fragment.prototype; + CKEDITOR.htmlParser.element.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node, { + type: CKEDITOR.NODE_ELEMENT, + add: b.add, + clone: function() { + return new CKEDITOR.htmlParser.element(this.name, this.attributes) + }, + filter: function(a, b) { + var d = this, + k, g; + b = d.getFilterContext(b); + if (b.off) return !0; + if (!d.parent) a.onRoot(b, d); + for (;;) { + k = d.name; + if (!(g = a.onElementName(b, k))) return this.remove(), !1; + d.name = g; + if (!(d = a.onElement(b, d))) return this.remove(), !1; + if (d !== this) return this.replaceWith(d), !1; + if (d.name == k) break; + if (d.type != CKEDITOR.NODE_ELEMENT) return this.replaceWith(d), !1; + if (!d.name) return this.replaceWithChildren(), !1 + } + k = d.attributes; + var n, r; + for (n in k) { + for (g = k[n];;) + if (r = a.onAttributeName(b, n)) + if (r != n) delete k[n], n = r; + else break; + else { + delete k[n]; + break + } + r && (!1 === (g = a.onAttribute(b, d, r, g)) ? delete k[r] : + k[r] = g) + } + d.isEmpty || this.filterChildren(a, !1, b); + return !0 + }, + filterChildren: b.filterChildren, + writeHtml: function(a, b) { + b && this.filter(b); + var h = this.name, + k = [], + g = this.attributes, + n, r; + a.openTag(h, g); + for (n in g) k.push([n, g[n]]); + a.sortAttributes && k.sort(d); + n = 0; + for (r = k.length; n < r; n++) g = k[n], a.attribute(g[0], g[1]); + a.openTagClose(h, this.isEmpty); + this.writeChildrenHtml(a); + this.isEmpty || a.closeTag(h) + }, + writeChildrenHtml: b.writeChildrenHtml, + replaceWithChildren: function() { + for (var a = this.children, b = a.length; b;) a[--b].insertAfter(this); + this.remove() + }, + forEach: b.forEach, + getFirst: function(b) { + if (!b) return this.children.length ? this.children[0] : null; + "function" != typeof b && (b = a(b)); + for (var d = 0, h = this.children.length; d < h; ++d) + if (b(this.children[d])) return this.children[d]; + return null + }, + getHtml: function() { + var a = new CKEDITOR.htmlParser.basicWriter; + this.writeChildrenHtml(a); + return a.getHtml() + }, + setHtml: function(a) { + a = this.children = CKEDITOR.htmlParser.fragment.fromHtml(a).children; + for (var b = 0, d = a.length; b < d; ++b) a[b].parent = this + }, + getOuterHtml: function() { + var a = + new CKEDITOR.htmlParser.basicWriter; + this.writeHtml(a); + return a.getHtml() + }, + split: function(a) { + for (var b = this.children.splice(a, this.children.length - a), d = this.clone(), k = 0; k < b.length; ++k) b[k].parent = d; + d.children = b; + b[0] && (b[0].previous = null); + 0 < a && (this.children[a - 1].next = null); + this.parent.add(d, this.getIndex() + 1); + return d + }, + find: function(a, b) { + void 0 === b && (b = !1); + var d = [], + k; + for (k = 0; k < this.children.length; k++) { + var g = this.children[k]; + "function" == typeof a && a(g) ? d.push(g) : "string" == typeof a && g.name === a && d.push(g); + b && g.find && (d = d.concat(g.find(a, b))) + } + return d + }, + addClass: function(a) { + if (!this.hasClass(a)) { + var b = this.attributes["class"] || ""; + this.attributes["class"] = b + (b ? " " : "") + a + } + }, + removeClass: function(a) { + var b = this.attributes["class"]; + b && ((b = CKEDITOR.tools.trim(b.replace(new RegExp("(?:\\s+|^)" + a + "(?:\\s+|$)"), " "))) ? this.attributes["class"] = b : delete this.attributes["class"]) + }, + hasClass: function(a) { + var b = this.attributes["class"]; + return b ? (new RegExp("(?:^|\\s)" + a + "(?\x3d\\s|$)")).test(b) : !1 + }, + getFilterContext: function(a) { + var b = []; + a || (a = { + off: !1, + nonEditable: !1, + nestedEditable: !1 + }); + a.off || "off" != this.attributes["data-cke-processor"] || b.push("off", !0); + a.nonEditable || "false" != this.attributes.contenteditable ? a.nonEditable && !a.nestedEditable && "true" == this.attributes.contenteditable && b.push("nestedEditable", !0) : b.push("nonEditable", !0); + if (b.length) { + a = CKEDITOR.tools.copy(a); + for (var d = 0; d < b.length; d += 2) a[b[d]] = b[d + 1] + } + return a + } + }, !0) + })(); + (function() { + var a = /{([^}]+)}/g; + CKEDITOR.template = function(a) { + this.source = String(a) + }; + CKEDITOR.template.prototype.output = function(d, b) { + var c = this.source.replace(a, function(a, b) { + return void 0 !== d[b] ? d[b] : a + }); + return b ? b.push(c) : c + } + })(); + delete CKEDITOR.loadFullCore; + CKEDITOR.instances = {}; + CKEDITOR.document = new CKEDITOR.dom.document(document); + CKEDITOR.add = function(a) { + CKEDITOR.instances[a.name] = a; + a.on("focus", function() { + CKEDITOR.currentInstance != a && (CKEDITOR.currentInstance = a, CKEDITOR.fire("currentInstance")) + }); + a.on("blur", function() { + CKEDITOR.currentInstance == a && (CKEDITOR.currentInstance = null, CKEDITOR.fire("currentInstance")) + }); + CKEDITOR.fire("instance", null, a) + }; + CKEDITOR.remove = function(a) { + delete CKEDITOR.instances[a.name] + }; + (function() { + var a = {}; + CKEDITOR.addTemplate = function(d, b) { + var c = a[d]; + if (c) return c; + c = { + name: d, + source: b + }; + CKEDITOR.fire("template", c); + return a[d] = new CKEDITOR.template(c.source) + }; + CKEDITOR.getTemplate = function(d) { + return a[d] + } + })(); + (function() { + var a = []; + CKEDITOR.addCss = function(d) { + a.push(d) + }; + CKEDITOR.getCss = function() { + return a.join("\n") + } + })(); + CKEDITOR.on("instanceDestroyed", function() { + CKEDITOR.tools.isEmpty(this.instances) && CKEDITOR.fire("reset") + }); + CKEDITOR.TRISTATE_ON = 1; + CKEDITOR.TRISTATE_OFF = 2; + CKEDITOR.TRISTATE_DISABLED = 0; + (function() { + CKEDITOR.inline = function(a, d) { + if (!CKEDITOR.env.isCompatible) return null; + a = CKEDITOR.dom.element.get(a); + if (a.getEditor()) throw 'The editor instance "' + a.getEditor().name + '" is already attached to the provided element.'; + var b = new CKEDITOR.editor(d, a, CKEDITOR.ELEMENT_MODE_INLINE), + c = a.is("textarea") ? a : null; + c ? (b.setData(c.getValue(), null, !0), a = CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"' + !!b.readOnly + '" class\x3d"cke_textarea_inline"\x3e' + c.getValue() + "\x3c/div\x3e", CKEDITOR.document), + a.insertAfter(c), c.hide(), c.$.form && b._attachToForm()) : b.setData(a.getHtml(), null, !0); + b.on("loaded", function() { + b.fire("uiReady"); + b.editable(a); + b.container = a; + b.ui.contentsElement = a; + b.setData(b.getData(1)); + b.resetDirty(); + b.fire("contentDom"); + b.mode = "wysiwyg"; + b.fire("mode"); + b.status = "ready"; + b.fireOnce("instanceReady"); + CKEDITOR.fire("instanceReady", null, b) + }, null, null, 1E4); + b.on("destroy", function() { + c && (b.container.clearCustomData(), b.container.remove(), c.show()); + b.element.clearCustomData(); + delete b.element + }); + return b + }; + CKEDITOR.inlineAll = function() { + var a, d, b; + for (b in CKEDITOR.dtd.$editable) + for (var c = CKEDITOR.document.getElementsByTag(b), f = 0, h = c.count(); f < h; f++) a = c.getItem(f), "true" == a.getAttribute("contenteditable") && (d = { + element: a, + config: {} + }, !1 !== CKEDITOR.fire("inline", d) && CKEDITOR.inline(a, d.config)) + }; + CKEDITOR.domReady(function() { + !CKEDITOR.disableAutoInline && CKEDITOR.inlineAll() + }) + })(); + CKEDITOR.replaceClass = "ckeditor"; + (function() { + function a(a, f, h, k) { + if (!CKEDITOR.env.isCompatible) return null; + a = CKEDITOR.dom.element.get(a); + if (a.getEditor()) throw 'The editor instance "' + a.getEditor().name + '" is already attached to the provided element.'; + var g = new CKEDITOR.editor(f, a, k); + k == CKEDITOR.ELEMENT_MODE_REPLACE && (a.setStyle("visibility", "hidden"), g._.required = a.hasAttribute("required"), a.removeAttribute("required")); + h && g.setData(h, null, !0); + g.on("loaded", function() { + b(g); + k == CKEDITOR.ELEMENT_MODE_REPLACE && g.config.autoUpdateElement && + a.$.form && g._attachToForm(); + g.setMode(g.config.startupMode, function() { + g.resetDirty(); + g.status = "ready"; + g.fireOnce("instanceReady"); + CKEDITOR.fire("instanceReady", null, g) + }) + }); + g.on("destroy", d); + return g + } + + function d() { + var a = this.container, + b = this.element; + a && (a.clearCustomData(), a.remove()); + b && (b.clearCustomData(), this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (b.show(), this._.required && b.setAttribute("required", "required")), delete this.element) + } + + function b(a) { + var b = a.name, + d = a.element, + k = a.elementMode, + g = + a.fire("uiSpace", { + space: "top", + html: "" + }).html, + n = a.fire("uiSpace", { + space: "bottom", + html: "" + }).html, + r = new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} ' + CKEDITOR.env.cssClass + '" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"' + (a.title ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : "") + "\x3e" + (a.title ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : "") + '\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'), + b = CKEDITOR.dom.element.createFromHtml(r.output({ + id: a.id, + name: b, + langDir: a.lang.dir, + langCode: a.langCode, + voiceLabel: a.title, + topHtml: g ? '\x3cspan id\x3d"' + a.ui.spaceId("top") + '" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e' + g + "\x3c/span\x3e" : "", + contentId: a.ui.spaceId("contents"), + bottomHtml: n ? '\x3cspan id\x3d"' + a.ui.spaceId("bottom") + '" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e' + n + "\x3c/span\x3e" : "", + outerEl: CKEDITOR.env.ie ? "span" : "div" + })); + k == CKEDITOR.ELEMENT_MODE_REPLACE ? + (d.hide(), b.insertAfter(d)) : d.append(b); + a.container = b; + a.ui.contentsElement = a.ui.space("contents"); + g && a.ui.space("top").unselectable(); + n && a.ui.space("bottom").unselectable(); + d = a.config.width; + k = a.config.height; + d && b.setStyle("width", CKEDITOR.tools.cssLength(d)); + k && a.ui.space("contents").setStyle("height", CKEDITOR.tools.cssLength(k)); + b.disableContextMenu(); + CKEDITOR.env.webkit && b.on("focus", function() { + a.focus() + }); + a.fireOnce("uiReady") + } + CKEDITOR.replace = function(b, d) { + return a(b, d, null, CKEDITOR.ELEMENT_MODE_REPLACE) + }; + CKEDITOR.appendTo = function(b, d, h) { + return a(b, d, h, CKEDITOR.ELEMENT_MODE_APPENDTO) + }; + CKEDITOR.replaceAll = function() { + for (var a = document.getElementsByTagName("textarea"), b = 0; b < a.length; b++) { + var d = null, + k = a[b]; + if (k.name || k.id) { + if ("string" == typeof arguments[0]) { + if (!(new RegExp("(?:^|\\s)" + arguments[0] + "(?:$|\\s)")).test(k.className)) continue + } else if ("function" == typeof arguments[0] && (d = {}, !1 === arguments[0](k, d))) continue; + this.replace(k, d) + } + } + }; + CKEDITOR.editor.prototype.addMode = function(a, b) { + (this._.modes || (this._.modes = {}))[a] = b + }; + CKEDITOR.editor.prototype.setMode = function(a, b) { + var d = this, + k = this._.modes; + if (a != d.mode && k && k[a]) { + d.fire("beforeSetMode", a); + if (d.mode) { + var g = d.checkDirty(), + k = d._.previousModeData, + n, r = 0; + d.fire("beforeModeUnload"); + d.editable(0); + d._.previousMode = d.mode; + d._.previousModeData = n = d.getData(1); + "source" == d.mode && k == n && (d.fire("lockSnapshot", { + forceUpdate: !0 + }), r = 1); + d.ui.space("contents").setHtml(""); + d.mode = "" + } else d._.previousModeData = d.getData(1); + this._.modes[a](function() { + d.mode = a; + void 0 !== g && !g && + d.resetDirty(); + r ? d.fire("unlockSnapshot") : "wysiwyg" == a && d.fire("saveSnapshot"); + setTimeout(function() { + d.fire("mode"); + b && b.call(d) + }, 0) + }) + } + }; + CKEDITOR.editor.prototype.resize = function(a, b, d, k) { + var g = this.container, + n = this.ui.space("contents"), + r = CKEDITOR.env.webkit && this.document && this.document.getWindow().$.frameElement; + k = k ? this.container.getFirst(function(a) { + return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_inner") + }) : g; + k.setSize("width", a, !0); + r && (r.style.width = "1%"); + var e = (k.$.offsetHeight || 0) - (n.$.clientHeight || + 0), + g = Math.max(b - (d ? 0 : e), 0); + b = d ? b + e : b; + n.setStyle("height", g + "px"); + r && (r.style.width = "100%"); + this.fire("resize", { + outerHeight: b, + contentsHeight: g, + outerWidth: a || k.getSize("width") + }) + }; + CKEDITOR.editor.prototype.getResizable = function(a) { + return a ? this.ui.space("contents") : this.container + }; + CKEDITOR.domReady(function() { + CKEDITOR.replaceClass && CKEDITOR.replaceAll(CKEDITOR.replaceClass) + }) + })(); + CKEDITOR.config.startupMode = "wysiwyg"; + (function() { + function a(a) { + var b = a.editor, + e = a.data.path, + f = e.blockLimit, + g = a.data.selection, + h = g.getRanges()[0], + q; + if (CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller) + if (g = d(g, e)) g.appendBogus(), q = CKEDITOR.env.ie; + k(b, e.block, f) && h.collapsed && !h.getCommonAncestor().isReadOnly() && (e = h.clone(), e.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS), f = new CKEDITOR.dom.walker(e), f.guard = function(a) { + return !c(a) || a.type == CKEDITOR.NODE_COMMENT || a.isReadOnly() + }, !f.checkForward() || e.checkStartOfBlock() && e.checkEndOfBlock()) && + (b = h.fixBlock(!0, b.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p"), CKEDITOR.env.needsBrFiller || (b = b.getFirst(c)) && b.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(b.getText()).match(/^(?: |\xa0)$/) && b.remove(), q = 1, a.cancel()); + q && h.select() + } + + function d(a, b) { + if (a.isFake) return 0; + var d = b.block || b.blockLimit, + e = d && d.getLast(c); + if (!(!d || !d.isBlockBoundary() || e && e.type == CKEDITOR.NODE_ELEMENT && e.isBlockBoundary() || d.is("pre") || d.getBogus())) return d + } + + function b(a) { + var b = a.data.getTarget(); + b.is("input") && + (b = b.getAttribute("type"), "submit" != b && "reset" != b || a.data.preventDefault()) + } + + function c(a) { + return e(a) && y(a) + } + + function f(a, b) { + return function(c) { + var d = c.data.$.toElement || c.data.$.fromElement || c.data.$.relatedTarget; + (d = d && d.nodeType == CKEDITOR.NODE_ELEMENT ? new CKEDITOR.dom.element(d) : null) && (b.equals(d) || b.contains(d)) || a.call(this, c) + } + } + + function h(a) { + function b(a) { + return function(b, e) { + e && b.type == CKEDITOR.NODE_ELEMENT && b.is(f) && (d = b); + if (!(e || !c(b) || a && B(b))) return !1 + } + } + var d, e = a.getRanges()[0]; + a = a.root; + var f = { + table: 1, + ul: 1, + ol: 1, + dl: 1 + }; + if (e.startPath().contains(f)) { + var g = e.clone(); + g.collapse(1); + g.setStartAt(a, CKEDITOR.POSITION_AFTER_START); + a = new CKEDITOR.dom.walker(g); + a.guard = b(); + a.checkBackward(); + if (d) return g = e.clone(), g.collapse(), g.setEndAt(d, CKEDITOR.POSITION_AFTER_END), a = new CKEDITOR.dom.walker(g), a.guard = b(!0), d = !1, a.checkForward(), d + } + return null + } + + function k(a, b, c) { + return !1 !== a.config.autoParagraph && a.activeEnterMode != CKEDITOR.ENTER_BR && (a.editable().equals(c) && !b || b && "true" == b.getAttribute("contenteditable")) + } + + function g(a) { + return a.activeEnterMode != CKEDITOR.ENTER_BR && !1 !== a.config.autoParagraph ? a.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p" : !1 + } + + function n(a) { + var b = a.editor; + b.getSelection().scrollIntoView(); + setTimeout(function() { + b.fire("saveSnapshot") + }, 0) + } + + function r(a, b, c) { + var d = a.getCommonAncestor(b); + for (b = a = c ? b : a; + (a = a.getParent()) && !d.equals(a) && 1 == a.getChildCount();) b = a; + b.remove() + } + var e, y, v, B, D, x, m, J, u, K; + CKEDITOR.editable = CKEDITOR.tools.createClass({ + base: CKEDITOR.dom.element, + $: function(a, b) { + this.base(b.$ || + b); + this.editor = a; + this.status = "unloaded"; + this.hasFocus = !1; + this.setup() + }, + proto: { + focus: function() { + var a; + if (CKEDITOR.env.webkit && !this.hasFocus && (a = this.editor._.previousActive || this.getDocument().getActive(), this.contains(a))) { + a.focus(); + return + } + CKEDITOR.env.edge && 14 < CKEDITOR.env.version && !this.hasFocus && this.getDocument().equals(CKEDITOR.document) && (this.editor._.previousScrollTop = this.$.scrollTop); + try { + if (!CKEDITOR.env.ie || CKEDITOR.env.edge && 14 < CKEDITOR.env.version || !this.getDocument().equals(CKEDITOR.document)) + if (CKEDITOR.env.chrome) { + var b = + this.$.scrollTop; + this.$.focus(); + this.$.scrollTop = b + } else this.$.focus(); + else this.$.setActive() + } catch (c) { + if (!CKEDITOR.env.ie) throw c; + } + CKEDITOR.env.safari && !this.isInline() && (a = CKEDITOR.document.getActive(), a.equals(this.getWindow().getFrame()) || this.getWindow().focus()) + }, + on: function(a, b) { + var c = Array.prototype.slice.call(arguments, 0); + CKEDITOR.env.ie && /^focus|blur$/.exec(a) && (a = "focus" == a ? "focusin" : "focusout", b = f(b, this), c[0] = a, c[1] = b); + return CKEDITOR.dom.element.prototype.on.apply(this, c) + }, + attachListener: function(a) { + !this._.listeners && + (this._.listeners = []); + var b = Array.prototype.slice.call(arguments, 1), + b = a.on.apply(a, b); + this._.listeners.push(b); + return b + }, + clearListeners: function() { + var a = this._.listeners; + try { + for (; a.length;) a.pop().removeListener() + } catch (b) {} + }, + restoreAttrs: function() { + var a = this._.attrChanges, + b, c; + for (c in a) a.hasOwnProperty(c) && (b = a[c], null !== b ? this.setAttribute(c, b) : this.removeAttribute(c)) + }, + attachClass: function(a) { + var b = this.getCustomData("classes"); + this.hasClass(a) || (!b && (b = []), b.push(a), this.setCustomData("classes", + b), this.addClass(a)) + }, + changeAttr: function(a, b) { + var c = this.getAttribute(a); + b !== c && (!this._.attrChanges && (this._.attrChanges = {}), a in this._.attrChanges || (this._.attrChanges[a] = c), this.setAttribute(a, b)) + }, + insertText: function(a) { + this.editor.focus(); + this.insertHtml(this.transformPlainTextToHtml(a), "text") + }, + transformPlainTextToHtml: function(a) { + var b = this.editor.getSelection().getStartElement().hasAscendant("pre", !0) ? CKEDITOR.ENTER_BR : this.editor.activeEnterMode; + return CKEDITOR.tools.transformPlainTextToHtml(a, + b) + }, + insertHtml: function(a, b, c) { + var d = this.editor; + d.focus(); + d.fire("saveSnapshot"); + c || (c = d.getSelection().getRanges()[0]); + x(this, b || "html", a, c); + c.select(); + n(this); + this.editor.fire("afterInsertHtml", {}) + }, + insertHtmlIntoRange: function(a, b, c) { + x(this, c || "html", a, b); + this.editor.fire("afterInsertHtml", { + intoRange: b + }) + }, + insertElement: function(a, b) { + var d = this.editor; + d.focus(); + d.fire("saveSnapshot"); + var e = d.activeEnterMode, + d = d.getSelection(), + f = a.getName(), + f = CKEDITOR.dtd.$block[f]; + b || (b = d.getRanges()[0]); + this.insertElementIntoRange(a, + b) && (b.moveToPosition(a, CKEDITOR.POSITION_AFTER_END), f && ((f = a.getNext(function(a) { + return c(a) && !B(a) + })) && f.type == CKEDITOR.NODE_ELEMENT && f.is(CKEDITOR.dtd.$block) ? f.getDtd()["#"] ? b.moveToElementEditStart(f) : b.moveToElementEditEnd(a) : f || e == CKEDITOR.ENTER_BR || (f = b.fixBlock(!0, e == CKEDITOR.ENTER_DIV ? "div" : "p"), b.moveToElementEditStart(f)))); + d.selectRanges([b]); + n(this) + }, + insertElementIntoSelection: function(a) { + this.insertElement(a) + }, + insertElementIntoRange: function(a, b) { + var c = this.editor, + d = c.config.enterMode, + e = a.getName(), + f = CKEDITOR.dtd.$block[e]; + if (b.checkReadOnly()) return !1; + b.deleteContents(1); + b.startContainer.type == CKEDITOR.NODE_ELEMENT && (b.startContainer.is({ + tr: 1, + table: 1, + tbody: 1, + thead: 1, + tfoot: 1 + }) ? m(b) : b.startContainer.is(CKEDITOR.dtd.$list) && J(b)); + var q, g; + if (f) + for (; + (q = b.getCommonAncestor(0, 1)) && (g = CKEDITOR.dtd[q.getName()]) && (!g || !g[e]);) q.getName() in CKEDITOR.dtd.span ? b.splitElement(q) : b.checkStartOfBlock() && b.checkEndOfBlock() ? (b.setStartBefore(q), b.collapse(!0), q.remove()) : b.splitBlock(d == CKEDITOR.ENTER_DIV ? + "div" : "p", c.editable()); + b.insertNode(a); + return !0 + }, + setData: function(a, b) { + b || (a = this.editor.dataProcessor.toHtml(a)); + this.setHtml(a); + this.fixInitialSelection(); + "unloaded" == this.status && (this.status = "ready"); + this.editor.fire("dataReady") + }, + getData: function(a) { + var b = this.getHtml(); + a || (b = this.editor.dataProcessor.toDataFormat(b)); + return b + }, + setReadOnly: function(a) { + this.setAttribute("contenteditable", !a) + }, + detach: function() { + this.removeClass("cke_editable"); + this.status = "detached"; + var a = this.editor; + this._.detach(); + delete a.document; + delete a.window + }, + isInline: function() { + return this.getDocument().equals(CKEDITOR.document) + }, + fixInitialSelection: function() { + function a() { + var b = c.getDocument().$, + d = b.getSelection(), + e; + a: if (d.anchorNode && d.anchorNode == c.$) e = !0; + else { + if (CKEDITOR.env.webkit && (e = c.getDocument().getActive()) && e.equals(c) && !d.anchorNode) { + e = !0; + break a + } + e = void 0 + } e && (e = new CKEDITOR.dom.range(c), e.moveToElementEditStart(c), b = b.createRange(), b.setStart(e.startContainer.$, e.startOffset), b.collapse(!0), d.removeAllRanges(), + d.addRange(b)) + } + + function b() { + var a = c.getDocument().$, + d = a.selection, + e = c.getDocument().getActive(); + "None" == d.type && e.equals(c) && (d = new CKEDITOR.dom.range(c), a = a.body.createTextRange(), d.moveToElementEditStart(c), d = d.startContainer, d.type != CKEDITOR.NODE_ELEMENT && (d = d.getParent()), a.moveToElementText(d.$), a.collapse(!0), a.select()) + } + var c = this; + if (CKEDITOR.env.ie && (9 > CKEDITOR.env.version || CKEDITOR.env.quirks)) this.hasFocus && (this.focus(), b()); + else if (this.hasFocus) this.focus(), a(); + else this.once("focus", + function() { + a() + }, null, null, -999) + }, + getHtmlFromRange: function(a) { + if (a.collapsed) return new CKEDITOR.dom.documentFragment(a.document); + a = { + doc: this.getDocument(), + range: a.clone() + }; + u.eol.detect(a, this); + u.bogus.exclude(a); + u.cell.shrink(a); + a.fragment = a.range.cloneContents(); + u.tree.rebuild(a, this); + u.eol.fix(a, this); + return new CKEDITOR.dom.documentFragment(a.fragment.$) + }, + extractHtmlFromRange: function(a, b) { + var c = K, + d = { + range: a, + doc: a.document + }, + e = this.getHtmlFromRange(a); + if (a.collapsed) return a.optimize(), e; + a.enlarge(CKEDITOR.ENLARGE_INLINE, + 1); + c.table.detectPurge(d); + d.bookmark = a.createBookmark(); + delete d.range; + var f = this.editor.createRange(); + f.moveToPosition(d.bookmark.startNode, CKEDITOR.POSITION_BEFORE_START); + d.targetBookmark = f.createBookmark(); + c.list.detectMerge(d, this); + c.table.detectRanges(d, this); + c.block.detectMerge(d, this); + d.tableContentsRanges ? (c.table.deleteRanges(d), a.moveToBookmark(d.bookmark), d.range = a) : (a.moveToBookmark(d.bookmark), d.range = a, a.extractContents(c.detectExtractMerge(d))); + a.moveToBookmark(d.targetBookmark); + a.optimize(); + c.fixUneditableRangePosition(a); + c.list.merge(d, this); + c.table.purge(d, this); + c.block.merge(d, this); + if (b) { + c = a.startPath(); + if (d = a.checkStartOfBlock() && a.checkEndOfBlock() && c.block && !a.root.equals(c.block)) { + a: { + var d = c.block.getElementsByTag("span"), + f = 0, + q; + if (d) + for (; q = d.getItem(f++);) + if (!y(q)) { + d = !0; + break a + } d = !1 + } + d = !d + } + d && (a.moveToPosition(c.block, CKEDITOR.POSITION_BEFORE_START), c.block.remove()) + } else c.autoParagraph(this.editor, a), v(a.startContainer) && a.startContainer.appendBogus(); + a.startContainer.mergeSiblings(); + return e + }, + setup: function() { + var a = this.editor; + this.attachListener(a, "beforeGetData", function() { + var b = this.getData(); + this.is("textarea") || !1 !== a.config.ignoreEmptyParagraph && (b = b.replace(D, function(a, b) { + return b + })); + a.setData(b, null, 1) + }, this); + this.attachListener(a, "getSnapshot", function(a) { + a.data = this.getData(1) + }, this); + this.attachListener(a, "afterSetData", function() { + this.setData(a.getData(1)) + }, this); + this.attachListener(a, "loadSnapshot", function(a) { + this.setData(a.data, 1) + }, this); + this.attachListener(a, + "beforeFocus", + function() { + var b = a.getSelection(); + (b = b && b.getNative()) && "Control" == b.type || this.focus() + }, this); + this.attachListener(a, "insertHtml", function(a) { + this.insertHtml(a.data.dataValue, a.data.mode, a.data.range) + }, this); + this.attachListener(a, "insertElement", function(a) { + this.insertElement(a.data) + }, this); + this.attachListener(a, "insertText", function(a) { + this.insertText(a.data) + }, this); + this.setReadOnly(a.readOnly); + this.attachClass("cke_editable"); + a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? this.attachClass("cke_editable_inline") : + a.elementMode != CKEDITOR.ELEMENT_MODE_REPLACE && a.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || this.attachClass("cke_editable_themed"); + this.attachClass("cke_contents_" + a.config.contentsLangDirection); + a.keystrokeHandler.blockedKeystrokes[8] = +a.readOnly; + a.keystrokeHandler.attach(this); + this.on("blur", function() { + this.hasFocus = !1 + }, null, null, -1); + this.on("focus", function() { + this.hasFocus = !0 + }, null, null, -1); + if (CKEDITOR.env.webkit) this.on("scroll", function() { + a._.previousScrollTop = a.editable().$.scrollTop + }, null, + null, -1); + if (CKEDITOR.env.edge && 14 < CKEDITOR.env.version) { + var d = function() { + var b = a.editable(); + null != a._.previousScrollTop && b.getDocument().equals(CKEDITOR.document) && (b.$.scrollTop = a._.previousScrollTop, a._.previousScrollTop = null, this.removeListener("scroll", d)) + }; + this.on("scroll", d) + } + a.focusManager.add(this); + this.equals(CKEDITOR.document.getActive()) && (this.hasFocus = !0, a.once("contentDom", function() { + a.focusManager.focus(this) + }, this)); + this.isInline() && this.changeAttr("tabindex", a.tabIndex); + if (!this.is("textarea")) { + a.document = + this.getDocument(); + a.window = this.getWindow(); + var f = a.document; + this.changeAttr("spellcheck", !a.config.disableNativeSpellChecker); + var g = a.config.contentsLangDirection; + this.getDirection(1) != g && this.changeAttr("dir", g); + var k = CKEDITOR.getCss(); + if (k) { + var g = f.getHead(), + m = g.getCustomData("stylesheet"); + m ? k != m.getText() && (CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? m.$.styleSheet.cssText = k : m.setText(k)) : (k = f.appendStyleText(k), k = new CKEDITOR.dom.element(k.ownerNode || k.owningElement), g.setCustomData("stylesheet", + k), k.data("cke-temp", 1)) + } + g = f.getCustomData("stylesheet_ref") || 0; + f.setCustomData("stylesheet_ref", g + 1); + this.setCustomData("cke_includeReadonly", !a.config.disableReadonlyStyling); + this.attachListener(this, "click", function(a) { + a = a.data; + var b = (new CKEDITOR.dom.elementPath(a.getTarget(), this)).contains("a"); + b && 2 != a.$.button && b.isReadOnly() && a.preventDefault() + }); + var q = { + 8: 1, + 46: 1 + }; + this.attachListener(a, "key", function(b) { + if (a.readOnly) return !0; + var c = b.data.domEvent.getKey(), + d; + b = a.getSelection(); + if (0 !== b.getRanges().length) { + if (c in + q) { + var f, g = b.getRanges()[0], + p = g.startPath(), + k, w, A, c = 8 == c; + CKEDITOR.env.ie && 11 > CKEDITOR.env.version && (f = b.getSelectedElement()) || (f = h(b)) ? (a.fire("saveSnapshot"), g.moveToPosition(f, CKEDITOR.POSITION_BEFORE_START), f.remove(), g.select(), a.fire("saveSnapshot"), d = 1) : g.collapsed && ((k = p.block) && (A = k[c ? "getPrevious" : "getNext"](e)) && A.type == CKEDITOR.NODE_ELEMENT && A.is("table") && g[c ? "checkStartOfBlock" : "checkEndOfBlock"]() ? (a.fire("saveSnapshot"), g[c ? "checkEndOfBlock" : "checkStartOfBlock"]() && k.remove(), g["moveToElementEdit" + + (c ? "End" : "Start")](A), g.select(), a.fire("saveSnapshot"), d = 1) : p.blockLimit && p.blockLimit.is("td") && (w = p.blockLimit.getAscendant("table")) && g.checkBoundaryOfElement(w, c ? CKEDITOR.START : CKEDITOR.END) && (A = w[c ? "getPrevious" : "getNext"](e)) ? (a.fire("saveSnapshot"), g["moveToElementEdit" + (c ? "End" : "Start")](A), g.checkStartOfBlock() && g.checkEndOfBlock() ? A.remove() : g.select(), a.fire("saveSnapshot"), d = 1) : (w = p.contains(["td", "th", "caption"])) && g.checkBoundaryOfElement(w, c ? CKEDITOR.START : CKEDITOR.END) && (d = 1)) + } + return !d + } + }); + a.blockless && CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller && this.attachListener(this, "keyup", function(b) { + b.data.getKeystroke() in q && !this.getFirst(c) && (this.appendBogus(), b = a.createRange(), b.moveToPosition(this, CKEDITOR.POSITION_AFTER_START), b.select()) + }); + this.attachListener(this, "dblclick", function(b) { + if (a.readOnly) return !1; + b = { + element: b.data.getTarget() + }; + a.fire("doubleclick", b) + }); + CKEDITOR.env.ie && this.attachListener(this, "click", b); + CKEDITOR.env.ie && !CKEDITOR.env.edge || this.attachListener(this, "mousedown", + function(b) { + var c = b.data.getTarget(); + c.is("img", "hr", "input", "textarea", "select") && !c.isReadOnly() && (a.getSelection().selectElement(c), c.is("input", "textarea", "select") && b.data.preventDefault()) + }); + CKEDITOR.env.edge && this.attachListener(this, "mouseup", function(b) { + (b = b.data.getTarget()) && b.is("img") && !b.isReadOnly() && a.getSelection().selectElement(b) + }); + CKEDITOR.env.gecko && this.attachListener(this, "mouseup", function(b) { + if (2 == b.data.$.button && (b = b.data.getTarget(), !b.getAscendant("table") && !b.getOuterHtml().replace(D, + ""))) { + var c = a.createRange(); + c.moveToElementEditStart(b); + c.select(!0) + } + }); + CKEDITOR.env.webkit && (this.attachListener(this, "click", function(a) { + a.data.getTarget().is("input", "select") && a.data.preventDefault() + }), this.attachListener(this, "mouseup", function(a) { + a.data.getTarget().is("input", "textarea") && a.data.preventDefault() + })); + CKEDITOR.env.webkit && this.attachListener(a, "key", function(b) { + if (a.readOnly) return !0; + var c = b.data.domEvent.getKey(); + if (c in q && (b = a.getSelection(), 0 !== b.getRanges().length)) { + var c = + 8 == c, + d = b.getRanges()[0]; + b = d.startPath(); + if (d.collapsed) a: { + var e = b.block; + if (e && d[c ? "checkStartOfBlock" : "checkEndOfBlock"]() && d.moveToClosestEditablePosition(e, !c) && d.collapsed) { + if (d.startContainer.type == CKEDITOR.NODE_ELEMENT) { + var f = d.startContainer.getChild(d.startOffset - (c ? 1 : 0)); + if (f && f.type == CKEDITOR.NODE_ELEMENT && f.is("hr")) { + a.fire("saveSnapshot"); + f.remove(); + b = !0; + break a + } + } + d = d.startPath().block; + if (!d || d && d.contains(e)) b = void 0; + else { + a.fire("saveSnapshot"); + var p; + (p = (c ? d : e).getBogus()) && p.remove(); + p = a.getSelection(); + f = p.createBookmarks(); + (c ? e : d).moveChildren(c ? d : e, !1); + b.lastElement.mergeSiblings(); + r(e, d, !c); + p.selectBookmarks(f); + b = !0 + } + } else b = !1 + } + else c = d, p = b.block, d = c.endPath().block, p && d && !p.equals(d) ? (a.fire("saveSnapshot"), (e = p.getBogus()) && e.remove(), c.enlarge(CKEDITOR.ENLARGE_INLINE), c.deleteContents(), d.getParent() && (d.moveChildren(p, !1), b.lastElement.mergeSiblings(), r(p, d, !0)), c = a.getSelection().getRanges()[0], c.collapse(1), c.optimize(), "" === c.startContainer.getHtml() && c.startContainer.appendBogus(), + c.select(), b = !0) : b = !1; + if (!b) return; + a.getSelection().scrollIntoView(); + a.fire("saveSnapshot"); + return !1 + } + }, this, null, 100) + } + } + }, + _: { + detach: function() { + this.editor.setData(this.editor.getData(), 0, 1); + this.clearListeners(); + this.restoreAttrs(); + var a; + if (a = this.removeCustomData("classes")) + for (; a.length;) this.removeClass(a.pop()); + if (!this.is("textarea")) { + a = this.getDocument(); + var b = a.getHead(); + if (b.getCustomData("stylesheet")) { + var c = a.getCustomData("stylesheet_ref"); + --c ? a.setCustomData("stylesheet_ref", c) : (a.removeCustomData("stylesheet_ref"), + b.removeCustomData("stylesheet").remove()) + } + } + this.editor.fire("contentDomUnload"); + delete this.editor + } + } + }); + CKEDITOR.editor.prototype.editable = function(a) { + var b = this._.editable; + if (b && a) return 0; + arguments.length && (b = this._.editable = a ? a instanceof CKEDITOR.editable ? a : new CKEDITOR.editable(this, a) : (b && b.detach(), null)); + return b + }; + CKEDITOR.on("instanceLoaded", function(b) { + var c = b.editor; + c.on("insertElement", function(a) { + a = a.data; + a.type == CKEDITOR.NODE_ELEMENT && (a.is("input") || a.is("textarea")) && ("false" != a.getAttribute("contentEditable") && + a.data("cke-editable", a.hasAttribute("contenteditable") ? "true" : "1"), a.setAttribute("contentEditable", !1)) + }); + c.on("selectionChange", function(b) { + if (!c.readOnly) { + var d = c.getSelection(); + d && !d.isLocked && (d = c.checkDirty(), c.fire("lockSnapshot"), a(b), c.fire("unlockSnapshot"), !d && c.resetDirty()) + } + }) + }); + CKEDITOR.on("instanceCreated", function(a) { + var b = a.editor; + b.on("mode", function() { + var a = b.editable(); + if (a && a.isInline()) { + var c = b.title; + a.changeAttr("role", "textbox"); + a.changeAttr("aria-multiline", "true"); + a.changeAttr("aria-label", + c); + c && a.changeAttr("title", c); + var d = b.fire("ariaEditorHelpLabel", {}).label; + if (d && (c = this.ui.space(this.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? "top" : "contents"))) { + var e = CKEDITOR.tools.getNextId(), + d = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + e + '" class\x3d"cke_voice_label"\x3e' + d + "\x3c/span\x3e"); + c.append(d); + a.changeAttr("aria-describedby", e) + } + } + }) + }); + CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); + e = CKEDITOR.dom.walker.whitespaces(!0); + y = CKEDITOR.dom.walker.bookmark(!1, !0); + v = CKEDITOR.dom.walker.empty(); + B = CKEDITOR.dom.walker.bogus(); + D = /(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi; + x = function() { + function a(b) { + return b.type == CKEDITOR.NODE_ELEMENT + } + + function b(c, d) { + var e, f, g, q, h = [], + z = d.range.startContainer; + e = d.range.startPath(); + for (var z = E[z.getName()], k = 0, H = c.getChildren(), m = H.count(), n = -1, r = -1, C = 0, P = e.contains(E.$list); k < m; ++k) e = H.getItem(k), a(e) ? (g = + e.getName(), P && g in CKEDITOR.dtd.$list ? h = h.concat(b(e, d)) : (q = !!z[g], "br" != g || !e.data("cke-eol") || k && k != m - 1 || (C = (f = k ? h[k - 1].node : H.getItem(k + 1)) && (!a(f) || !f.is("br")), f = f && a(f) && E.$block[f.getName()]), -1 != n || q || (n = k), q || (r = k), h.push({ + isElement: 1, + isLineBreak: C, + isBlock: e.isBlockBoundary(), + hasBlockSibling: f, + node: e, + name: g, + allowed: q + }), f = C = 0)) : h.push({ + isElement: 0, + node: e, + allowed: 1 + }); - 1 < n && (h[n].firstNotAllowed = 1); - 1 < r && (h[r].lastNotAllowed = 1); + return h + } + + function d(b, c) { + var e = [], + f = b.getChildren(), + g = f.count(), + q, h = 0, + z = E[c], + k = !b.is(E.$inline) || b.is("br"); + for (k && e.push(" "); h < g; h++) q = f.getItem(h), a(q) && !q.is(z) ? e = e.concat(d(q, c)) : e.push(q); + k && e.push(" "); + return e + } + + function e(b) { + return a(b.startContainer) && b.startContainer.getChild(b.startOffset - 1) + } + + function f(b) { + return b && a(b) && (b.is(E.$removeEmpty) || b.is("a") && !b.isBlockBoundary()) + } + + function h(b, c, d, e) { + var f = b.clone(), + g, q; + f.setEndAt(c, CKEDITOR.POSITION_BEFORE_END); + (g = (new CKEDITOR.dom.walker(f)).next()) && a(g) && z[g.getName()] && (q = g.getPrevious()) && a(q) && !q.getParent().equals(b.startContainer) && + d.contains(q) && e.contains(g) && g.isIdentical(q) && (g.moveChildren(q), g.remove(), h(b, c, d, e)) + } + + function q(b, c) { + function d(b, c) { + if (c.isBlock && c.isElement && !c.node.is("br") && a(b) && b.is("br")) return b.remove(), 1 + } + var e = c.endContainer.getChild(c.endOffset), + f = c.endContainer.getChild(c.endOffset - 1); + e && d(e, b[b.length - 1]); + f && d(f, b[0]) && (c.setEnd(c.endContainer, c.endOffset - 1), c.collapse()) + } + var E = CKEDITOR.dtd, + z = { + p: 1, + div: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1, + ul: 1, + ol: 1, + li: 1, + pre: 1, + dl: 1, + blockquote: 1 + }, + H = { + p: 1, + div: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1 + }, + m = CKEDITOR.tools.extend({}, E.$inline); + delete m.br; + return function(z, p, N, w) { + var A = z.editor, + G = !1; + "unfiltered_html" == p && (p = "html", G = !0); + if (!w.checkReadOnly()) { + var I = (new CKEDITOR.dom.elementPath(w.startContainer, w.root)).blockLimit || w.root; + z = { + type: p, + dontFilter: G, + editable: z, + editor: A, + range: w, + blockLimit: I, + mergeCandidates: [], + zombies: [] + }; + p = z.range; + w = z.mergeCandidates; + var n, r; + "text" == z.type && p.shrink(CKEDITOR.SHRINK_ELEMENT, !0, !1) && (n = CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", + p.document), p.insertNode(n), p.setStartAfter(n)); + G = new CKEDITOR.dom.elementPath(p.startContainer); + z.endPath = I = new CKEDITOR.dom.elementPath(p.endContainer); + if (!p.collapsed) { + var A = I.block || I.blockLimit, + v = p.getCommonAncestor(); + A && !A.equals(v) && !A.contains(v) && p.checkEndOfBlock() && z.zombies.push(A); + p.deleteContents() + } + for (; + (r = e(p)) && a(r) && r.isBlockBoundary() && G.contains(r);) p.moveToPosition(r, CKEDITOR.POSITION_BEFORE_END); + h(p, z.blockLimit, G, I); + n && (p.setEndBefore(n), p.collapse(), n.remove()); + n = p.startPath(); + if (A = n.contains(f, !1, 1)) p.splitElement(A), z.inlineStylesRoot = A, z.inlineStylesPeak = n.lastElement; + n = p.createBookmark(); + (A = n.startNode.getPrevious(c)) && a(A) && f(A) && w.push(A); + (A = n.startNode.getNext(c)) && a(A) && f(A) && w.push(A); + for (A = n.startNode; + (A = A.getParent()) && f(A);) w.push(A); + p.moveToBookmark(n); + if (n = N) { + n = z.range; + if ("text" == z.type && z.inlineStylesRoot) { + r = z.inlineStylesPeak; + p = r.getDocument().createText("{cke-peak}"); + for (w = z.inlineStylesRoot.getParent(); !r.equals(w);) p = p.appendTo(r.clone()), r = r.getParent(); + N = p.getOuterHtml().split("{cke-peak}").join(N) + } + r = z.blockLimit.getName(); + if (/^\s+|\s+$/.test(N) && "span" in CKEDITOR.dtd[r]) { + var x = '\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e'; + N = x + N + x + } + N = z.editor.dataProcessor.toHtml(N, { + context: null, + fixForBody: !1, + protectedWhitespaces: !!x, + dontFilter: z.dontFilter, + filter: z.editor.activeFilter, + enterMode: z.editor.activeEnterMode + }); + r = n.document.createElement("body"); + r.setHtml(N); + x && (r.getFirst().remove(), r.getLast().remove()); + if ((x = n.startPath().block) && (1 != + x.getChildCount() || !x.getBogus())) a: { + var y; + if (1 == r.getChildCount() && a(y = r.getFirst()) && y.is(H) && !y.hasAttribute("contenteditable")) { + x = y.getElementsByTag("*"); + n = 0; + for (w = x.count(); n < w; n++) + if (p = x.getItem(n), !p.is(m)) break a; + y.moveChildren(y.getParent(1)); + y.remove() + } + } + z.dataWrapper = r; + n = N + } + if (n) { + y = z.range; + n = y.document; + var u; + r = z.blockLimit; + w = 0; + var B, x = [], + D, T; + N = A = 0; + var J, K; + p = y.startContainer; + var G = z.endPath.elements[0], + W, I = G.getPosition(p), + v = !!G.getCommonAncestor(p) && I != CKEDITOR.POSITION_IDENTICAL && !(I & CKEDITOR.POSITION_CONTAINS + + CKEDITOR.POSITION_IS_CONTAINED); + p = b(z.dataWrapper, z); + for (q(p, y); w < p.length; w++) { + I = p[w]; + if (u = I.isLineBreak) { + u = y; + J = r; + var S = void 0, + Y = void 0; + I.hasBlockSibling ? u = 1 : (S = u.startContainer.getAscendant(E.$block, 1)) && S.is({ + div: 1, + p: 1 + }) ? (Y = S.getPosition(J), Y == CKEDITOR.POSITION_IDENTICAL || Y == CKEDITOR.POSITION_CONTAINS ? u = 0 : (J = u.splitElement(S), u.moveToPosition(J, CKEDITOR.POSITION_AFTER_START), u = 1)) : u = 0 + } + if (u) N = 0 < w; + else { + u = y.startPath(); + !I.isBlock && k(z.editor, u.block, u.blockLimit) && (T = g(z.editor)) && (T = n.createElement(T), + T.appendBogus(), y.insertNode(T), CKEDITOR.env.needsBrFiller && (B = T.getBogus()) && B.remove(), y.moveToPosition(T, CKEDITOR.POSITION_BEFORE_END)); + if ((u = y.startPath().block) && !u.equals(D)) { + if (B = u.getBogus()) B.remove(), x.push(u); + D = u + } + I.firstNotAllowed && (A = 1); + if (A && I.isElement) { + u = y.startContainer; + for (J = null; u && !E[u.getName()][I.name];) { + if (u.equals(r)) { + u = null; + break + } + J = u; + u = u.getParent() + } + if (u) J && (K = y.splitElement(J), z.zombies.push(K), z.zombies.push(J)); + else { + J = r.getName(); + W = !w; + u = w == p.length - 1; + J = d(I.node, J); + for (var S = [], Y = J.length, Z = 0, ba = void 0, ca = 0, U = -1; Z < Y; Z++) ba = J[Z], " " == ba ? (ca || W && !Z || (S.push(new CKEDITOR.dom.text(" ")), U = S.length), ca = 1) : (S.push(ba), ca = 0); + u && U == S.length && S.pop(); + W = S + } + } + if (W) { + for (; u = W.pop();) y.insertNode(u); + W = 0 + } else y.insertNode(I.node); + I.lastNotAllowed && w < p.length - 1 && ((K = v ? G : K) && y.setEndAt(K, CKEDITOR.POSITION_AFTER_START), A = 0); + y.collapse() + } + } + 1 != p.length ? B = !1 : (B = p[0], B = B.isElement && "false" == B.node.getAttribute("contenteditable")); + B && (N = !0, u = p[0].node, y.setStartAt(u, CKEDITOR.POSITION_BEFORE_START), + y.setEndAt(u, CKEDITOR.POSITION_AFTER_END)); + z.dontMoveCaret = N; + z.bogusNeededBlocks = x + } + B = z.range; + var R; + K = z.bogusNeededBlocks; + for (W = B.createBookmark(); D = z.zombies.pop();) D.getParent() && (T = B.clone(), T.moveToElementEditStart(D), T.removeEmptyBlocksAtEnd()); + if (K) + for (; D = K.pop();) CKEDITOR.env.needsBrFiller ? D.appendBogus() : D.append(B.document.createText(" ")); + for (; D = z.mergeCandidates.pop();) D.mergeSiblings(); + B.moveToBookmark(W); + if (!z.dontMoveCaret) { + for (D = e(B); D && a(D) && !D.is(E.$empty);) { + if (D.isBlockBoundary()) B.moveToPosition(D, + CKEDITOR.POSITION_BEFORE_END); + else { + if (f(D) && D.getHtml().match(/(\s| )$/g)) { + R = null; + break + } + R = B.clone(); + R.moveToPosition(D, CKEDITOR.POSITION_BEFORE_END) + } + D = D.getLast(c) + } + R && B.moveToRange(R) + } + } + } + }(); + m = function() { + function a(b) { + b = new CKEDITOR.dom.walker(b); + b.guard = function(a, b) { + if (b) return !1; + if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$tableContent) + }; + b.evaluator = function(a) { + return a.type == CKEDITOR.NODE_ELEMENT + }; + return b + } + + function b(a, c, d) { + c = a.getDocument().createElement(c); + a.append(c, d); + return c + } + + function c(a) { + var b = a.count(), + d; + for (b; 0 < b--;) d = a.getItem(b), CKEDITOR.tools.trim(d.getHtml()) || (d.appendBogus(), CKEDITOR.env.ie && 9 > CKEDITOR.env.version && d.getChildCount() && d.getFirst().remove()) + } + return function(d) { + var e = d.startContainer, + f = e.getAscendant("table", 1), + g = !1; + c(f.getElementsByTag("td")); + c(f.getElementsByTag("th")); + f = d.clone(); + f.setStart(e, 0); + f = a(f).lastBackward(); + f || (f = d.clone(), f.setEndAt(e, CKEDITOR.POSITION_BEFORE_END), f = a(f).lastForward(), g = !0); + f || (f = e); + f.is("table") ? (d.setStartAt(f, CKEDITOR.POSITION_BEFORE_START), + d.collapse(!0), f.remove()) : (f.is({ + tbody: 1, + thead: 1, + tfoot: 1 + }) && (f = b(f, "tr", g)), f.is("tr") && (f = b(f, f.getParent().is("thead") ? "th" : "td", g)), (e = f.getBogus()) && e.remove(), d.moveToPosition(f, g ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END)) + } + }(); + J = function() { + function a(b) { + b = new CKEDITOR.dom.walker(b); + b.guard = function(a, b) { + if (b) return !1; + if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$list) || a.is(CKEDITOR.dtd.$listItem) + }; + b.evaluator = function(a) { + return a.type == CKEDITOR.NODE_ELEMENT && + a.is(CKEDITOR.dtd.$listItem) + }; + return b + } + return function(b) { + var c = b.startContainer, + d = !1, + e; + e = b.clone(); + e.setStart(c, 0); + e = a(e).lastBackward(); + e || (e = b.clone(), e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END), e = a(e).lastForward(), d = !0); + e || (e = c); + e.is(CKEDITOR.dtd.$list) ? (b.setStartAt(e, CKEDITOR.POSITION_BEFORE_START), b.collapse(!0), e.remove()) : ((c = e.getBogus()) && c.remove(), b.moveToPosition(e, d ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END), b.select()) + } + }(); + u = { + eol: { + detect: function(a, b) { + var c = a.range, + d = c.clone(), + e = c.clone(), + f = new CKEDITOR.dom.elementPath(c.startContainer, b), + g = new CKEDITOR.dom.elementPath(c.endContainer, b); + d.collapse(1); + e.collapse(); + f.block && d.checkBoundaryOfElement(f.block, CKEDITOR.END) && (c.setStartAfter(f.block), a.prependEolBr = 1); + g.block && e.checkBoundaryOfElement(g.block, CKEDITOR.START) && (c.setEndBefore(g.block), a.appendEolBr = 1) + }, + fix: function(a, b) { + var c = b.getDocument(), + d; + a.appendEolBr && (d = this.createEolBr(c), a.fragment.append(d)); + !a.prependEolBr || d && !d.getPrevious() || a.fragment.append(this.createEolBr(c), + 1) + }, + createEolBr: function(a) { + return a.createElement("br", { + attributes: { + "data-cke-eol": 1 + } + }) + } + }, + bogus: { + exclude: function(a) { + var b = a.range.getBoundaryNodes(), + c = b.startNode, + b = b.endNode; + !b || !B(b) || c && c.equals(b) || a.range.setEndBefore(b) + } + }, + tree: { + rebuild: function(a, b) { + var c = a.range, + d = c.getCommonAncestor(), + e = new CKEDITOR.dom.elementPath(d, b), + f = new CKEDITOR.dom.elementPath(c.startContainer, b), + c = new CKEDITOR.dom.elementPath(c.endContainer, b), + g; + d.type == CKEDITOR.NODE_TEXT && (d = d.getParent()); + if (e.blockLimit.is({ + tr: 1, + table: 1 + })) { + var h = e.contains("table").getParent(); + g = function(a) { + return !a.equals(h) + } + } else if (e.block && e.block.is(CKEDITOR.dtd.$listItem) && (f = f.contains(CKEDITOR.dtd.$list), c = c.contains(CKEDITOR.dtd.$list), !f.equals(c))) { + var z = e.contains(CKEDITOR.dtd.$list).getParent(); + g = function(a) { + return !a.equals(z) + } + } + g || (g = function(a) { + return !a.equals(e.block) && !a.equals(e.blockLimit) + }); + this.rebuildFragment(a, b, d, g) + }, + rebuildFragment: function(a, b, c, d) { + for (var e; c && !c.equals(b) && d(c);) e = c.clone(0, 1), a.fragment.appendTo(e), + a.fragment = e, c = c.getParent() + } + }, + cell: { + shrink: function(a) { + a = a.range; + var b = a.startContainer, + c = a.endContainer, + d = a.startOffset, + e = a.endOffset; + b.type == CKEDITOR.NODE_ELEMENT && b.equals(c) && b.is("tr") && ++d == e && a.shrink(CKEDITOR.SHRINK_TEXT) + } + } + }; + K = function() { + function a(b, c) { + var d = b.getParent(); + if (d.is(CKEDITOR.dtd.$inline)) b[c ? "insertBefore" : "insertAfter"](d) + } + + function b(c, d, e) { + a(d); + a(e, 1); + for (var f; f = e.getNext();) f.insertAfter(d), d = f; + v(c) && c.remove() + } + + function c(a, b) { + var d = new CKEDITOR.dom.range(a); + d.setStartAfter(b.startNode); + d.setEndBefore(b.endNode); + return d + } + return { + list: { + detectMerge: function(a, b) { + var d = c(b, a.bookmark), + e = d.startPath(), + f = d.endPath(), + g = e.contains(CKEDITOR.dtd.$list), + h = f.contains(CKEDITOR.dtd.$list); + a.mergeList = g && h && g.getParent().equals(h.getParent()) && !g.equals(h); + a.mergeListItems = e.block && f.block && e.block.is(CKEDITOR.dtd.$listItem) && f.block.is(CKEDITOR.dtd.$listItem); + if (a.mergeList || a.mergeListItems) d = d.clone(), d.setStartBefore(a.bookmark.startNode), d.setEndAfter(a.bookmark.endNode), a.mergeListBookmark = + d.createBookmark() + }, + merge: function(a, c) { + if (a.mergeListBookmark) { + var d = a.mergeListBookmark.startNode, + e = a.mergeListBookmark.endNode, + f = new CKEDITOR.dom.elementPath(d, c), + g = new CKEDITOR.dom.elementPath(e, c); + if (a.mergeList) { + var h = f.contains(CKEDITOR.dtd.$list), + k = g.contains(CKEDITOR.dtd.$list); + h.equals(k) || (k.moveChildren(h), k.remove()) + } + a.mergeListItems && (f = f.contains(CKEDITOR.dtd.$listItem), g = g.contains(CKEDITOR.dtd.$listItem), f.equals(g) || b(g, d, e)); + d.remove(); + e.remove() + } + } + }, + block: { + detectMerge: function(a, + b) { + if (!a.tableContentsRanges && !a.mergeListBookmark) { + var c = new CKEDITOR.dom.range(b); + c.setStartBefore(a.bookmark.startNode); + c.setEndAfter(a.bookmark.endNode); + a.mergeBlockBookmark = c.createBookmark() + } + }, + merge: function(a, c) { + if (a.mergeBlockBookmark && !a.purgeTableBookmark) { + var d = a.mergeBlockBookmark.startNode, + e = a.mergeBlockBookmark.endNode, + f = new CKEDITOR.dom.elementPath(d, c), + g = new CKEDITOR.dom.elementPath(e, c), + f = f.block, + g = g.block; + f && g && !f.equals(g) && b(g, d, e); + d.remove(); + e.remove() + } + } + }, + table: function() { + function a(c) { + var e = [], + f, g = new CKEDITOR.dom.walker(c), + h = c.startPath().contains(d), + k = c.endPath().contains(d), + p = {}; + g.guard = function(a, g) { + if (a.type == CKEDITOR.NODE_ELEMENT) { + var A = "visited_" + (g ? "out" : "in"); + if (a.getCustomData(A)) return; + CKEDITOR.dom.element.setMarker(p, a, A, 1) + } + if (g && h && a.equals(h)) f = c.clone(), f.setEndAt(h, CKEDITOR.POSITION_BEFORE_END), e.push(f); + else if (!g && k && a.equals(k)) f = c.clone(), f.setStartAt(k, CKEDITOR.POSITION_AFTER_START), e.push(f); + else { + if (A = !g) A = a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && (!h || b(a, h)) && (!k || + b(a, k)); + if (!A && (A = g)) + if (a.is(d)) var A = h && h.getAscendant("table", !0), + l = k && k.getAscendant("table", !0), + H = a.getAscendant("table", !0), + A = A && A.contains(H) || l && l.contains(H); + else A = void 0; + A && (f = c.clone(), f.selectNodeContents(a), e.push(f)) + } + }; + g.lastForward(); + CKEDITOR.dom.element.clearAllMarkers(p); + return e + } + + function b(a, c) { + var d = CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED, + e = a.getPosition(c); + return e === CKEDITOR.POSITION_IDENTICAL ? !1 : 0 === (e & d) + } + var d = { + td: 1, + th: 1, + caption: 1 + }; + return { + detectPurge: function(a) { + var b = + a.range, + c = b.clone(); + c.enlarge(CKEDITOR.ENLARGE_ELEMENT); + var c = new CKEDITOR.dom.walker(c), + e = 0; + c.evaluator = function(a) { + a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && ++e + }; + c.checkForward(); + if (1 < e) { + var c = b.startPath().contains("table"), + f = b.endPath().contains("table"); + c && f && b.checkBoundaryOfElement(c, CKEDITOR.START) && b.checkBoundaryOfElement(f, CKEDITOR.END) && (b = a.range.clone(), b.setStartBefore(c), b.setEndAfter(f), a.purgeTableBookmark = b.createBookmark()) + } + }, + detectRanges: function(e, f) { + var g = c(f, e.bookmark), + h = g.clone(), + k, l, p = g.getCommonAncestor(); + p.is(CKEDITOR.dtd.$tableContent) && !p.is(d) && (p = p.getAscendant("table", !0)); + l = p; + p = new CKEDITOR.dom.elementPath(g.startContainer, l); + l = new CKEDITOR.dom.elementPath(g.endContainer, l); + p = p.contains("table"); + l = l.contains("table"); + if (p || l) p && l && b(p, l) ? (e.tableSurroundingRange = h, h.setStartAt(p, CKEDITOR.POSITION_AFTER_END), h.setEndAt(l, CKEDITOR.POSITION_BEFORE_START), h = g.clone(), h.setEndAt(p, CKEDITOR.POSITION_AFTER_END), k = g.clone(), k.setStartAt(l, CKEDITOR.POSITION_BEFORE_START), + k = a(h).concat(a(k))) : p ? l || (e.tableSurroundingRange = h, h.setStartAt(p, CKEDITOR.POSITION_AFTER_END), g.setEndAt(p, CKEDITOR.POSITION_AFTER_END)) : (e.tableSurroundingRange = h, h.setEndAt(l, CKEDITOR.POSITION_BEFORE_START), g.setStartAt(l, CKEDITOR.POSITION_AFTER_START)), e.tableContentsRanges = k ? k : a(g) + }, + deleteRanges: function(a) { + for (var b; b = a.tableContentsRanges.pop();) b.extractContents(), v(b.startContainer) && b.startContainer.appendBogus(); + a.tableSurroundingRange && a.tableSurroundingRange.extractContents() + }, + purge: function(a) { + if (a.purgeTableBookmark) { + var b = + a.doc, + c = a.range.clone(), + b = b.createElement("p"); + b.insertBefore(a.purgeTableBookmark.startNode); + c.moveToBookmark(a.purgeTableBookmark); + c.deleteContents(); + a.range.moveToPosition(b, CKEDITOR.POSITION_AFTER_START) + } + } + } + }(), + detectExtractMerge: function(a) { + return !(a.range.startPath().contains(CKEDITOR.dtd.$listItem) && a.range.endPath().contains(CKEDITOR.dtd.$listItem)) + }, + fixUneditableRangePosition: function(a) { + a.startContainer.getDtd()["#"] || a.moveToClosestEditablePosition(null, !0) + }, + autoParagraph: function(a, b) { + var c = + b.startPath(), + d; + k(a, c.block, c.blockLimit) && (d = g(a)) && (d = b.document.createElement(d), d.appendBogus(), b.insertNode(d), b.moveToPosition(d, CKEDITOR.POSITION_AFTER_START)) + } + } + }() + })(); + (function() { + function a(a) { + return CKEDITOR.plugins.widget && CKEDITOR.plugins.widget.isDomWidget(a) + } + + function d(b, c) { + if (0 === b.length || a(b[0].getEnclosedNode())) return !1; + var d, e; + if ((d = !c && 1 === b.length) && !(d = b[0].collapsed)) { + var f = b[0]; + d = f.startContainer.getAscendant({ + td: 1, + th: 1 + }, !0); + var g = f.endContainer.getAscendant({ + td: 1, + th: 1 + }, !0); + e = CKEDITOR.tools.trim; + d && d.equals(g) && !d.findOne("td, th, tr, tbody, table") ? (f = f.cloneContents(), d = f.getFirst() ? e(f.getFirst().getText()) !== e(d.getText()) : !0) : d = !1 + } + if (d) return !1; + for (e = 0; e < b.length; e++) + if (d = b[e]._getTableElement(), !d) return !1; + return !0 + } + + function b(a) { + function b(a) { + a = a.find("td, th"); + var c = [], + d; + for (d = 0; d < a.count(); d++) c.push(a.getItem(d)); + return c + } + var c = [], + d, e; + for (e = 0; e < a.length; e++) d = a[e]._getTableElement(), d.is && d.is({ + td: 1, + th: 1 + }) ? c.push(d) : c = c.concat(b(d)); + return c + } + + function c(a) { + a = b(a); + var c = "", + d = [], + e, f; + for (f = 0; f < a.length; f++) e && !e.equals(a[f].getAscendant("tr")) ? (c += d.join("\t") + "\n", e = a[f].getAscendant("tr"), d = []) : 0 === f && (e = a[f].getAscendant("tr")), d.push(a[f].getText()); + return c += d.join("\t") + } + + function f(a) { + var b = this.root.editor, + d = b.getSelection(1); + this.reset(); + l = !0; + d.root.once("selectionchange", function(a) { + a.cancel() + }, null, null, 0); + d.selectRanges([a[0]]); + d = this._.cache; + d.ranges = new CKEDITOR.dom.rangeList(a); + d.type = CKEDITOR.SELECTION_TEXT; + d.selectedElement = a[0]._getTableElement(); + d.selectedText = c(a); + d.nativeSel = null; + this.isFake = 1; + this.rev = J++; + b._.fakeSelection = this; + l = !1; + this.root.fire("selectionchange") + } + + function h() { + var b = this._.fakeSelection, + c; + if (b) { + c = this.getSelection(1); + var e; + if (!(e = !c) && (e = !c.isHidden())) { + e = b; + var f = c.getRanges(), + g = e.getRanges(), + h = f.length && f[0]._getTableElement() && f[0]._getTableElement().getAscendant("table", !0), + p = g.length && g[0]._getTableElement() && g[0]._getTableElement().getAscendant("table", !0), + k = 1 === f.length && f[0]._getTableElement() && f[0]._getTableElement().is("table"), + w = 1 === g.length && g[0]._getTableElement() && g[0]._getTableElement().is("table"); + if (a(e.getSelectedElement())) e = !1; + else { + var l = 1 === f.length && f[0].collapsed, + g = d(f, !!CKEDITOR.env.webkit) && + d(g); + h = h && p ? h.equals(p) || p.contains(h) : !1; + h && (l || g) ? (k && !w && e.selectRanges(f), e = !0) : e = !1 + } + e = !e + } + e && (b.reset(), b = 0) + } + if (!b && (b = c || this.getSelection(1), !b || b.getType() == CKEDITOR.SELECTION_NONE)) return; + this.fire("selectionCheck", b); + c = this.elementPath(); + c.compare(this._.selectionPreviousPath) || (e = this._.selectionPreviousPath && this._.selectionPreviousPath.blockLimit.equals(c.blockLimit), CKEDITOR.env.webkit && !e && (this._.previousActive = this.document.getActive()), this._.selectionPreviousPath = c, this.fire("selectionChange", { + selection: b, + path: c + })) + } + + function k() { + F = !0; + t || (g.call(this), t = CKEDITOR.tools.setTimeout(g, 200, this)) + } + + function g() { + t = null; + F && (CKEDITOR.tools.setTimeout(h, 0, this), F = !1) + } + + function n(a) { + return L(a) || a.type == CKEDITOR.NODE_ELEMENT && !a.is(CKEDITOR.dtd.$empty) ? !0 : !1 + } + + function r(a) { + function b(c, d) { + return c && c.type != CKEDITOR.NODE_TEXT ? a.clone()["moveToElementEdit" + (d ? "End" : "Start")](c) : !1 + } + if (!(a.root instanceof CKEDITOR.editable)) return !1; + var c = a.startContainer, + d = a.getPreviousNode(n, null, c), + e = a.getNextNode(n, null, + c); + return b(d) || b(e, 1) || !(d || e || c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary() && c.getBogus()) ? !0 : !1 + } + + function e(a) { + y(a, !1); + var b = a.getDocument().createText(u); + a.setCustomData("cke-fillingChar", b); + return b + } + + function y(a, b) { + var c = a && a.removeCustomData("cke-fillingChar"); + if (c) { + if (!1 !== b) { + var d = a.getDocument().getSelection().getNative(), + e = d && "None" != d.type && d.getRangeAt(0), + f = u.length; + if (c.getLength() > f && e && e.intersectsNode(c.$)) { + var g = [{ + node: d.anchorNode, + offset: d.anchorOffset + }, { + node: d.focusNode, + offset: d.focusOffset + }]; + d.anchorNode == c.$ && d.anchorOffset > f && (g[0].offset -= f); + d.focusNode == c.$ && d.focusOffset > f && (g[1].offset -= f) + } + } + c.setText(v(c.getText(), 1)); + g && (c = a.getDocument().$, d = c.getSelection(), c = c.createRange(), c.setStart(g[0].node, g[0].offset), c.collapse(!0), d.removeAllRanges(), d.addRange(c), d.extend(g[1].node, g[1].offset)) + } + } + + function v(a, b) { + return b ? a.replace(K, function(a, b) { + return b ? " " : "" + }) : a.replace(u, "") + } + + function B(a, b) { + var c = b && CKEDITOR.tools.htmlEncode(b) || "\x26nbsp;", + c = CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"' + + (CKEDITOR.env.ie && 14 > CKEDITOR.env.version ? "display:none" : "position:fixed;top:0;left:-1000px") + '"\x3e' + c + "\x3c/div\x3e", a.document); + a.fire("lockSnapshot"); + a.editable().append(c); + var d = a.getSelection(1), + e = a.createRange(), + f = d.root.on("selectionchange", function(a) { + a.cancel() + }, null, null, 0); + e.setStartAt(c, CKEDITOR.POSITION_AFTER_START); + e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END); + d.selectRanges([e]); + f.removeListener(); + a.fire("unlockSnapshot"); + a._.hiddenSelectionContainer = c + } + + function D(a) { + var b = { + 37: 1, + 39: 1, + 8: 1, + 46: 1 + }; + return function(c) { + var d = c.data.getKeystroke(); + if (b[d]) { + var e = a.getSelection().getRanges(), + f = e[0]; + 1 == e.length && f.collapsed && (d = f[38 > d ? "getPreviousEditableNode" : "getNextEditableNode"]()) && d.type == CKEDITOR.NODE_ELEMENT && "false" == d.getAttribute("contenteditable") && (a.getSelection().fake(d), c.data.preventDefault(), c.cancel()) + } + } + } + + function x(a) { + for (var b = 0; b < a.length; b++) { + var c = a[b]; + c.getCommonAncestor().isReadOnly() && a.splice(b, 1); + if (!c.collapsed) { + if (c.startContainer.isReadOnly()) + for (var d = c.startContainer, + e; d && !((e = d.type == CKEDITOR.NODE_ELEMENT) && d.is("body") || !d.isReadOnly());) e && "false" == d.getAttribute("contentEditable") && c.setStartAfter(d), d = d.getParent(); + d = c.startContainer; + e = c.endContainer; + var f = c.startOffset, + g = c.endOffset, + h = c.clone(); + d && d.type == CKEDITOR.NODE_TEXT && (f >= d.getLength() ? h.setStartAfter(d) : h.setStartBefore(d)); + e && e.type == CKEDITOR.NODE_TEXT && (g ? h.setEndAfter(e) : h.setEndBefore(e)); + d = new CKEDITOR.dom.walker(h); + d.evaluator = function(d) { + if (d.type == CKEDITOR.NODE_ELEMENT && d.isReadOnly()) { + var e = + c.clone(); + c.setEndBefore(d); + c.collapsed && a.splice(b--, 1); + d.getPosition(h.endContainer) & CKEDITOR.POSITION_CONTAINS || (e.setStartAfter(d), e.collapsed || a.splice(b + 1, 0, e)); + return !0 + } + return !1 + }; + d.next() + } + } + return a + } + var m = "function" != typeof window.getSelection, + J = 1, + u = CKEDITOR.tools.repeat("​", 7), + K = new RegExp(u + "( )?", "g"), + l, t, F, L = CKEDITOR.dom.walker.invisible(1), + C = function() { + function a(b) { + return function(a) { + var c = a.editor.createRange(); + c.moveToClosestEditablePosition(a.selected, b) && a.editor.getSelection().selectRanges([c]); + return !1 + } + } + + function b(a) { + return function(b) { + var c = b.editor, + d = c.createRange(), + e; + if (!c.readOnly) return (e = d.moveToClosestEditablePosition(b.selected, a)) || (e = d.moveToClosestEditablePosition(b.selected, !a)), e && c.getSelection().selectRanges([d]), c.fire("saveSnapshot"), b.selected.remove(), e || (d.moveToElementEditablePosition(c.editable()), c.getSelection().selectRanges([d])), c.fire("saveSnapshot"), !1 + } + } + var c = a(), + d = a(1); + return { + 37: c, + 38: c, + 39: d, + 40: d, + 8: b(), + 46: b(1) + } + }(); + CKEDITOR.on("instanceCreated", function(a) { + function b() { + var a = + c.getSelection(); + a && a.removeAllRanges() + } + var c = a.editor; + c.on("contentDom", function() { + function a() { + r = new CKEDITOR.dom.selection(c.getSelection()); + r.lock() + } + + function b() { + f.removeListener("mouseup", b); + q.removeListener("mouseup", b); + var a = CKEDITOR.document.$.selection, + c = a.createRange(); + "None" != a.type && c.parentElement() && c.parentElement().ownerDocument == e.$ && c.select() + } + + function d(a) { + a = a.getRanges()[0]; + return a ? (a = a.startContainer.getAscendant(function(a) { + return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") + }, + !0)) && "false" === a.getAttribute("contenteditable") ? a : null : null + } + var e = c.document, + f = CKEDITOR.document, + g = c.editable(), + l = e.getBody(), + q = e.getDocumentElement(), + E = g.isInline(), + n, r; + CKEDITOR.env.gecko && g.attachListener(g, "focus", function(a) { + a.removeListener(); + 0 !== n && (a = c.getSelection().getNative()) && a.isCollapsed && a.anchorNode == g.$ && (a = c.createRange(), a.moveToElementEditStart(g), a.select()) + }, null, null, -2); + g.attachListener(g, CKEDITOR.env.webkit ? "DOMFocusIn" : "focus", function() { + n && CKEDITOR.env.webkit && (n = c._.previousActive && + c._.previousActive.equals(e.getActive())) && null != c._.previousScrollTop && c._.previousScrollTop != g.$.scrollTop && (g.$.scrollTop = c._.previousScrollTop); + c.unlockSelection(n); + n = 0 + }, null, null, -1); + g.attachListener(g, "mousedown", function() { + n = 0 + }); + if (CKEDITOR.env.ie || E) m ? g.attachListener(g, "beforedeactivate", a, null, null, -1) : g.attachListener(c, "selectionCheck", a, null, null, -1), g.attachListener(g, CKEDITOR.env.webkit ? "DOMFocusOut" : "blur", function() { + c.lockSelection(r); + n = 1 + }, null, null, -1), g.attachListener(g, "mousedown", + function() { + n = 0 + }); + if (CKEDITOR.env.ie && !E) { + var v; + g.attachListener(g, "mousedown", function(a) { + 2 == a.data.$.button && ((a = c.document.getSelection()) && a.getType() != CKEDITOR.SELECTION_NONE || (v = c.window.getScrollPosition())) + }); + g.attachListener(g, "mouseup", function(a) { + 2 == a.data.$.button && v && (c.document.$.documentElement.scrollLeft = v.x, c.document.$.documentElement.scrollTop = v.y); + v = null + }); + if ("BackCompat" != e.$.compatMode) { + if (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) { + var t, u; + q.on("mousedown", function(a) { + function b(a) { + a = + a.data.$; + if (t) { + var c = l.$.createTextRange(); + try { + c.moveToPoint(a.clientX, a.clientY) + } catch (d) {} + t.setEndPoint(0 > u.compareEndPoints("StartToStart", c) ? "EndToEnd" : "StartToStart", c); + t.select() + } + } + + function c() { + q.removeListener("mousemove", b); + f.removeListener("mouseup", c); + q.removeListener("mouseup", c); + t.select() + } + a = a.data; + if (a.getTarget().is("html") && a.$.y < q.$.clientHeight && a.$.x < q.$.clientWidth) { + t = l.$.createTextRange(); + try { + t.moveToPoint(a.$.clientX, a.$.clientY) + } catch (d) {} + u = t.duplicate(); + q.on("mousemove", b); + f.on("mouseup", + c); + q.on("mouseup", c) + } + }) + } + if (7 < CKEDITOR.env.version && 11 > CKEDITOR.env.version) q.on("mousedown", function(a) { + a.data.getTarget().is("html") && (f.on("mouseup", b), q.on("mouseup", b)) + }) + } + } + g.attachListener(g, "selectionchange", h, c); + g.attachListener(g, "keyup", k, c); + CKEDITOR.env.ie && g.attachListener(g, "keydown", function(a) { + var b = this.getSelection(1), + c = d(b); + c && !c.equals(g) && (b.selectElement(c), a.data.preventDefault()) + }, c); + g.attachListener(g, CKEDITOR.env.webkit ? "DOMFocusIn" : "focus", function() { + c.forceNextSelectionCheck(); + c.selectionChange(1) + }); + if (E && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) { + var x; + g.attachListener(g, "mousedown", function() { + x = 1 + }); + g.attachListener(e.getDocumentElement(), "mouseup", function() { + x && k.call(c); + x = 0 + }) + } else g.attachListener(CKEDITOR.env.ie ? g : e.getDocumentElement(), "mouseup", k, c); + CKEDITOR.env.webkit && g.attachListener(e, "keydown", function(a) { + switch (a.data.getKey()) { + case 13: + case 33: + case 34: + case 35: + case 36: + case 37: + case 39: + case 8: + case 45: + case 46: + g.hasFocus && y(g) + } + }, null, null, -1); + g.attachListener(g, + "keydown", D(c), null, null, -1) + }); + c.on("setData", function() { + c.unlockSelection(); + CKEDITOR.env.webkit && b() + }); + c.on("contentDomUnload", function() { + c.unlockSelection() + }); + if (CKEDITOR.env.ie9Compat) c.on("beforeDestroy", b, null, null, 9); + c.on("dataReady", function() { + delete c._.fakeSelection; + delete c._.hiddenSelectionContainer; + c.selectionChange(1) + }); + c.on("loadSnapshot", function() { + var a = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT), + b = c.editable().getLast(a); + b && b.hasAttribute("data-cke-hidden-sel") && (b.remove(), + CKEDITOR.env.gecko && (a = c.editable().getFirst(a)) && a.is("br") && a.getAttribute("_moz_editor_bogus_node") && a.remove()) + }, null, null, 100); + c.on("key", function(a) { + if ("wysiwyg" == c.mode) { + var b = c.getSelection(); + if (b.isFake) { + var d = C[a.data.keyCode]; + if (d) return d({ + editor: c, + selected: b.getSelectedElement(), + selection: b, + keyEvent: a + }) + } + } + }) + }); + if (CKEDITOR.env.webkit) CKEDITOR.on("instanceReady", function(a) { + var b = a.editor; + b.on("selectionChange", function() { + var a = b.editable(), + c = a.getCustomData("cke-fillingChar"); + c && (c.getCustomData("ready") ? + (y(a), a.editor.fire("selectionCheck")) : c.setCustomData("ready", 1)) + }, null, null, -1); + b.on("beforeSetMode", function() { + y(b.editable()) + }, null, null, -1); + b.on("getSnapshot", function(a) { + a.data && (a.data = v(a.data)) + }, b, null, 20); + b.on("toDataFormat", function(a) { + a.data.dataValue = v(a.data.dataValue) + }, null, null, 0) + }); + CKEDITOR.editor.prototype.selectionChange = function(a) { + (a ? h : k).call(this) + }; + CKEDITOR.editor.prototype.getSelection = function(a) { + return !this._.savedSelection && !this._.fakeSelection || a ? (a = this.editable()) && + "wysiwyg" == this.mode ? new CKEDITOR.dom.selection(a) : null : this._.savedSelection || this._.fakeSelection + }; + CKEDITOR.editor.prototype.lockSelection = function(a) { + a = a || this.getSelection(1); + return a.getType() != CKEDITOR.SELECTION_NONE ? (!a.isLocked && a.lock(), this._.savedSelection = a, !0) : !1 + }; + CKEDITOR.editor.prototype.unlockSelection = function(a) { + var b = this._.savedSelection; + return b ? (b.unlock(a), delete this._.savedSelection, !0) : !1 + }; + CKEDITOR.editor.prototype.forceNextSelectionCheck = function() { + delete this._.selectionPreviousPath + }; + CKEDITOR.dom.document.prototype.getSelection = function() { + return new CKEDITOR.dom.selection(this) + }; + CKEDITOR.dom.range.prototype.select = function() { + var a = this.root instanceof CKEDITOR.editable ? this.root.editor.getSelection() : new CKEDITOR.dom.selection(this.root); + a.selectRanges([this]); + return a + }; + CKEDITOR.SELECTION_NONE = 1; + CKEDITOR.SELECTION_TEXT = 2; + CKEDITOR.SELECTION_ELEMENT = 3; + CKEDITOR.dom.selection = function(a) { + if (a instanceof CKEDITOR.dom.selection) { + var b = a; + a = a.root + } + var c = a instanceof CKEDITOR.dom.element; + this.rev = b ? b.rev : J++; + this.document = a instanceof CKEDITOR.dom.document ? a : a.getDocument(); + this.root = c ? a : this.document.getBody(); + this.isLocked = 0; + this._ = { + cache: {} + }; + if (b) return CKEDITOR.tools.extend(this._.cache, b._.cache), this.isFake = b.isFake, this.isLocked = b.isLocked, this; + a = this.getNative(); + var d, e; + if (a) + if (a.getRangeAt) d = (e = a.rangeCount && a.getRangeAt(0)) && new CKEDITOR.dom.node(e.commonAncestorContainer); + else { + try { + e = a.createRange() + } catch (f) {} + d = e && CKEDITOR.dom.element.get(e.item && e.item(0) || e.parentElement()) + } if (!d || + d.type != CKEDITOR.NODE_ELEMENT && d.type != CKEDITOR.NODE_TEXT || !this.root.equals(d) && !this.root.contains(d)) this._.cache.type = CKEDITOR.SELECTION_NONE, this._.cache.startElement = null, this._.cache.selectedElement = null, this._.cache.selectedText = "", this._.cache.ranges = new CKEDITOR.dom.rangeList; + return this + }; + var M = { + img: 1, + hr: 1, + li: 1, + table: 1, + tr: 1, + td: 1, + th: 1, + embed: 1, + object: 1, + ol: 1, + ul: 1, + a: 1, + input: 1, + form: 1, + select: 1, + textarea: 1, + button: 1, + fieldset: 1, + thead: 1, + tfoot: 1 + }; + CKEDITOR.tools.extend(CKEDITOR.dom.selection, { + _removeFillingCharSequenceString: v, + _createFillingCharSequenceNode: e, + FILLING_CHAR_SEQUENCE: u + }); + CKEDITOR.dom.selection.prototype = { + getNative: function() { + return void 0 !== this._.cache.nativeSel ? this._.cache.nativeSel : this._.cache.nativeSel = m ? this.document.$.selection : this.document.getWindow().$.getSelection() + }, + getType: m ? function() { + var a = this._.cache; + if (a.type) return a.type; + var b = CKEDITOR.SELECTION_NONE; + try { + var c = this.getNative(), + d = c.type; + "Text" == d && (b = CKEDITOR.SELECTION_TEXT); + "Control" == d && (b = CKEDITOR.SELECTION_ELEMENT); + c.createRange().parentElement() && + (b = CKEDITOR.SELECTION_TEXT) + } catch (e) {} + return a.type = b + } : function() { + var a = this._.cache; + if (a.type) return a.type; + var b = CKEDITOR.SELECTION_TEXT, + c = this.getNative(); + if (!c || !c.rangeCount) b = CKEDITOR.SELECTION_NONE; + else if (1 == c.rangeCount) { + var c = c.getRangeAt(0), + d = c.startContainer; + d == c.endContainer && 1 == d.nodeType && 1 == c.endOffset - c.startOffset && M[d.childNodes[c.startOffset].nodeName.toLowerCase()] && (b = CKEDITOR.SELECTION_ELEMENT) + } + return a.type = b + }, + getRanges: function() { + var a = m ? function() { + function a(b) { + return (new CKEDITOR.dom.node(b)).getIndex() + } + var b = function(b, c) { + b = b.duplicate(); + b.collapse(c); + var d = b.parentElement(); + if (!d.hasChildNodes()) return { + container: d, + offset: 0 + }; + for (var e = d.children, f, g, h = b.duplicate(), k = 0, l = e.length - 1, q = -1, m, n; k <= l;) + if (q = Math.floor((k + l) / 2), f = e[q], h.moveToElementText(f), m = h.compareEndPoints("StartToStart", b), 0 < m) l = q - 1; + else if (0 > m) k = q + 1; + else return { + container: d, + offset: a(f) + }; + if (-1 == q || q == e.length - 1 && 0 > m) { + h.moveToElementText(d); + h.setEndPoint("StartToStart", b); + h = h.text.replace(/(\r\n|\r)/g, "\n").length; + e = d.childNodes; + if (!h) return f = + e[e.length - 1], f.nodeType != CKEDITOR.NODE_TEXT ? { + container: d, + offset: e.length + } : { + container: f, + offset: f.nodeValue.length + }; + for (d = e.length; 0 < h && 0 < d;) g = e[--d], g.nodeType == CKEDITOR.NODE_TEXT && (n = g, h -= g.nodeValue.length); + return { + container: n, + offset: -h + } + } + h.collapse(0 < m ? !0 : !1); + h.setEndPoint(0 < m ? "StartToStart" : "EndToStart", b); + h = h.text.replace(/(\r\n|\r)/g, "\n").length; + if (!h) return { + container: d, + offset: a(f) + (0 < m ? 0 : 1) + }; + for (; 0 < h;) try { + g = f[0 < m ? "previousSibling" : "nextSibling"], g.nodeType == CKEDITOR.NODE_TEXT && (h -= g.nodeValue.length, + n = g), f = g + } catch (r) { + return { + container: d, + offset: a(f) + } + } + return { + container: n, + offset: 0 < m ? -h : n.nodeValue.length + h + } + }; + return function() { + var a = this.getNative(), + c = a && a.createRange(), + d = this.getType(); + if (!a) return []; + if (d == CKEDITOR.SELECTION_TEXT) return a = new CKEDITOR.dom.range(this.root), d = b(c, !0), a.setStart(new CKEDITOR.dom.node(d.container), d.offset), d = b(c), a.setEnd(new CKEDITOR.dom.node(d.container), d.offset), a.endContainer.getPosition(a.startContainer) & CKEDITOR.POSITION_PRECEDING && a.endOffset <= a.startContainer.getIndex() && + a.collapse(), [a]; + if (d == CKEDITOR.SELECTION_ELEMENT) { + for (var d = [], e = 0; e < c.length; e++) { + for (var f = c.item(e), g = f.parentNode, h = 0, a = new CKEDITOR.dom.range(this.root); h < g.childNodes.length && g.childNodes[h] != f; h++); + a.setStart(new CKEDITOR.dom.node(g), h); + a.setEnd(new CKEDITOR.dom.node(g), h + 1); + d.push(a) + } + return d + } + return [] + } + }() : function() { + var a = [], + b, c = this.getNative(); + if (!c) return a; + for (var d = 0; d < c.rangeCount; d++) { + var e = c.getRangeAt(d); + b = new CKEDITOR.dom.range(this.root); + b.setStart(new CKEDITOR.dom.node(e.startContainer), + e.startOffset); + b.setEnd(new CKEDITOR.dom.node(e.endContainer), e.endOffset); + a.push(b) + } + return a + }; + return function(b) { + var c = this._.cache, + d = c.ranges; + d || (c.ranges = d = new CKEDITOR.dom.rangeList(a.call(this))); + return b ? x(new CKEDITOR.dom.rangeList(d.slice())) : d + } + }(), + getStartElement: function() { + var a = this._.cache; + if (void 0 !== a.startElement) return a.startElement; + var b; + switch (this.getType()) { + case CKEDITOR.SELECTION_ELEMENT: + return this.getSelectedElement(); + case CKEDITOR.SELECTION_TEXT: + var c = this.getRanges()[0]; + if (c) { + if (c.collapsed) b = c.startContainer, b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent()); + else { + for (c.optimize(); b = c.startContainer, c.startOffset == (b.getChildCount ? b.getChildCount() : b.getLength()) && !b.isBlockBoundary();) c.setStartAfter(b); + b = c.startContainer; + if (b.type != CKEDITOR.NODE_ELEMENT) return b.getParent(); + if ((b = b.getChild(c.startOffset)) && b.type == CKEDITOR.NODE_ELEMENT) + for (c = b.getFirst(); c && c.type == CKEDITOR.NODE_ELEMENT;) b = c, c = c.getFirst(); + else b = c.startContainer + } + b = b.$ + } + } + return a.startElement = b ? + new CKEDITOR.dom.element(b) : null + }, + getSelectedElement: function() { + var a = this._.cache; + if (void 0 !== a.selectedElement) return a.selectedElement; + var b = this, + c = CKEDITOR.tools.tryThese(function() { + return b.getNative().createRange().item(0) + }, function() { + for (var a = b.getRanges()[0].clone(), c, d, e = 2; e && !((c = a.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && M[c.getName()] && (d = c)); e--) a.shrink(CKEDITOR.SHRINK_ELEMENT); + return d && d.$ + }); + return a.selectedElement = c ? new CKEDITOR.dom.element(c) : null + }, + getSelectedText: function() { + var a = + this._.cache; + if (void 0 !== a.selectedText) return a.selectedText; + var b = this.getNative(), + b = m ? "Control" == b.type ? "" : b.createRange().text : b.toString(); + return a.selectedText = b + }, + lock: function() { + this.getRanges(); + this.getStartElement(); + this.getSelectedElement(); + this.getSelectedText(); + this._.cache.nativeSel = null; + this.isLocked = 1 + }, + unlock: function(a) { + if (this.isLocked) { + if (a) var b = this.getSelectedElement(), + c = this.getRanges(), + e = this.isFake; + this.isLocked = 0; + this.reset(); + a && (a = b || c[0] && c[0].getCommonAncestor()) && a.getAscendant("body", + 1) && (d(c) ? f.call(this, c) : e ? this.fake(b) : b ? this.selectElement(b) : this.selectRanges(c)) + } + }, + reset: function() { + this._.cache = {}; + this.isFake = 0; + var a = this.root.editor; + if (a && a._.fakeSelection) + if (this.rev == a._.fakeSelection.rev) { + delete a._.fakeSelection; + var b = a._.hiddenSelectionContainer; + if (b) { + var c = a.checkDirty(); + a.fire("lockSnapshot"); + b.remove(); + a.fire("unlockSnapshot"); + !c && a.resetDirty() + } + delete a._.hiddenSelectionContainer + } else CKEDITOR.warn("selection-fake-reset"); + this.rev = J++ + }, + selectElement: function(a) { + var b = + new CKEDITOR.dom.range(this.root); + b.setStartBefore(a); + b.setEndAfter(a); + this.selectRanges([b]) + }, + selectRanges: function(a) { + var b = this.root.editor, + c = b && b._.hiddenSelectionContainer; + this.reset(); + if (c) + for (var c = this.root, g, h = 0; h < a.length; ++h) g = a[h], g.endContainer.equals(c) && (g.endOffset = Math.min(g.endOffset, c.getChildCount())); + if (a.length) + if (this.isLocked) { + var k = CKEDITOR.document.getActive(); + this.unlock(); + this.selectRanges(a); + this.lock(); + k && !k.equals(this.root) && k.focus() + } else { + var p; + a: { + var n, w; + if (1 == a.length && + !(w = a[0]).collapsed && (p = w.getEnclosedNode()) && p.type == CKEDITOR.NODE_ELEMENT && (w = w.clone(), w.shrink(CKEDITOR.SHRINK_ELEMENT, !0), (n = w.getEnclosedNode()) && n.type == CKEDITOR.NODE_ELEMENT && (p = n), "false" == p.getAttribute("contenteditable"))) break a;p = void 0 + } + if (p) this.fake(p); + else if (b && b.plugins.tableselection && CKEDITOR.plugins.tableselection.isSupportedEnvironment && d(a) && !l) f.call(this, a); + else { + if (m) { + n = CKEDITOR.dom.walker.whitespaces(!0); + p = /\ufeff|\u00a0/; + w = { + table: 1, + tbody: 1, + tr: 1 + }; + 1 < a.length && (b = a[a.length - + 1], a[0].setEnd(b.endContainer, b.endOffset)); + b = a[0]; + a = b.collapsed; + var A, G, I; + if ((c = b.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && c.getName() in M && (!c.is("a") || !c.getText())) try { + I = c.$.createControlRange(); + I.addElement(c.$); + I.select(); + return + } catch (v) {} + if (b.startContainer.type == CKEDITOR.NODE_ELEMENT && b.startContainer.getName() in w || b.endContainer.type == CKEDITOR.NODE_ELEMENT && b.endContainer.getName() in w) b.shrink(CKEDITOR.NODE_ELEMENT, !0), a = b.collapsed; + I = b.createBookmark(); + w = I.startNode; + a || (k = I.endNode); + I = b.document.$.body.createTextRange(); + I.moveToElementText(w.$); + I.moveStart("character", 1); + k ? (p = b.document.$.body.createTextRange(), p.moveToElementText(k.$), I.setEndPoint("EndToEnd", p), I.moveEnd("character", -1)) : (A = w.getNext(n), G = w.hasAscendant("pre"), A = !(A && A.getText && A.getText().match(p)) && (G || !w.hasPrevious() || w.getPrevious().is && w.getPrevious().is("br")), G = b.document.createElement("span"), G.setHtml("\x26#65279;"), G.insertBefore(w), A && b.document.createText("").insertBefore(w)); + b.setStartBefore(w); + w.remove(); + a ? (A ? (I.moveStart("character", -1), I.select(), b.document.$.selection.clear()) : I.select(), b.moveToPosition(G, CKEDITOR.POSITION_BEFORE_START), G.remove()) : (b.setEndBefore(k), k.remove(), I.select()) + } else { + k = this.getNative(); + if (!k) return; + this.removeAllRanges(); + for (I = 0; I < a.length; I++) { + if (I < a.length - 1 && (A = a[I], G = a[I + 1], p = A.clone(), p.setStart(A.endContainer, A.endOffset), p.setEnd(G.startContainer, G.startOffset), !p.collapsed && (p.shrink(CKEDITOR.NODE_ELEMENT, !0), b = p.getCommonAncestor(), p = p.getEnclosedNode(), + b.isReadOnly() || p && p.isReadOnly()))) { + G.setStart(A.startContainer, A.startOffset); + a.splice(I--, 1); + continue + } + b = a[I]; + G = this.document.$.createRange(); + b.collapsed && CKEDITOR.env.webkit && r(b) && (p = e(this.root), b.insertNode(p), (A = p.getNext()) && !p.getPrevious() && A.type == CKEDITOR.NODE_ELEMENT && "br" == A.getName() ? (y(this.root), b.moveToPosition(A, CKEDITOR.POSITION_BEFORE_START)) : b.moveToPosition(p, CKEDITOR.POSITION_AFTER_END)); + G.setStart(b.startContainer.$, b.startOffset); + try { + G.setEnd(b.endContainer.$, b.endOffset) + } catch (t) { + if (0 <= + t.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")) b.collapse(1), G.setEnd(b.endContainer.$, b.endOffset); + else throw t; + } + k.addRange(G) + } + } + this.reset(); + this.root.fire("selectionchange") + } + } + }, + fake: function(a, b) { + var c = this.root.editor; + void 0 === b && a.hasAttribute("aria-label") && (b = a.getAttribute("aria-label")); + this.reset(); + B(c, b); + var d = this._.cache, + e = new CKEDITOR.dom.range(this.root); + e.setStartBefore(a); + e.setEndAfter(a); + d.ranges = new CKEDITOR.dom.rangeList(e); + d.selectedElement = d.startElement = a; + d.type = CKEDITOR.SELECTION_ELEMENT; + d.selectedText = d.nativeSel = null; + this.isFake = 1; + this.rev = J++; + c._.fakeSelection = this; + this.root.fire("selectionchange") + }, + isHidden: function() { + var a = this.getCommonAncestor(); + a && a.type == CKEDITOR.NODE_TEXT && (a = a.getParent()); + return !(!a || !a.data("cke-hidden-sel")) + }, + isInTable: function(a) { + return d(this.getRanges(), a) + }, + isCollapsed: function() { + var a = this.getRanges(); + return 1 === a.length && a[0].collapsed + }, + createBookmarks: function(a) { + a = this.getRanges().createBookmarks(a); + this.isFake && (a.isFake = 1); + return a + }, + createBookmarks2: function(a) { + a = + this.getRanges().createBookmarks2(a); + this.isFake && (a.isFake = 1); + return a + }, + selectBookmarks: function(a) { + for (var b = [], c, e = 0; e < a.length; e++) { + var f = new CKEDITOR.dom.range(this.root); + f.moveToBookmark(a[e]); + b.push(f) + } + a.isFake && (c = d(b) ? b[0]._getTableElement() : b[0].getEnclosedNode(), c && c.type == CKEDITOR.NODE_ELEMENT || (CKEDITOR.warn("selection-not-fake"), a.isFake = 0)); + a.isFake && !d(b) ? this.fake(c) : this.selectRanges(b); + return this + }, + getCommonAncestor: function() { + var a = this.getRanges(); + return a.length ? a[0].startContainer.getCommonAncestor(a[a.length - + 1].endContainer) : null + }, + scrollIntoView: function() { + this.type != CKEDITOR.SELECTION_NONE && this.getRanges()[0].scrollIntoView() + }, + removeAllRanges: function() { + if (this.getType() != CKEDITOR.SELECTION_NONE) { + var a = this.getNative(); + try { + a && a[m ? "empty" : "removeAllRanges"]() + } catch (b) {} + this.reset() + } + } + } + })(); + "use strict"; + CKEDITOR.STYLE_BLOCK = 1; + CKEDITOR.STYLE_INLINE = 2; + CKEDITOR.STYLE_OBJECT = 3; + (function() { + function a(a, b) { + for (var c, d; + (a = a.getParent()) && !a.equals(b);) + if (a.getAttribute("data-nostyle")) c = a; + else if (!d) { + var e = a.getAttribute("contentEditable"); + "false" == e ? c = a : "true" == e && (d = 1) + } + return c + } + + function d(a, b, c, d) { + return (a.getPosition(b) | d) == d && (!c.childRule || c.childRule(a)) + } + + function b(c) { + var e = c.document; + if (c.collapsed) e = J(this, e), c.insertNode(e), c.moveToPosition(e, CKEDITOR.POSITION_BEFORE_END); + else { + var g = this.element, + h = this._.definition, + k, l = h.ignoreReadonly, + m = l || h.includeReadonly; + null == + m && (m = c.root.getCustomData("cke_includeReadonly")); + var n = CKEDITOR.dtd[g]; + n || (k = !0, n = CKEDITOR.dtd.span); + c.enlarge(CKEDITOR.ENLARGE_INLINE, 1); + c.trim(); + var r = c.createBookmark(), + v = r.startNode, + t = r.endNode, + q = v, + u; + if (!l) { + var x = c.getCommonAncestor(), + l = a(v, x), + x = a(t, x); + l && (q = l.getNextSourceNode(!0)); + x && (t = x) + } + for (q.getPosition(t) == CKEDITOR.POSITION_FOLLOWING && (q = 0); q;) { + l = !1; + if (q.equals(t)) q = null, l = !0; + else { + var y = q.type == CKEDITOR.NODE_ELEMENT ? q.getName() : null, + x = y && "false" == q.getAttribute("contentEditable"), + B = y && + q.getAttribute("data-nostyle"); + if (y && q.data("cke-bookmark")) { + q = q.getNextSourceNode(!0); + continue + } + if (x && m && CKEDITOR.dtd.$block[y]) + for (var C = q, E = f(C), F = void 0, H = E.length, K = 0, C = H && new CKEDITOR.dom.range(C.getDocument()); K < H; ++K) { + var F = E[K], + L = CKEDITOR.filter.instances[F.data("cke-filter")]; + if (L ? L.check(this) : 1) C.selectNodeContents(F), b.call(this, C) + } + E = y ? !n[y] || B ? 0 : x && !m ? 0 : d(q, t, h, P) : 1; + if (E) + if (F = q.getParent(), E = h, H = g, K = k, !F || !(F.getDtd() || CKEDITOR.dtd.span)[H] && !K || E.parentRule && !E.parentRule(F)) l = !0; + else { + if (u || + y && CKEDITOR.dtd.$removeEmpty[y] && (q.getPosition(t) | P) != P || (u = c.clone(), u.setStartBefore(q)), y = q.type, y == CKEDITOR.NODE_TEXT || x || y == CKEDITOR.NODE_ELEMENT && !q.getChildCount()) { + for (var y = q, M; + (l = !y.getNext(z)) && (M = y.getParent(), n[M.getName()]) && d(M, v, h, O);) y = M; + u.setEndAfter(y) + } + } + else l = !0; + q = q.getNextSourceNode(B || x) + } + if (l && u && !u.collapsed) { + for (var l = J(this, e), x = l.hasAttributes(), B = u.getCommonAncestor(), y = {}, E = {}, F = {}, H = {}, U, R, aa; l && B;) { + if (B.getName() == g) { + for (U in h.attributes) !H[U] && (aa = B.getAttribute(R)) && + (l.getAttribute(U) == aa ? E[U] = 1 : H[U] = 1); + for (R in h.styles) !F[R] && (aa = B.getStyle(R)) && (l.getStyle(R) == aa ? y[R] = 1 : F[R] = 1) + } + B = B.getParent() + } + for (U in E) l.removeAttribute(U); + for (R in y) l.removeStyle(R); + x && !l.hasAttributes() && (l = null); + l ? (u.extractContents().appendTo(l), u.insertNode(l), D.call(this, l), l.mergeSiblings(), CKEDITOR.env.ie || l.$.normalize()) : (l = new CKEDITOR.dom.element("span"), u.extractContents().appendTo(l), u.insertNode(l), D.call(this, l), l.remove(!0)); + u = null + } + } + c.moveToBookmark(r); + c.shrink(CKEDITOR.SHRINK_TEXT); + c.shrink(CKEDITOR.NODE_ELEMENT, !0) + } + } + + function c(a) { + function b() { + for (var a = new CKEDITOR.dom.elementPath(d.getParent()), c = new CKEDITOR.dom.elementPath(n.getParent()), e = null, f = null, g = 0; g < a.elements.length; g++) { + var h = a.elements[g]; + if (h == a.block || h == a.blockLimit) break; + r.checkElementRemovable(h, !0) && (e = h) + } + for (g = 0; g < c.elements.length; g++) { + h = c.elements[g]; + if (h == c.block || h == c.blockLimit) break; + r.checkElementRemovable(h, !0) && (f = h) + } + f && n.breakParent(f); + e && d.breakParent(e) + } + a.enlarge(CKEDITOR.ENLARGE_INLINE, 1); + var c = + a.createBookmark(), + d = c.startNode, + e = this._.definition.alwaysRemoveElement; + if (a.collapsed) { + for (var f = new CKEDITOR.dom.elementPath(d.getParent(), a.root), g, h = 0, k; h < f.elements.length && (k = f.elements[h]) && k != f.block && k != f.blockLimit; h++) + if (this.checkElementRemovable(k)) { + var m; + !e && a.collapsed && (a.checkBoundaryOfElement(k, CKEDITOR.END) || (m = a.checkBoundaryOfElement(k, CKEDITOR.START))) ? (g = k, g.match = m ? "start" : "end") : (k.mergeSiblings(), k.is(this.element) ? B.call(this, k) : x(k, l(this)[k.getName()])) + } if (g) { + e = d; + for (h = + 0;; h++) { + k = f.elements[h]; + if (k.equals(g)) break; + else if (k.match) continue; + else k = k.clone(); + k.append(e); + e = k + } + e["start" == g.match ? "insertBefore" : "insertAfter"](g) + } + } else { + var n = c.endNode, + r = this; + b(); + for (f = d; !f.equals(n);) g = f.getNextSourceNode(), f.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable(f) && (f.getName() == this.element ? B.call(this, f) : x(f, l(this)[f.getName()]), g.type == CKEDITOR.NODE_ELEMENT && g.contains(d) && (b(), g = d.getNext())), f = g + } + a.moveToBookmark(c); + a.shrink(CKEDITOR.NODE_ELEMENT, !0) + } + + function f(a) { + var b = []; + a.forEach(function(a) { + if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1 + }, CKEDITOR.NODE_ELEMENT, !0); + return b + } + + function h(a) { + var b = a.getEnclosedNode() || a.getCommonAncestor(!1, !0); + (a = (new CKEDITOR.dom.elementPath(b, a.root)).contains(this.element, 1)) && !a.isReadOnly() && u(a, this) + } + + function k(a) { + var b = a.getCommonAncestor(!0, !0); + if (a = (new CKEDITOR.dom.elementPath(b, a.root)).contains(this.element, 1)) { + var b = this._.definition, + c = b.attributes; + if (c) + for (var d in c) a.removeAttribute(d, c[d]); + if (b.styles) + for (var e in b.styles) b.styles.hasOwnProperty(e) && + a.removeStyle(e) + } + } + + function g(a) { + var b = a.createBookmark(!0), + c = a.createIterator(); + c.enforceRealBlocks = !0; + this._.enterMode && (c.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR); + for (var d, e = a.document, f; d = c.getNextParagraph();) !d.isReadOnly() && (c.activeFilter ? c.activeFilter.check(this) : 1) && (f = J(this, e, d), r(d, f)); + a.moveToBookmark(b) + } + + function n(a) { + var b = a.createBookmark(1), + c = a.createIterator(); + c.enforceRealBlocks = !0; + c.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR; + for (var d, e; d = c.getNextParagraph();) this.checkElementRemovable(d) && + (d.is("pre") ? ((e = this._.enterMode == CKEDITOR.ENTER_BR ? null : a.document.createElement(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div")) && d.copyAttributes(e), r(d, e)) : B.call(this, d)); + a.moveToBookmark(b) + } + + function r(a, b) { + var c = !b; + c && (b = a.getDocument().createElement("div"), a.copyAttributes(b)); + var d = b && b.is("pre"), + f = a.is("pre"), + g = !d && f; + if (d && !f) { + f = b; + (g = a.getBogus()) && g.remove(); + g = a.getHtml(); + g = y(g, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ""); + g = g.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi, "$1"); + g = g.replace(/([ \t\n\r]+| )/g, + " "); + g = g.replace(/]*>/gi, "\n"); + if (CKEDITOR.env.ie) { + var h = a.getDocument().createElement("div"); + h.append(f); + f.$.outerHTML = "\x3cpre\x3e" + g + "\x3c/pre\x3e"; + f.copyAttributes(h.getFirst()); + f = h.getFirst().remove() + } else f.setHtml(g); + b = f + } else g ? b = v(c ? [a.getHtml()] : e(a), b) : a.moveChildren(b); + b.replace(a); + if (d) { + var c = b, + k; + (k = c.getPrevious(H)) && k.type == CKEDITOR.NODE_ELEMENT && k.is("pre") && (d = y(k.getHtml(), /\n$/, "") + "\n\n" + y(c.getHtml(), /^\n/, ""), CKEDITOR.env.ie ? c.$.outerHTML = "\x3cpre\x3e" + d + "\x3c/pre\x3e" : + c.setHtml(d), k.remove()) + } else c && m(b) + } + + function e(a) { + var b = []; + y(a.getOuterHtml(), /(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, function(a, b, c) { + return b + "\x3c/pre\x3e" + c + "\x3cpre\x3e" + }).replace(/([\s\S]*?)<\/pre>/gi, function(a, c) { + b.push(c) + }); + return b + } + + function y(a, b, c) { + var d = "", + e = ""; + a = a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi, function(a, b, c) { + b && (d = b); + c && (e = c); + return "" + }); + return d + a.replace(b, c) + e + } + + function v(a, b) { + var c; + 1 < a.length && (c = new CKEDITOR.dom.documentFragment(b.getDocument())); + for (var d = 0; d < a.length; d++) { + var e = a[d], + e = e.replace(/(\r\n|\r)/g, "\n"), + e = y(e, /^[ \t]*\n/, ""), + e = y(e, /\n$/, ""), + e = y(e, /^[ \t]+|[ \t]+$/g, function(a, b) { + return 1 == a.length ? "\x26nbsp;" : b ? " " + CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) : CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " " + }), + e = e.replace(/\n/g, "\x3cbr\x3e"), + e = e.replace(/[ \t]{2,}/g, function(a) { + return CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " " + }); + if (c) { + var f = b.clone(); + f.setHtml(e); + c.append(f) + } else b.setHtml(e) + } + return c || b + } + + function B(a, b) { + var c = this._.definition, + d = c.attributes, + c = c.styles, + e = l(this)[a.getName()], + f = CKEDITOR.tools.isEmpty(d) && CKEDITOR.tools.isEmpty(c), + g; + for (g in d) + if ("class" != g && !this._.definition.fullMatch || a.getAttribute(g) == t(g, d[g])) b && "data-" == g.slice(0, 5) || (f = a.hasAttribute(g), a.removeAttribute(g)); + for (var h in c) this._.definition.fullMatch && a.getStyle(h) != t(h, c[h], !0) || (f = f || !!a.getStyle(h), a.removeStyle(h)); + x(a, e, C[a.getName()]); + f && (this._.definition.alwaysRemoveElement ? + m(a, 1) : !CKEDITOR.dtd.$block[a.getName()] || this._.enterMode == CKEDITOR.ENTER_BR && !a.hasAttributes() ? m(a) : a.renameNode(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div")) + } + + function D(a) { + for (var b = l(this), c = a.getElementsByTag(this.element), d, e = c.count(); 0 <= --e;) d = c.getItem(e), d.isReadOnly() || B.call(this, d, !0); + for (var f in b) + if (f != this.element) + for (c = a.getElementsByTag(f), e = c.count() - 1; 0 <= e; e--) d = c.getItem(e), d.isReadOnly() || x(d, b[f]) + } + + function x(a, b, c) { + if (b = b && b.attributes) + for (var d = 0; d < b.length; d++) { + var e = b[d][0], + f; + if (f = a.getAttribute(e)) { + var g = b[d][1]; + (null === g || g.test && g.test(f) || "string" == typeof g && f == g) && a.removeAttribute(e) + } + } + c || m(a) + } + + function m(a, b) { + if (!a.hasAttributes() || b) + if (CKEDITOR.dtd.$block[a.getName()]) { + var c = a.getPrevious(H), + d = a.getNext(H); + !c || c.type != CKEDITOR.NODE_TEXT && c.isBlockBoundary({ + br: 1 + }) || a.append("br", 1); + !d || d.type != CKEDITOR.NODE_TEXT && d.isBlockBoundary({ + br: 1 + }) || a.append("br"); + a.remove(!0) + } else c = a.getFirst(), d = a.getLast(), a.remove(!0), c && (c.type == CKEDITOR.NODE_ELEMENT && c.mergeSiblings(), + d && !c.equals(d) && d.type == CKEDITOR.NODE_ELEMENT && d.mergeSiblings()) + } + + function J(a, b, c) { + var d; + d = a.element; + "*" == d && (d = "span"); + d = new CKEDITOR.dom.element(d, b); + c && c.copyAttributes(d); + d = u(d, a); + b.getCustomData("doc_processing_style") && d.hasAttribute("id") ? d.removeAttribute("id") : b.setCustomData("doc_processing_style", 1); + return d + } + + function u(a, b) { + var c = b._.definition, + d = c.attributes, + c = CKEDITOR.style.getStyleText(c); + if (d) + for (var e in d) a.setAttribute(e, d[e]); + c && a.setAttribute("style", c); + a.getDocument().removeCustomData("doc_processing_style"); + return a + } + + function K(a, b) { + for (var c in a) a[c] = a[c].replace(E, function(a, c) { + return b[c] + }) + } + + function l(a) { + if (a._.overrides) return a._.overrides; + var b = a._.overrides = {}, + c = a._.definition.overrides; + if (c) { + CKEDITOR.tools.isArray(c) || (c = [c]); + for (var d = 0; d < c.length; d++) { + var e = c[d], + f, g; + "string" == typeof e ? f = e.toLowerCase() : (f = e.element ? e.element.toLowerCase() : a.element, g = e.attributes); + e = b[f] || (b[f] = {}); + if (g) { + var e = e.attributes = e.attributes || [], + h; + for (h in g) e.push([h.toLowerCase(), g[h]]) + } + } + } + return b + } + + function t(a, + b, c) { + var d = new CKEDITOR.dom.element("span"); + d[c ? "setStyle" : "setAttribute"](a, b); + return d[c ? "getStyle" : "getAttribute"](a) + } + + function F(a, b) { + function c(a, b) { + return "font-family" == b.toLowerCase() ? a.replace(/["']/g, "") : a + } + "string" == typeof a && (a = CKEDITOR.tools.parseCssText(a)); + "string" == typeof b && (b = CKEDITOR.tools.parseCssText(b, !0)); + for (var d in a) + if (!(d in b) || c(b[d], d) != c(a[d], d) && "inherit" != a[d] && "inherit" != b[d]) return !1; + return !0 + } + + function L(a, b, c) { + var d = a.getRanges(); + b = b ? this.removeFromRange : this.applyToRange; + var e, f; + if (a.isFake && a.isInTable()) + for (e = [], f = 0; f < d.length; f++) e.push(d[f].clone()); + for (var g = d.createIterator(); f = g.getNextRange();) b.call(this, f, c); + a.selectRanges(e || d) + } + var C = { + address: 1, + div: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1, + p: 1, + pre: 1, + section: 1, + header: 1, + footer: 1, + nav: 1, + article: 1, + aside: 1, + figure: 1, + dialog: 1, + hgroup: 1, + time: 1, + meter: 1, + menu: 1, + command: 1, + keygen: 1, + output: 1, + progress: 1, + details: 1, + datagrid: 1, + datalist: 1 + }, + M = { + a: 1, + blockquote: 1, + embed: 1, + hr: 1, + img: 1, + li: 1, + object: 1, + ol: 1, + table: 1, + td: 1, + tr: 1, + th: 1, + ul: 1, + dl: 1, + dt: 1, + dd: 1, + form: 1, + audio: 1, + video: 1 + }, + q = /\s*(?:;\s*|$)/, + E = /#\((.+?)\)/g, + z = CKEDITOR.dom.walker.bookmark(0, 1), + H = CKEDITOR.dom.walker.whitespaces(1); + CKEDITOR.style = function(a, b) { + if ("string" == typeof a.type) return new CKEDITOR.style.customHandlers[a.type](a); + var c = a.attributes; + c && c.style && (a.styles = CKEDITOR.tools.extend({}, a.styles, CKEDITOR.tools.parseCssText(c.style)), delete c.style); + b && (a = CKEDITOR.tools.clone(a), K(a.attributes, b), K(a.styles, b)); + c = this.element = a.element ? "string" == typeof a.element ? a.element.toLowerCase() : + a.element : "*"; + this.type = a.type || (C[c] ? CKEDITOR.STYLE_BLOCK : M[c] ? CKEDITOR.STYLE_OBJECT : CKEDITOR.STYLE_INLINE); + "object" == typeof this.element && (this.type = CKEDITOR.STYLE_OBJECT); + this._ = { + definition: a + } + }; + CKEDITOR.style.prototype = { + apply: function(a) { + if (a instanceof CKEDITOR.dom.document) return L.call(this, a.getSelection()); + if (this.checkApplicable(a.elementPath(), a)) { + var b = this._.enterMode; + b || (this._.enterMode = a.activeEnterMode); + L.call(this, a.getSelection(), 0, a); + this._.enterMode = b + } + }, + remove: function(a) { + if (a instanceof CKEDITOR.dom.document) return L.call(this, a.getSelection(), 1); + if (this.checkApplicable(a.elementPath(), a)) { + var b = this._.enterMode; + b || (this._.enterMode = a.activeEnterMode); + L.call(this, a.getSelection(), 1, a); + this._.enterMode = b + } + }, + applyToRange: function(a) { + this.applyToRange = this.type == CKEDITOR.STYLE_INLINE ? b : this.type == CKEDITOR.STYLE_BLOCK ? g : this.type == CKEDITOR.STYLE_OBJECT ? h : null; + return this.applyToRange(a) + }, + removeFromRange: function(a) { + this.removeFromRange = this.type == CKEDITOR.STYLE_INLINE ? c : this.type == CKEDITOR.STYLE_BLOCK ? + n : this.type == CKEDITOR.STYLE_OBJECT ? k : null; + return this.removeFromRange(a) + }, + applyToObject: function(a) { + u(a, this) + }, + checkActive: function(a, b) { + switch (this.type) { + case CKEDITOR.STYLE_BLOCK: + return this.checkElementRemovable(a.block || a.blockLimit, !0, b); + case CKEDITOR.STYLE_OBJECT: + case CKEDITOR.STYLE_INLINE: + for (var c = a.elements, d = 0, e; d < c.length; d++) + if (e = c[d], this.type != CKEDITOR.STYLE_INLINE || e != a.block && e != a.blockLimit) { + if (this.type == CKEDITOR.STYLE_OBJECT) { + var f = e.getName(); + if (!("string" == typeof this.element ? + f == this.element : f in this.element)) continue + } + if (this.checkElementRemovable(e, !0, b)) return !0 + } + } + return !1 + }, + checkApplicable: function(a, b, c) { + b && b instanceof CKEDITOR.filter && (c = b); + if (c && !c.check(this)) return !1; + switch (this.type) { + case CKEDITOR.STYLE_OBJECT: + return !!a.contains(this.element); + case CKEDITOR.STYLE_BLOCK: + return !!a.blockLimit.getDtd()[this.element] + } + return !0 + }, + checkElementMatch: function(a, b) { + var c = this._.definition; + if (!a || !c.ignoreReadonly && a.isReadOnly()) return !1; + var d = a.getName(); + if ("string" == typeof this.element ? + d == this.element : d in this.element) { + if (!b && !a.hasAttributes()) return !0; + if (d = c._AC) c = d; + else { + var d = {}, + e = 0, + f = c.attributes; + if (f) + for (var g in f) e++, d[g] = f[g]; + if (g = CKEDITOR.style.getStyleText(c)) d.style || e++, d.style = g; + d._length = e; + c = c._AC = d + } + if (c._length) { + for (var h in c) + if ("_length" != h) + if (d = a.getAttribute(h) || "", "style" == h ? F(c[h], d) : c[h] == d) { + if (!b) return !0 + } else if (b) return !1; + if (b) return !0 + } else return !0 + } + return !1 + }, + checkElementRemovable: function(a, b, c) { + if (this.checkElementMatch(a, b, c)) return !0; + if (b = l(this)[a.getName()]) { + var d; + if (!(b = b.attributes)) return !0; + for (c = 0; c < b.length; c++) + if (d = b[c][0], d = a.getAttribute(d)) { + var e = b[c][1]; + if (null === e) return !0; + if ("string" == typeof e) { + if (d == e) return !0 + } else if (e.test(d)) return !0 + } + } + return !1 + }, + buildPreview: function(a) { + var b = this._.definition, + c = [], + d = b.element; + "bdo" == d && (d = "span"); + var c = ["\x3c", d], + e = b.attributes; + if (e) + for (var f in e) c.push(" ", f, '\x3d"', e[f], '"'); + (e = CKEDITOR.style.getStyleText(b)) && c.push(' style\x3d"', e, '"'); + c.push("\x3e", a || b.name, "\x3c/", d, "\x3e"); + return c.join("") + }, + getDefinition: function() { + return this._.definition + } + }; + CKEDITOR.style.getStyleText = function(a) { + var b = a._ST; + if (b) return b; + var b = a.styles, + c = a.attributes && a.attributes.style || "", + d = ""; + c.length && (c = c.replace(q, ";")); + for (var e in b) { + var f = b[e], + g = (e + ":" + f).replace(q, ";"); + "inherit" == f ? d += g : c += g + } + c.length && (c = CKEDITOR.tools.normalizeCssText(c, !0)); + return a._ST = c + d + }; + CKEDITOR.style.customHandlers = {}; + CKEDITOR.style.addCustomHandler = function(a) { + var b = function(a) { + this._ = { + definition: a + }; + this.setup && this.setup(a) + }; + b.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), { + assignedTo: CKEDITOR.STYLE_OBJECT + }, a, !0); + return this.customHandlers[a.type] = b + }; + var P = CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED, + O = CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED + })(); + CKEDITOR.styleCommand = function(a, d) { + this.requiredContent = this.allowedContent = this.style = a; + CKEDITOR.tools.extend(this, d, !0) + }; + CKEDITOR.styleCommand.prototype.exec = function(a) { + a.focus(); + this.state == CKEDITOR.TRISTATE_OFF ? a.applyStyle(this.style) : this.state == CKEDITOR.TRISTATE_ON && a.removeStyle(this.style) + }; + CKEDITOR.stylesSet = new CKEDITOR.resourceManager("", "stylesSet"); + CKEDITOR.addStylesSet = CKEDITOR.tools.bind(CKEDITOR.stylesSet.add, CKEDITOR.stylesSet); + CKEDITOR.loadStylesSet = function(a, d, b) { + CKEDITOR.stylesSet.addExternal(a, d, ""); + CKEDITOR.stylesSet.load(a, b) + }; + CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { + attachStyleStateChange: function(a, d) { + var b = this._.styleStateChangeCallbacks; + b || (b = this._.styleStateChangeCallbacks = [], this.on("selectionChange", function(a) { + for (var d = 0; d < b.length; d++) { + var h = b[d], + k = h.style.checkActive(a.data.path, this) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF; + h.fn.call(this, k) + } + })); + b.push({ + style: a, + fn: d + }) + }, + applyStyle: function(a) { + a.apply(this) + }, + removeStyle: function(a) { + a.remove(this) + }, + getStylesSet: function(a) { + if (this._.stylesDefinitions) a(this._.stylesDefinitions); + else { + var d = this, + b = d.config.stylesCombo_stylesSet || d.config.stylesSet; + if (!1 === b) a(null); + else if (b instanceof Array) d._.stylesDefinitions = b, a(b); + else { + b || (b = "default"); + var b = b.split(":"), + c = b[0]; + CKEDITOR.stylesSet.addExternal(c, b[1] ? b.slice(1).join(":") : CKEDITOR.getUrl("styles.js"), ""); + CKEDITOR.stylesSet.load(c, function(b) { + d._.stylesDefinitions = b[c]; + a(d._.stylesDefinitions) + }) + } + } + } + }); + CKEDITOR.dom.comment = function(a, d) { + "string" == typeof a && (a = (d ? d.$ : document).createComment(a)); + CKEDITOR.dom.domObject.call(this, a) + }; + CKEDITOR.dom.comment.prototype = new CKEDITOR.dom.node; + CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype, { + type: CKEDITOR.NODE_COMMENT, + getOuterHtml: function() { + return "\x3c!--" + this.$.nodeValue + "--\x3e" + } + }); + "use strict"; + (function() { + var a = {}, + d = {}, + b; + for (b in CKEDITOR.dtd.$blockLimit) b in CKEDITOR.dtd.$list || (a[b] = 1); + for (b in CKEDITOR.dtd.$block) b in CKEDITOR.dtd.$blockLimit || b in CKEDITOR.dtd.$empty || (d[b] = 1); + CKEDITOR.dom.elementPath = function(b, f) { + var h = null, + k = null, + g = [], + n = b, + r; + f = f || b.getDocument().getBody(); + n || (n = f); + do + if (n.type == CKEDITOR.NODE_ELEMENT) { + g.push(n); + if (!this.lastElement && (this.lastElement = n, n.is(CKEDITOR.dtd.$object) || "false" == n.getAttribute("contenteditable"))) continue; + if (n.equals(f)) break; + if (!k && (r = n.getName(), + "true" == n.getAttribute("contenteditable") ? k = n : !h && d[r] && (h = n), a[r])) { + if (r = !h && "div" == r) { + a: { + r = n.getChildren(); + for (var e = 0, y = r.count(); e < y; e++) { + var v = r.getItem(e); + if (v.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$block[v.getName()]) { + r = !0; + break a + } + } + r = !1 + } + r = !r + } + r ? h = n : k = n + } + } while (n = n.getParent()); + k || (k = f); + this.block = h; + this.blockLimit = k; + this.root = f; + this.elements = g + } + })(); + CKEDITOR.dom.elementPath.prototype = { + compare: function(a) { + var d = this.elements; + a = a && a.elements; + if (!a || d.length != a.length) return !1; + for (var b = 0; b < d.length; b++) + if (!d[b].equals(a[b])) return !1; + return !0 + }, + contains: function(a, d, b) { + var c = 0, + f; + "string" == typeof a && (f = function(b) { + return b.getName() == a + }); + a instanceof CKEDITOR.dom.element ? f = function(b) { + return b.equals(a) + } : CKEDITOR.tools.isArray(a) ? f = function(b) { + return -1 < CKEDITOR.tools.indexOf(a, b.getName()) + } : "function" == typeof a ? f = a : "object" == typeof a && (f = function(b) { + return b.getName() in + a + }); + var h = this.elements, + k = h.length; + d && (b ? c += 1 : --k); + b && (h = Array.prototype.slice.call(h, 0), h.reverse()); + for (; c < k; c++) + if (f(h[c])) return h[c]; + return null + }, + isContextFor: function(a) { + var d; + return a in CKEDITOR.dtd.$block ? (d = this.contains(CKEDITOR.dtd.$intermediate) || this.root.equals(this.block) && this.block || this.blockLimit, !!d.getDtd()[a]) : !0 + }, + direction: function() { + return (this.block || this.blockLimit || this.root).getDirection(1) + } + }; + CKEDITOR.dom.text = function(a, d) { + "string" == typeof a && (a = (d ? d.$ : document).createTextNode(a)); + this.$ = a + }; + CKEDITOR.dom.text.prototype = new CKEDITOR.dom.node; + CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype, { + type: CKEDITOR.NODE_TEXT, + getLength: function() { + return this.$.nodeValue.length + }, + getText: function() { + return this.$.nodeValue + }, + setText: function(a) { + this.$.nodeValue = a + }, + split: function(a) { + var d = this.$.parentNode, + b = d.childNodes.length, + c = this.getLength(), + f = this.getDocument(), + h = new CKEDITOR.dom.text(this.$.splitText(a), f); + d.childNodes.length == b && (a >= c ? (h = f.createText(""), h.insertAfter(this)) : (a = f.createText(""), a.insertAfter(h), a.remove())); + return h + }, + substring: function(a, + d) { + return "number" != typeof d ? this.$.nodeValue.substr(a) : this.$.nodeValue.substring(a, d) + } + }); + (function() { + function a(a, c, d) { + var h = a.serializable, + k = c[d ? "endContainer" : "startContainer"], + g = d ? "endOffset" : "startOffset", + n = h ? c.document.getById(a.startNode) : a.startNode; + a = h ? c.document.getById(a.endNode) : a.endNode; + k.equals(n.getPrevious()) ? (c.startOffset = c.startOffset - k.getLength() - a.getPrevious().getLength(), k = a.getNext()) : k.equals(a.getPrevious()) && (c.startOffset -= k.getLength(), k = a.getNext()); + k.equals(n.getParent()) && c[g]++; + k.equals(a.getParent()) && c[g]++; + c[d ? "endContainer" : "startContainer"] = k; + return c + } + CKEDITOR.dom.rangeList = function(a) { + if (a instanceof CKEDITOR.dom.rangeList) return a; + a ? a instanceof CKEDITOR.dom.range && (a = [a]) : a = []; + return CKEDITOR.tools.extend(a, d) + }; + var d = { + createIterator: function() { + var a = this, + c = CKEDITOR.dom.walker.bookmark(), + d = [], + h; + return { + getNextRange: function(k) { + h = void 0 === h ? 0 : h + 1; + var g = a[h]; + if (g && 1 < a.length) { + if (!h) + for (var n = a.length - 1; 0 <= n; n--) d.unshift(a[n].createBookmark(!0)); + if (k) + for (var r = 0; a[h + r + 1];) { + var e = g.document; + k = 0; + n = e.getById(d[r].endNode); + for (e = e.getById(d[r + 1].startNode);;) { + n = + n.getNextSourceNode(!1); + if (e.equals(n)) k = 1; + else if (c(n) || n.type == CKEDITOR.NODE_ELEMENT && n.isBlockBoundary()) continue; + break + } + if (!k) break; + r++ + } + for (g.moveToBookmark(d.shift()); r--;) n = a[++h], n.moveToBookmark(d.shift()), g.setEnd(n.endContainer, n.endOffset) + } + return g + } + } + }, + createBookmarks: function(b) { + for (var c = [], d, h = 0; h < this.length; h++) { + c.push(d = this[h].createBookmark(b, !0)); + for (var k = h + 1; k < this.length; k++) this[k] = a(d, this[k]), this[k] = a(d, this[k], !0) + } + return c + }, + createBookmarks2: function(a) { + for (var c = [], d = 0; d < + this.length; d++) c.push(this[d].createBookmark2(a)); + return c + }, + moveToBookmarks: function(a) { + for (var c = 0; c < this.length; c++) this[c].moveToBookmark(a[c]) + } + } + })(); + (function() { + function a() { + return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1] || "skins/" + CKEDITOR.skinName.split(",")[0] + "/") + } + + function d(b) { + var c = CKEDITOR.skin["ua_" + b], + d = CKEDITOR.env; + if (c) + for (var c = c.split(",").sort(function(a, b) { + return a > b ? -1 : 1 + }), f = 0, g; f < c.length; f++) + if (g = c[f], d.ie && (g.replace(/^ie/, "") == d.version || d.quirks && "iequirks" == g) && (g = "ie"), d[g]) { + b += "_" + c[f]; + break + } return CKEDITOR.getUrl(a() + b + ".css") + } + + function b(a, b) { + h[a] || (CKEDITOR.document.appendStyleSheet(d(a)), h[a] = 1); + b && b() + } + + function c(a) { + var b = + a.getById(k); + b || (b = a.getHead().append("style"), b.setAttribute("id", k), b.setAttribute("type", "text/css")); + return b + } + + function f(a, b, c) { + var d, f, g; + if (CKEDITOR.env.webkit) + for (b = b.split("}").slice(0, -1), f = 0; f < b.length; f++) b[f] = b[f].split("{"); + for (var h = 0; h < a.length; h++) + if (CKEDITOR.env.webkit) + for (f = 0; f < b.length; f++) { + g = b[f][1]; + for (d = 0; d < c.length; d++) g = g.replace(c[d][0], c[d][1]); + a[h].$.sheet.addRule(b[f][0], g) + } else { + g = b; + for (d = 0; d < c.length; d++) g = g.replace(c[d][0], c[d][1]); + CKEDITOR.env.ie && 11 > CKEDITOR.env.version ? + a[h].$.styleSheet.cssText += g : a[h].$.innerHTML += g + } + } + var h = {}; + CKEDITOR.skin = { + path: a, + loadPart: function(c, d) { + CKEDITOR.skin.name != CKEDITOR.skinName.split(",")[0] ? CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a() + "skin.js"), function() { + b(c, d) + }) : b(c, d) + }, + getPath: function(a) { + return CKEDITOR.getUrl(d(a)) + }, + icons: {}, + addIcon: function(a, b, c, d) { + a = a.toLowerCase(); + this.icons[a] || (this.icons[a] = { + path: b, + offset: c || 0, + bgsize: d || "16px" + }) + }, + getIconStyle: function(a, b, c, d, f) { + var g; + a && (a = a.toLowerCase(), b && (g = this.icons[a + "-rtl"]), + g || (g = this.icons[a])); + a = c || g && g.path || ""; + d = d || g && g.offset; + f = f || g && g.bgsize || "16px"; + a && (a = a.replace(/'/g, "\\'")); + return a && "background-image:url('" + CKEDITOR.getUrl(a) + "');background-position:0 " + d + "px;background-size:" + f + ";" + } + }; + CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { + getUiColor: function() { + return this.uiColor + }, + setUiColor: function(a) { + var b = c(CKEDITOR.document); + return (this.setUiColor = function(a) { + this.uiColor = a; + var c = CKEDITOR.skin.chameleon, + d = "", + h = ""; + "function" == typeof c && (d = c(this, "editor"), h = + c(this, "panel")); + a = [ + [n, a] + ]; + f([b], d, a); + f(g, h, a) + }).call(this, a) + } + }); + var k = "cke_ui_color", + g = [], + n = /\$color/g; + CKEDITOR.on("instanceLoaded", function(a) { + if (!CKEDITOR.env.ie || !CKEDITOR.env.quirks) { + var b = a.editor; + a = function(a) { + a = (a.data[0] || a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument(); + if (!a.getById("cke_ui_color")) { + a = c(a); + g.push(a); + var d = b.getUiColor(); + d && f([a], CKEDITOR.skin.chameleon(b, "panel"), [ + [n, d] + ]) + } + }; + b.on("panelShow", a); + b.on("menuShow", a); + b.config.uiColor && b.setUiColor(b.config.uiColor) + } + }) + })(); + (function() { + if (CKEDITOR.env.webkit) CKEDITOR.env.hc = !1; + else { + var a = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', CKEDITOR.document); + a.appendTo(CKEDITOR.document.getHead()); + try { + var d = a.getComputedStyle("border-top-color"), + b = a.getComputedStyle("border-right-color"); + CKEDITOR.env.hc = !(!d || d != b) + } catch (c) { + CKEDITOR.env.hc = !1 + } + a.remove() + } + CKEDITOR.env.hc && (CKEDITOR.env.cssClass += " cke_hc"); + CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); + CKEDITOR.status = "loaded"; + CKEDITOR.fireOnce("loaded"); + if (a = CKEDITOR._.pending) + for (delete CKEDITOR._.pending, d = 0; d < a.length; d++) CKEDITOR.editor.prototype.constructor.apply(a[d][0], a[d][1]), CKEDITOR.add(a[d][0]) + })(); + /* + Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + CKEDITOR.skin.name = "moono-lisa"; + CKEDITOR.skin.ua_editor = "ie,iequirks,ie8,gecko"; + CKEDITOR.skin.ua_dialog = "ie,iequirks,ie8"; + CKEDITOR.skin.chameleon = function() { + var b = function() { + return function(b, d) { + for (var a = b.match(/[^#]./g), e = 0; 3 > e; e++) { + var f = e, + c; + c = parseInt(a[e], 16); + c = ("0" + (0 > d ? 0 | c * (1 + d) : 0 | c + (255 - c) * d).toString(16)).slice(-2); + a[f] = c + } + return "#" + a.join("") + } + }(), + f = { + editor: new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "), + panel: new CKEDITOR.template(".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ") + }; + return function(g, d) { + var a = b(g.uiColor, .4), + a = { + id: "." + g.id, + defaultBorder: b(a, -.2), + toolbarElementsBorder: b(a, -.25), + defaultBackground: a, + lightBackground: b(a, .8), + darkBackground: b(a, -.15), + ckeButtonOn: b(a, .4), + ckeResizer: b(a, -.4), + ckeColorauto: b(a, .8), + dialogBody: b(a, .7), + dialogTab: b(a, .65), + dialogTabSelected: "#FFF", + dialogTabSelectedBorder: "#FFF", + elementsPathColor: b(a, -.6), + menubuttonHover: b(a, .1), + menubuttonIcon: b(a, .5), + menubuttonIconHover: b(a, .3) + }; + return f[d].output(a).replace(/\[/g, "{").replace(/\]/g, "}") + } + }(); + CKEDITOR.plugins.add("dialogui", { + onLoad: function() { + var h = function(b) { + this._ || (this._ = {}); + this._["default"] = this._.initValue = b["default"] || ""; + this._.required = b.required || !1; + for (var a = [this._], d = 1; d < arguments.length; d++) a.push(arguments[d]); + a.push(!0); + CKEDITOR.tools.extend.apply(CKEDITOR.tools, a); + return this._ + }, + v = { + build: function(b, a, d) { + return new CKEDITOR.ui.dialog.textInput(b, a, d) + } + }, + n = { + build: function(b, a, d) { + return new CKEDITOR.ui.dialog[a.type](b, a, d) + } + }, + q = { + isChanged: function() { + return this.getValue() != + this.getInitValue() + }, + reset: function(b) { + this.setValue(this.getInitValue(), b) + }, + setInitValue: function() { + this._.initValue = this.getValue() + }, + resetInitValue: function() { + this._.initValue = this._["default"] + }, + getInitValue: function() { + return this._.initValue + } + }, + r = CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { + onChange: function(b, a) { + this._.domOnChangeRegistered || (b.on("load", function() { + this.getInputElement().on("change", function() { + b.parts.dialog.isVisible() && this.fire("change", { + value: this.getValue() + }) + }, + this) + }, this), this._.domOnChangeRegistered = !0); + this.on("change", a) + } + }, !0), + x = /^on([A-Z]\w+)/, + t = function(b) { + for (var a in b)(x.test(a) || "title" == a || "type" == a) && delete b[a]; + return b + }, + w = function(b) { + b = b.data.getKeystroke(); + b == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ? this.setDirectionMarker("ltr") : b == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 && this.setDirectionMarker("rtl") + }; + CKEDITOR.tools.extend(CKEDITOR.ui.dialog, { + labeledElement: function(b, a, d, f) { + if (!(4 > arguments.length)) { + var c = h.call(this, a); + c.labelId = CKEDITOR.tools.getNextId() + + "_label"; + this._.children = []; + var e = { + role: a.role || "presentation" + }; + a.includeLabel && (e["aria-labelledby"] = c.labelId); + CKEDITOR.ui.dialog.uiElement.call(this, b, a, d, "div", null, e, function() { + var e = [], + g = a.required ? " cke_required" : ""; + "horizontal" != a.labelLayout ? e.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ', ' id\x3d"' + c.labelId + '"', c.inputId ? ' for\x3d"' + c.inputId + '"' : "", (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e", a.label, "\x3c/label\x3e", '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', + a.controlStyle ? ' style\x3d"' + a.controlStyle + '"' : "", ' role\x3d"presentation"\x3e', f.call(this, b, a), "\x3c/div\x3e") : (g = { + type: "hbox", + widths: a.widths, + padding: 0, + children: [{ + type: "html", + html: '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c.labelId + '" for\x3d"' + c.inputId + '"' + (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e" + CKEDITOR.tools.htmlEncode(a.label) + "\x3c/label\x3e" + }, { + type: "html", + html: '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' + (a.controlStyle ? ' style\x3d"' + a.controlStyle + + '"' : "") + "\x3e" + f.call(this, b, a) + "\x3c/span\x3e" + }] + }, CKEDITOR.dialog._.uiElementBuilders.hbox.build(b, g, e)); + return e.join("") + }) + } + }, + textInput: function(b, a, d) { + if (!(3 > arguments.length)) { + h.call(this, a); + var f = this._.inputId = CKEDITOR.tools.getNextId() + "_textInput", + c = { + "class": "cke_dialog_ui_input_" + a.type, + id: f, + type: a.type + }; + a.validate && (this.validate = a.validate); + a.maxLength && (c.maxlength = a.maxLength); + a.size && (c.size = a.size); + a.inputStyle && (c.style = a.inputStyle); + var e = this, + m = !1; + b.on("load", function() { + e.getInputElement().on("keydown", + function(a) { + 13 == a.data.getKeystroke() && (m = !0) + }); + e.getInputElement().on("keyup", function(a) { + 13 == a.data.getKeystroke() && m && (b.getButton("ok") && setTimeout(function() { + b.getButton("ok").click() + }, 0), m = !1); + e.bidi && w.call(e, a) + }, null, null, 1E3) + }); + CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() { + var b = ['\x3cdiv class\x3d"cke_dialog_ui_input_', a.type, '" role\x3d"presentation"']; + a.width && b.push('style\x3d"width:' + a.width + '" '); + b.push("\x3e\x3cinput "); + c["aria-labelledby"] = this._.labelId; + this._.required && + (c["aria-required"] = this._.required); + for (var e in c) b.push(e + '\x3d"' + c[e] + '" '); + b.push(" /\x3e\x3c/div\x3e"); + return b.join("") + }) + } + }, + textarea: function(b, a, d) { + if (!(3 > arguments.length)) { + h.call(this, a); + var f = this, + c = this._.inputId = CKEDITOR.tools.getNextId() + "_textarea", + e = {}; + a.validate && (this.validate = a.validate); + e.rows = a.rows || 5; + e.cols = a.cols || 20; + e["class"] = "cke_dialog_ui_input_textarea " + (a["class"] || ""); + "undefined" != typeof a.inputStyle && (e.style = a.inputStyle); + a.dir && (e.dir = a.dir); + if (f.bidi) b.on("load", + function() { + f.getInputElement().on("keyup", w) + }, f); + CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() { + e["aria-labelledby"] = this._.labelId; + this._.required && (e["aria-required"] = this._.required); + var a = ['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"', c, '" '], + b; + for (b in e) a.push(b + '\x3d"' + CKEDITOR.tools.htmlEncode(e[b]) + '" '); + a.push("\x3e", CKEDITOR.tools.htmlEncode(f._["default"]), "\x3c/textarea\x3e\x3c/div\x3e"); + return a.join("") + }) + } + }, + checkbox: function(b, + a, d) { + if (!(3 > arguments.length)) { + var f = h.call(this, a, { + "default": !!a["default"] + }); + a.validate && (this.validate = a.validate); + CKEDITOR.ui.dialog.uiElement.call(this, b, a, d, "span", null, null, function() { + var c = CKEDITOR.tools.extend({}, a, { + id: a.id ? a.id + "_checkbox" : CKEDITOR.tools.getNextId() + "_checkbox" + }, !0), + e = [], + d = CKEDITOR.tools.getNextId() + "_label", + g = { + "class": "cke_dialog_ui_checkbox_input", + type: "checkbox", + "aria-labelledby": d + }; + t(c); + a["default"] && (g.checked = "checked"); + "undefined" != typeof c.inputStyle && (c.style = c.inputStyle); + f.checkbox = new CKEDITOR.ui.dialog.uiElement(b, c, e, "input", null, g); + e.push(' \x3clabel id\x3d"', d, '" for\x3d"', g.id, '"' + (a.labelStyle ? ' style\x3d"' + a.labelStyle + '"' : "") + "\x3e", CKEDITOR.tools.htmlEncode(a.label), "\x3c/label\x3e"); + return e.join("") + }) + } + }, + radio: function(b, a, d) { + if (!(3 > arguments.length)) { + h.call(this, a); + this._["default"] || (this._["default"] = this._.initValue = a.items[0][1]); + a.validate && (this.validate = a.validate); + var f = [], + c = this; + a.role = "radiogroup"; + a.includeLabel = !0; + CKEDITOR.ui.dialog.labeledElement.call(this, + b, a, d, + function() { + for (var e = [], d = [], g = (a.id ? a.id : CKEDITOR.tools.getNextId()) + "_radio", k = 0; k < a.items.length; k++) { + var l = a.items[k], + h = void 0 !== l[2] ? l[2] : l[0], + n = void 0 !== l[1] ? l[1] : l[0], + p = CKEDITOR.tools.getNextId() + "_radio_input", + q = p + "_label", + p = CKEDITOR.tools.extend({}, a, { + id: p, + title: null, + type: null + }, !0), + h = CKEDITOR.tools.extend({}, p, { + title: h + }, !0), + r = { + type: "radio", + "class": "cke_dialog_ui_radio_input", + name: g, + value: n, + "aria-labelledby": q + }, + u = []; + c._["default"] == n && (r.checked = "checked"); + t(p); + t(h); + "undefined" != typeof p.inputStyle && + (p.style = p.inputStyle); + p.keyboardFocusable = !0; + f.push(new CKEDITOR.ui.dialog.uiElement(b, p, u, "input", null, r)); + u.push(" "); + new CKEDITOR.ui.dialog.uiElement(b, h, u, "label", null, { + id: q, + "for": r.id + }, l[0]); + e.push(u.join("")) + } + new CKEDITOR.ui.dialog.hbox(b, f, e, d); + return d.join("") + }); + this._.children = f + } + }, + button: function(b, a, d) { + if (arguments.length) { + "function" == typeof a && (a = a(b.getParentEditor())); + h.call(this, a, { + disabled: a.disabled || !1 + }); + CKEDITOR.event.implementOn(this); + var f = this; + b.on("load", function() { + var a = this.getElement(); + (function() { + a.on("click", function(a) { + f.click(); + a.data.preventDefault() + }); + a.on("keydown", function(a) { + a.data.getKeystroke() in { + 32: 1 + } && (f.click(), a.data.preventDefault()) + }) + })(); + a.unselectable() + }, this); + var c = CKEDITOR.tools.extend({}, a); + delete c.style; + var e = CKEDITOR.tools.getNextId() + "_label"; + CKEDITOR.ui.dialog.uiElement.call(this, b, c, d, "a", null, { + style: a.style, + href: "javascript:void(0)", + title: a.label, + hidefocus: "true", + "class": a["class"], + role: "button", + "aria-labelledby": e + }, '\x3cspan id\x3d"' + e + '" class\x3d"cke_dialog_ui_button"\x3e' + + CKEDITOR.tools.htmlEncode(a.label) + "\x3c/span\x3e") + } + }, + select: function(b, a, d) { + if (!(3 > arguments.length)) { + var f = h.call(this, a); + a.validate && (this.validate = a.validate); + f.inputId = CKEDITOR.tools.getNextId() + "_select"; + CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() { + var c = CKEDITOR.tools.extend({}, a, { + id: a.id ? a.id + "_select" : CKEDITOR.tools.getNextId() + "_select" + }, !0), + e = [], + d = [], + g = { + id: f.inputId, + "class": "cke_dialog_ui_input_select", + "aria-labelledby": this._.labelId + }; + e.push('\x3cdiv class\x3d"cke_dialog_ui_input_', + a.type, '" role\x3d"presentation"'); + a.width && e.push('style\x3d"width:' + a.width + '" '); + e.push("\x3e"); + void 0 !== a.size && (g.size = a.size); + void 0 !== a.multiple && (g.multiple = a.multiple); + t(c); + for (var k = 0, l; k < a.items.length && (l = a.items[k]); k++) d.push('\x3coption value\x3d"', CKEDITOR.tools.htmlEncode(void 0 !== l[1] ? l[1] : l[0]).replace(/"/g, "\x26quot;"), '" /\x3e ', CKEDITOR.tools.htmlEncode(l[0])); + "undefined" != typeof c.inputStyle && (c.style = c.inputStyle); + f.select = new CKEDITOR.ui.dialog.uiElement(b, c, e, "select", null, + g, d.join("")); + e.push("\x3c/div\x3e"); + return e.join("") + }) + } + }, + file: function(b, a, d) { + if (!(3 > arguments.length)) { + void 0 === a["default"] && (a["default"] = ""); + var f = CKEDITOR.tools.extend(h.call(this, a), { + definition: a, + buttons: [] + }); + a.validate && (this.validate = a.validate); + b.on("load", function() { + CKEDITOR.document.getById(f.frameId).getParent().addClass("cke_dialog_ui_input_file") + }); + CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() { + f.frameId = CKEDITOR.tools.getNextId() + "_fileInput"; + var b = ['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', + f.frameId, '" title\x3d"', a.label, '" src\x3d"javascript:void(' + ]; + b.push(CKEDITOR.env.ie ? "(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "})()" : "0"); + b.push(')"\x3e\x3c/iframe\x3e'); + return b.join("") + }) + } + }, + fileButton: function(b, a, d) { + var f = this; + if (!(3 > arguments.length)) { + h.call(this, a); + a.validate && (this.validate = a.validate); + var c = CKEDITOR.tools.extend({}, a), + e = c.onClick; + c.className = (c.className ? c.className + " " : "") + "cke_dialog_ui_button"; + c.onClick = function(c) { + var d = + a["for"]; + c = e ? e.call(this, c) : !1; + !1 !== c && ("xhr" !== c && b.getContentElement(d[0], d[1]).submit(), this.disable()) + }; + b.on("load", function() { + b.getContentElement(a["for"][0], a["for"][1])._.buttons.push(f) + }); + CKEDITOR.ui.dialog.button.call(this, b, c, d) + } + }, + html: function() { + var b = /^\s*<[\w:]+\s+([^>]*)?>/, + a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, + d = /\/$/; + return function(f, c, e) { + if (!(3 > arguments.length)) { + var m = [], + g = c.html; + "\x3c" != g.charAt(0) && (g = "\x3cspan\x3e" + g + "\x3c/span\x3e"); + var k = c.focus; + if (k) { + var l = this.focus; + this.focus = function() { + ("function" == typeof k ? k : l).call(this); + this.fire("focus") + }; + c.isFocusable && (this.isFocusable = this.isFocusable); + this.keyboardFocusable = !0 + } + CKEDITOR.ui.dialog.uiElement.call(this, f, c, m, "span", null, null, ""); + m = m.join("").match(b); + g = g.match(a) || ["", "", ""]; + d.test(g[1]) && (g[1] = g[1].slice(0, -1), g[2] = "/" + g[2]); + e.push([g[1], " ", m[1] || "", g[2]].join("")) + } + } + }(), + fieldset: function(b, a, d, f, c) { + var e = c.label; + this._ = { + children: a + }; + CKEDITOR.ui.dialog.uiElement.call(this, b, c, f, "fieldset", null, null, function() { + var a = []; + e && a.push("\x3clegend" + (c.labelStyle ? ' style\x3d"' + c.labelStyle + '"' : "") + "\x3e" + e + "\x3c/legend\x3e"); + for (var b = 0; b < d.length; b++) a.push(d[b]); + return a.join("") + }) + } + }, !0); + CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement; + CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, { + setLabel: function(b) { + var a = CKEDITOR.document.getById(this._.labelId); + 1 > a.getChildCount() ? (new CKEDITOR.dom.text(b, CKEDITOR.document)).appendTo(a) : a.getChild(0).$.nodeValue = + b; + return this + }, + getLabel: function() { + var b = CKEDITOR.document.getById(this._.labelId); + return !b || 1 > b.getChildCount() ? "" : b.getChild(0).getText() + }, + eventProcessors: r + }, !0); + CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, { + click: function() { + return this._.disabled ? !1 : this.fire("click", { + dialog: this._.dialog + }) + }, + enable: function() { + this._.disabled = !1; + var b = this.getElement(); + b && b.removeClass("cke_disabled") + }, + disable: function() { + this._.disabled = !0; + this.getElement().addClass("cke_disabled") + }, + isVisible: function() { + return this.getElement().getFirst().isVisible() + }, + isEnabled: function() { + return !this._.disabled + }, + eventProcessors: CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { + onClick: function(b, a) { + this.on("click", function() { + a.apply(this, arguments) + }) + } + }, !0), + accessKeyUp: function() { + this.click() + }, + accessKeyDown: function() { + this.focus() + }, + keyboardFocusable: !0 + }, !0); + CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement, { + getInputElement: function() { + return CKEDITOR.document.getById(this._.inputId) + }, + focus: function() { + var b = this.selectParentTab(); + setTimeout(function() { + var a = b.getInputElement(); + a && a.$.focus() + }, 0) + }, + select: function() { + var b = this.selectParentTab(); + setTimeout(function() { + var a = b.getInputElement(); + a && (a.$.focus(), a.$.select()) + }, 0) + }, + accessKeyUp: function() { + this.select() + }, + setValue: function(b) { + if (this.bidi) { + var a = b && b.charAt(0); + (a = "‪" == a ? "ltr" : "‫" == a ? "rtl" : null) && (b = b.slice(1)); + this.setDirectionMarker(a) + } + b || (b = ""); + return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this, arguments) + }, + getValue: function() { + var b = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this); + if (this.bidi && b) { + var a = this.getDirectionMarker(); + a && (b = ("ltr" == a ? "‪" : "‫") + b) + } + return b + }, + setDirectionMarker: function(b) { + var a = this.getInputElement(); + b ? a.setAttributes({ + dir: b, + "data-cke-dir-marker": b + }) : this.getDirectionMarker() && a.removeAttributes(["dir", "data-cke-dir-marker"]) + }, + getDirectionMarker: function() { + return this.getInputElement().data("cke-dir-marker") + }, + keyboardFocusable: !0 + }, q, !0); + CKEDITOR.ui.dialog.textarea.prototype = + new CKEDITOR.ui.dialog.textInput; + CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement, { + getInputElement: function() { + return this._.select.getElement() + }, + add: function(b, a, d) { + var f = new CKEDITOR.dom.element("option", this.getDialog().getParentEditor().document), + c = this.getInputElement().$; + f.$.text = b; + f.$.value = void 0 === a || null === a ? b : a; + void 0 === d || null === d ? CKEDITOR.env.ie ? c.add(f.$) : c.add(f.$, null) : c.add(f.$, d); + return this + }, + remove: function(b) { + this.getInputElement().$.remove(b); + return this + }, + clear: function() { + for (var b = this.getInputElement().$; 0 < b.length;) b.remove(0); + return this + }, + keyboardFocusable: !0 + }, q, !0); + CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, { + getInputElement: function() { + return this._.checkbox.getElement() + }, + setValue: function(b, a) { + this.getInputElement().$.checked = b; + !a && this.fire("change", { + value: b + }) + }, + getValue: function() { + return this.getInputElement().$.checked + }, + accessKeyUp: function() { + this.setValue(!this.getValue()) + }, + eventProcessors: { + onChange: function(b, + a) { + if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return r.onChange.apply(this, arguments); + b.on("load", function() { + var a = this._.checkbox.getElement(); + a.on("propertychange", function(b) { + b = b.data.$; + "checked" == b.propertyName && this.fire("change", { + value: a.$.checked + }) + }, this) + }, this); + this.on("change", a); + return null + } + }, + keyboardFocusable: !0 + }, q, !0); + CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, { + setValue: function(b, a) { + for (var d = this._.children, f, c = 0; c < d.length && (f = d[c]); c++) f.getElement().$.checked = + f.getValue() == b; + !a && this.fire("change", { + value: b + }) + }, + getValue: function() { + for (var b = this._.children, a = 0; a < b.length; a++) + if (b[a].getElement().$.checked) return b[a].getValue(); + return null + }, + accessKeyUp: function() { + var b = this._.children, + a; + for (a = 0; a < b.length; a++) + if (b[a].getElement().$.checked) { + b[a].getElement().focus(); + return + } b[0].getElement().focus() + }, + eventProcessors: { + onChange: function(b, a) { + if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return r.onChange.apply(this, arguments); + b.on("load", function() { + for (var a = + this._.children, b = this, c = 0; c < a.length; c++) a[c].getElement().on("propertychange", function(a) { + a = a.data.$; + "checked" == a.propertyName && this.$.checked && b.fire("change", { + value: this.getAttribute("value") + }) + }) + }, this); + this.on("change", a); + return null + } + } + }, q, !0); + CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement, q, { + getInputElement: function() { + var b = CKEDITOR.document.getById(this._.frameId).getFrameDocument(); + return 0 < b.$.forms.length ? new CKEDITOR.dom.element(b.$.forms[0].elements[0]) : + this.getElement() + }, + submit: function() { + this.getInputElement().getParent().$.submit(); + return this + }, + getAction: function() { + return this.getInputElement().getParent().$.action + }, + registerEvents: function(b) { + var a = /^on([A-Z]\w+)/, + d, f = function(a, b, c, d) { + a.on("formLoaded", function() { + a.getInputElement().on(c, d, a) + }) + }, + c; + for (c in b) + if (d = c.match(a)) this.eventProcessors[c] ? this.eventProcessors[c].call(this, this._.dialog, b[c]) : f(this, this._.dialog, d[1].toLowerCase(), b[c]); + return this + }, + reset: function() { + function b() { + d.$.open(); + var b = ""; + f.size && (b = f.size - (CKEDITOR.env.ie ? 7 : 0)); + var h = a.frameId + "_input"; + d.$.write(['\x3chtml dir\x3d"' + g + '" lang\x3d"' + k + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e', '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + k + '" action\x3d"', CKEDITOR.tools.htmlEncode(f.action), '"\x3e\x3clabel id\x3d"', a.labelId, '" for\x3d"', h, '" style\x3d"display:none"\x3e', CKEDITOR.tools.htmlEncode(f.label), + '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"', h, '" aria-labelledby\x3d"', a.labelId, '" type\x3d"file" name\x3d"', CKEDITOR.tools.htmlEncode(f.id || "cke_upload"), '" size\x3d"', CKEDITOR.tools.htmlEncode(0 < b ? b : ""), '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e', CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "", "window.parent.CKEDITOR.tools.callFunction(" + e + ");", "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + m + ")}", "\x3c/script\x3e" + ].join("")); + d.$.close(); + for (b = 0; b < c.length; b++) c[b].enable() + } + var a = this._, + d = CKEDITOR.document.getById(a.frameId).getFrameDocument(), + f = a.definition, + c = a.buttons, + e = this.formLoadedNumber, + m = this.formUnloadNumber, + g = a.dialog._.editor.lang.dir, + k = a.dialog._.editor.langCode; + e || (e = this.formLoadedNumber = CKEDITOR.tools.addFunction(function() { + this.fire("formLoaded") + }, this), m = this.formUnloadNumber = CKEDITOR.tools.addFunction(function() { + this.getInputElement().clearCustomData() + }, this), this.getDialog()._.editor.on("destroy", function() { + CKEDITOR.tools.removeFunction(e); + CKEDITOR.tools.removeFunction(m) + })); + CKEDITOR.env.gecko ? setTimeout(b, 500) : b() + }, + getValue: function() { + return this.getInputElement().$.value || "" + }, + setInitValue: function() { + this._.initValue = "" + }, + eventProcessors: { + onChange: function(b, a) { + this._.domOnChangeRegistered || (this.on("formLoaded", function() { + this.getInputElement().on("change", function() { + this.fire("change", { + value: this.getValue() + }) + }, this) + }, this), this._.domOnChangeRegistered = !0); + this.on("change", a) + } + }, + keyboardFocusable: !0 + }, !0); + CKEDITOR.ui.dialog.fileButton.prototype = + new CKEDITOR.ui.dialog.button; + CKEDITOR.ui.dialog.fieldset.prototype = CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype); + CKEDITOR.dialog.addUIElement("text", v); + CKEDITOR.dialog.addUIElement("password", v); + CKEDITOR.dialog.addUIElement("textarea", n); + CKEDITOR.dialog.addUIElement("checkbox", n); + CKEDITOR.dialog.addUIElement("radio", n); + CKEDITOR.dialog.addUIElement("button", n); + CKEDITOR.dialog.addUIElement("select", n); + CKEDITOR.dialog.addUIElement("file", n); + CKEDITOR.dialog.addUIElement("fileButton", n); + CKEDITOR.dialog.addUIElement("html", + n); + CKEDITOR.dialog.addUIElement("fieldset", { + build: function(b, a, d) { + for (var f = a.children, c, e = [], h = [], g = 0; g < f.length && (c = f[g]); g++) { + var k = []; + e.push(k); + h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b, c, k)) + } + return new CKEDITOR.ui.dialog[a.type](b, h, e, d, a) + } + }) + } + }); + CKEDITOR.DIALOG_RESIZE_NONE = 0; + CKEDITOR.DIALOG_RESIZE_WIDTH = 1; + CKEDITOR.DIALOG_RESIZE_HEIGHT = 2; + CKEDITOR.DIALOG_RESIZE_BOTH = 3; + CKEDITOR.DIALOG_STATE_IDLE = 1; + CKEDITOR.DIALOG_STATE_BUSY = 2; + (function() { + function x() { + for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId) + a, c = b - 1; c > b - a; c--) + if (this._.tabs[this._.tabIdList[c % a]][0].$.offsetHeight) return this._.tabIdList[c % a]; + return null + } + + function A() { + for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId), c = b + 1; c < b + a; c++) + if (this._.tabs[this._.tabIdList[c % a]][0].$.offsetHeight) return this._.tabIdList[c % a]; + return null + } + + function K(a, b) { + for (var c = a.$.getElementsByTagName("input"), + e = 0, d = c.length; e < d; e++) { + var f = new CKEDITOR.dom.element(c[e]); + "text" == f.getAttribute("type").toLowerCase() && (b ? (f.setAttribute("value", f.getCustomData("fake_value") || ""), f.removeCustomData("fake_value")) : (f.setCustomData("fake_value", f.getAttribute("value")), f.setAttribute("value", ""))) + } + } + + function T(a, b) { + var c = this.getInputElement(); + c && (a ? c.removeAttribute("aria-invalid") : c.setAttribute("aria-invalid", !0)); + a || (this.select ? this.select() : this.focus()); + b && alert(b); + this.fire("validated", { + valid: a, + msg: b + }) + } + + function U() { + var a = this.getInputElement(); + a && a.removeAttribute("aria-invalid") + } + + function V(a) { + var b = CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog", W).output({ + id: CKEDITOR.tools.getNextNumber(), + editorId: a.id, + langDir: a.lang.dir, + langCode: a.langCode, + editorDialogClass: "cke_editor_" + a.name.replace(/\./g, "\\.") + "_dialog", + closeTitle: a.lang.common.close, + hidpi: CKEDITOR.env.hidpi ? "cke_hidpi" : "" + })), + c = b.getChild([0, 0, 0, 0, 0]), + e = c.getChild(0), + d = c.getChild(1); + a.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c); + !CKEDITOR.env.ie || CKEDITOR.env.quirks || CKEDITOR.env.edge || (a = "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())", CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(c.getParent())); + e.unselectable(); + d.unselectable(); + return { + element: b, + parts: { + dialog: b.getChild(0), + title: e, + close: d, + tabs: c.getChild(2), + contents: c.getChild([3, 0, 0, 0]), + footer: c.getChild([3, 0, 1, 0]) + } + } + } + + function L(a, b, c) { + this.element = b; + this.focusIndex = c; + this.tabIndex = 0; + this.isFocusable = function() { + return !b.getAttribute("disabled") && b.isVisible() + }; + this.focus = function() { + a._.currentFocusIndex = this.focusIndex; + this.element.focus() + }; + b.on("keydown", function(a) { + a.data.getKeystroke() in { + 32: 1, + 13: 1 + } && this.fire("click") + }); + b.on("focus", function() { + this.fire("mouseover") + }); + b.on("blur", function() { + this.fire("mouseout") + }) + } + + function X(a) { + function b() { + a.layout() + } + var c = CKEDITOR.document.getWindow(); + c.on("resize", b); + a.on("hide", function() { + c.removeListener("resize", b) + }) + } + + function M(a, b) { + this._ = { + dialog: a + }; + CKEDITOR.tools.extend(this, b) + } + + function Y(a) { + function b(b) { + var c = a.getSize(), + k = CKEDITOR.document.getWindow().getViewPaneSize(), + q = b.data.$.screenX, + n = b.data.$.screenY, + r = q - e.x, + l = n - e.y; + e = { + x: q, + y: n + }; + d.x += r; + d.y += l; + a.move(d.x + h[3] < g ? -h[3] : d.x - h[1] > k.width - c.width - g ? k.width - c.width + ("rtl" == f.lang.dir ? 0 : h[1]) : d.x, d.y + h[0] < g ? -h[0] : d.y - h[2] > k.height - c.height - g ? k.height - c.height + h[2] : d.y, 1); + b.data.preventDefault() + } + + function c() { + CKEDITOR.document.removeListener("mousemove", b); + CKEDITOR.document.removeListener("mouseup", c); + if (CKEDITOR.env.ie6Compat) { + var a = u.getChild(0).getFrameDocument(); + a.removeListener("mousemove", b); + a.removeListener("mouseup", c) + } + } + var e = null, + d = null, + f = a.getParentEditor(), + g = f.config.dialog_magnetDistance, + h = CKEDITOR.skin.margins || [0, 0, 0, 0]; + "undefined" == typeof g && (g = 20); + a.parts.title.on("mousedown", function(g) { + e = { + x: g.data.$.screenX, + y: g.data.$.screenY + }; + CKEDITOR.document.on("mousemove", b); + CKEDITOR.document.on("mouseup", + c); + d = a.getPosition(); + if (CKEDITOR.env.ie6Compat) { + var f = u.getChild(0).getFrameDocument(); + f.on("mousemove", b); + f.on("mouseup", c) + } + g.data.preventDefault() + }, a) + } + + function Z(a) { + function b(b) { + var c = "rtl" == f.lang.dir, + n = k.width, + q = k.height, + G = n + (b.data.$.screenX - m.x) * (c ? -1 : 1) * (a._.moved ? 1 : 2), + H = q + (b.data.$.screenY - m.y) * (a._.moved ? 1 : 2), + B = a._.element.getFirst(), + B = c && B.getComputedStyle("right"), + C = a.getPosition(); + C.y + H > p.height && (H = p.height - C.y); + (c ? B : C.x) + G > p.width && (G = p.width - (c ? B : C.x)); + if (d == CKEDITOR.DIALOG_RESIZE_WIDTH || + d == CKEDITOR.DIALOG_RESIZE_BOTH) n = Math.max(e.minWidth || 0, G - g); + if (d == CKEDITOR.DIALOG_RESIZE_HEIGHT || d == CKEDITOR.DIALOG_RESIZE_BOTH) q = Math.max(e.minHeight || 0, H - h); + a.resize(n, q); + a._.moved || a.layout(); + b.data.preventDefault() + } + + function c() { + CKEDITOR.document.removeListener("mouseup", c); + CKEDITOR.document.removeListener("mousemove", b); + q && (q.remove(), q = null); + if (CKEDITOR.env.ie6Compat) { + var a = u.getChild(0).getFrameDocument(); + a.removeListener("mouseup", c); + a.removeListener("mousemove", b) + } + } + var e = a.definition, + d = e.resizable; + if (d != CKEDITOR.DIALOG_RESIZE_NONE) { + var f = a.getParentEditor(), + g, h, p, m, k, q, n = CKEDITOR.tools.addFunction(function(d) { + k = a.getSize(); + var e = a.parts.contents; + e.$.getElementsByTagName("iframe").length && (q = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'), e.append(q)); + h = k.height - a.parts.contents.getSize("height", !(CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks)); + g = k.width - a.parts.contents.getSize("width", + 1); + m = { + x: d.screenX, + y: d.screenY + }; + p = CKEDITOR.document.getWindow().getViewPaneSize(); + CKEDITOR.document.on("mousemove", b); + CKEDITOR.document.on("mouseup", c); + CKEDITOR.env.ie6Compat && (e = u.getChild(0).getFrameDocument(), e.on("mousemove", b), e.on("mouseup", c)); + d.preventDefault && d.preventDefault() + }); + a.on("load", function() { + var b = ""; + d == CKEDITOR.DIALOG_RESIZE_WIDTH ? b = " cke_resizer_horizontal" : d == CKEDITOR.DIALOG_RESIZE_HEIGHT && (b = " cke_resizer_vertical"); + b = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer' + + b + " cke_resizer_" + f.lang.dir + '" title\x3d"' + CKEDITOR.tools.htmlEncode(f.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + n + ', event )"\x3e' + ("ltr" == f.lang.dir ? "◢" : "◣") + "\x3c/div\x3e"); + a.parts.footer.append(b, 1) + }); + f.on("destroy", function() { + CKEDITOR.tools.removeFunction(n) + }) + } + } + + function I(a) { + a.data.preventDefault(1) + } + + function N(a) { + var b = CKEDITOR.document.getWindow(), + c = a.config, + e = CKEDITOR.skinName || a.config.skin, + d = c.dialog_backgroundCoverColor || ("moono-lisa" == e ? "black" : "white"), + e = c.dialog_backgroundCoverOpacity, + f = c.baseFloatZIndex, + c = CKEDITOR.tools.genKey(d, e, f), + g = z[c]; + g ? g.show() : (f = ['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ', CKEDITOR.env.ie6Compat ? "absolute" : "fixed", "; z-index: ", f, "; top: 0px; left: 0px; ", CKEDITOR.env.ie6Compat ? "" : "background-color: " + d, '" class\x3d"cke_dialog_background_cover"\x3e'], CKEDITOR.env.ie6Compat && (d = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + d + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e", f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'), + f.push("void((function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.write( '" + d + "' );document.close();") + "})())"), f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')), f.push("\x3c/div\x3e"), g = CKEDITOR.dom.element.createFromHtml(f.join("")), g.setOpacity(void 0 !== e ? e : .5), g.on("keydown", I), g.on("keypress", I), g.on("keyup", I), g.appendTo(CKEDITOR.document.getBody()), + z[c] = g); + a.focusManager.add(g); + u = g; + a = function() { + var a = b.getViewPaneSize(); + g.setStyles({ + width: a.width + "px", + height: a.height + "px" + }) + }; + var h = function() { + var a = b.getScrollPosition(), + c = CKEDITOR.dialog._.currentTop; + g.setStyles({ + left: a.x + "px", + top: a.y + "px" + }); + if (c) { + do a = c.getPosition(), c.move(a.x, a.y); while (c = c._.parentDialog) + } + }; + J = a; + b.on("resize", a); + a(); + CKEDITOR.env.mac && CKEDITOR.env.webkit || g.focus(); + if (CKEDITOR.env.ie6Compat) { + var p = function() { + h(); + arguments.callee.prevScrollHandler.apply(this, arguments) + }; + b.$.setTimeout(function() { + p.prevScrollHandler = + window.onscroll || function() {}; + window.onscroll = p + }, 0); + h() + } + } + + function O(a) { + u && (a.focusManager.remove(u), a = CKEDITOR.document.getWindow(), u.hide(), a.removeListener("resize", J), CKEDITOR.env.ie6Compat && a.$.setTimeout(function() { + window.onscroll = window.onscroll && window.onscroll.prevScrollHandler || null + }, 0), J = null) + } + var v = CKEDITOR.tools.cssLength, + W = '\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + + CKEDITOR.env.cssClass + ' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; + CKEDITOR.dialog = function(a, b) { + function c() { + var a = l._.focusList; + a.sort(function(a, b) { + return a.tabIndex != b.tabIndex ? b.tabIndex - a.tabIndex : a.focusIndex - b.focusIndex + }); + for (var b = a.length, c = 0; c < b; c++) a[c].focusIndex = c + } + + function e(a) { + var b = l._.focusList; + a = a || 0; + if (!(1 > b.length)) { + var c = l._.currentFocusIndex; + l._.tabBarMode && 0 > a && (c = 0); + try { + b[c].getInputElement().$.blur() + } catch (d) {} + var e = c, + g = 1 < l._.pageCount; + do { + e += a; + if (g && !l._.tabBarMode && (e == b.length || -1 == e)) { + l._.tabBarMode = !0; + l._.tabs[l._.currentTabId][0].focus(); + l._.currentFocusIndex = -1; + return + } + e = (e + b.length) % b.length; + if (e == c) break + } while (a && !b[e].isFocusable()); + b[e].focus(); + "text" == b[e].type && b[e].select() + } + } + + function d(b) { + if (l == CKEDITOR.dialog._.currentTop) { + var c = b.data.getKeystroke(), + d = "rtl" == a.lang.dir, + g = [37, 38, 39, 40]; + q = n = 0; + if (9 == c || c == CKEDITOR.SHIFT + 9) e(c == CKEDITOR.SHIFT + 9 ? -1 : 1), q = 1; + else if (c == CKEDITOR.ALT + 121 && !l._.tabBarMode && 1 < l.getPageCount()) l._.tabBarMode = !0, l._.tabs[l._.currentTabId][0].focus(), l._.currentFocusIndex = -1, q = 1; + else if (-1 != CKEDITOR.tools.indexOf(g, + c) && l._.tabBarMode) c = -1 != CKEDITOR.tools.indexOf([d ? 39 : 37, 38], c) ? x.call(l) : A.call(l), l.selectPage(c), l._.tabs[c][0].focus(), q = 1; + else if (13 != c && 32 != c || !l._.tabBarMode) + if (13 == c) c = b.data.getTarget(), c.is("a", "button", "select", "textarea") || c.is("input") && "button" == c.$.type || ((c = this.getButton("ok")) && CKEDITOR.tools.setTimeout(c.click, 0, c), q = 1), n = 1; + else if (27 == c)(c = this.getButton("cancel")) ? CKEDITOR.tools.setTimeout(c.click, 0, c) : !1 !== this.fire("cancel", { + hide: !0 + }).hide && this.hide(), n = 1; + else return; + else this.selectPage(this._.currentTabId), + this._.tabBarMode = !1, this._.currentFocusIndex = -1, e(1), q = 1; + f(b) + } + } + + function f(a) { + q ? a.data.preventDefault(1) : n && a.data.stopPropagation() + } + var g = CKEDITOR.dialog._.dialogDefinitions[b], + h = CKEDITOR.tools.clone(aa), + p = a.config.dialog_buttonsOrder || "OS", + m = a.lang.dir, + k = {}, + q, n; + ("OS" == p && CKEDITOR.env.mac || "rtl" == p && "ltr" == m || "ltr" == p && "rtl" == m) && h.buttons.reverse(); + g = CKEDITOR.tools.extend(g(a), h); + g = CKEDITOR.tools.clone(g); + g = new P(this, g); + h = V(a); + this._ = { + editor: a, + element: h.element, + name: b, + contentSize: { + width: 0, + height: 0 + }, + size: { + width: 0, + height: 0 + }, + contents: {}, + buttons: {}, + accessKeyMap: {}, + tabs: {}, + tabIdList: [], + currentTabId: null, + currentTabIndex: null, + pageCount: 0, + lastTab: null, + tabBarMode: !1, + focusList: [], + currentFocusIndex: 0, + hasFocus: !1 + }; + this.parts = h.parts; + CKEDITOR.tools.setTimeout(function() { + a.fire("ariaWidget", this.parts.contents) + }, 0, this); + h = { + position: CKEDITOR.env.ie6Compat ? "absolute" : "fixed", + top: 0, + visibility: "hidden" + }; + h["rtl" == m ? "right" : "left"] = 0; + this.parts.dialog.setStyles(h); + CKEDITOR.event.call(this); + this.definition = g = CKEDITOR.fire("dialogDefinition", { + name: b, + definition: g + }, a).definition; + if (!("removeDialogTabs" in a._) && a.config.removeDialogTabs) { + h = a.config.removeDialogTabs.split(";"); + for (m = 0; m < h.length; m++) + if (p = h[m].split(":"), 2 == p.length) { + var r = p[0]; + k[r] || (k[r] = []); + k[r].push(p[1]) + } a._.removeDialogTabs = k + } + if (a._.removeDialogTabs && (k = a._.removeDialogTabs[b])) + for (m = 0; m < k.length; m++) g.removeContents(k[m]); + if (g.onLoad) this.on("load", g.onLoad); + if (g.onShow) this.on("show", g.onShow); + if (g.onHide) this.on("hide", g.onHide); + if (g.onOk) this.on("ok", function(b) { + a.fire("saveSnapshot"); + setTimeout(function() { + a.fire("saveSnapshot") + }, 0); + !1 === g.onOk.call(this, b) && (b.data.hide = !1) + }); + this.state = CKEDITOR.DIALOG_STATE_IDLE; + if (g.onCancel) this.on("cancel", function(a) { + !1 === g.onCancel.call(this, a) && (a.data.hide = !1) + }); + var l = this, + t = function(a) { + var b = l._.contents, + c = !1, + d; + for (d in b) + for (var e in b[d]) + if (c = a.call(this, b[d][e])) return + }; + this.on("ok", function(a) { + t(function(b) { + if (b.validate) { + var c = b.validate(this), + d = "string" == typeof c || !1 === c; + d && (a.data.hide = !1, a.stop()); + T.call(b, !d, "string" == typeof c ? + c : void 0); + return d + } + }) + }, this, null, 0); + this.on("cancel", function(b) { + t(function(c) { + if (c.isChanged()) return a.config.dialog_noConfirmCancel || confirm(a.lang.common.confirmCancel) || (b.data.hide = !1), !0 + }) + }, this, null, 0); + this.parts.close.on("click", function(a) { + !1 !== this.fire("cancel", { + hide: !0 + }).hide && this.hide(); + a.data.preventDefault() + }, this); + this.changeFocus = e; + var y = this._.element; + a.focusManager.add(y, 1); + this.on("show", function() { + y.on("keydown", d, this); + if (CKEDITOR.env.gecko) y.on("keypress", f, this) + }); + this.on("hide", + function() { + y.removeListener("keydown", d); + CKEDITOR.env.gecko && y.removeListener("keypress", f); + t(function(a) { + U.apply(a) + }) + }); + this.on("iframeAdded", function(a) { + (new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown", d, this, null, 0) + }); + this.on("show", function() { + c(); + var b = 1 < l._.pageCount; + a.config.dialog_startupFocusTab && b ? (l._.tabBarMode = !0, l._.tabs[l._.currentTabId][0].focus(), l._.currentFocusIndex = -1) : this._.hasFocus || (this._.currentFocusIndex = b ? -1 : this._.focusList.length - 1, g.onFocus ? + (b = g.onFocus.call(this)) && b.focus() : e(1)) + }, this, null, 4294967295); + if (CKEDITOR.env.ie6Compat) this.on("load", function() { + var a = this.getElement(), + b = a.getFirst(); + b.remove(); + b.appendTo(a) + }, this); + Y(this); + Z(this); + (new CKEDITOR.dom.text(g.title, CKEDITOR.document)).appendTo(this.parts.title); + for (m = 0; m < g.contents.length; m++)(k = g.contents[m]) && this.addPage(k); + this.parts.tabs.on("click", function(a) { + var b = a.data.getTarget(); + b.hasClass("cke_dialog_tab") && (b = b.$.id, this.selectPage(b.substring(4, b.lastIndexOf("_"))), + this._.tabBarMode && (this._.tabBarMode = !1, this._.currentFocusIndex = -1, e(1)), a.data.preventDefault()) + }, this); + m = []; + k = CKEDITOR.dialog._.uiElementBuilders.hbox.build(this, { + type: "hbox", + className: "cke_dialog_footer_buttons", + widths: [], + children: g.buttons + }, m).getChild(); + this.parts.footer.setHtml(m.join("")); + for (m = 0; m < k.length; m++) this._.buttons[k[m].id] = k[m] + }; + CKEDITOR.dialog.prototype = { + destroy: function() { + this.hide(); + this._.element.remove() + }, + resize: function() { + return function(a, b) { + this._.contentSize && this._.contentSize.width == + a && this._.contentSize.height == b || (CKEDITOR.dialog.fire("resize", { + dialog: this, + width: a, + height: b + }, this._.editor), this.fire("resize", { + width: a, + height: b + }, this._.editor), this.parts.contents.setStyles({ + width: a + "px", + height: b + "px" + }), "rtl" == this._.editor.lang.dir && this._.position && (this._.position.x = CKEDITOR.document.getWindow().getViewPaneSize().width - this._.contentSize.width - parseInt(this._.element.getFirst().getStyle("right"), 10)), this._.contentSize = { + width: a, + height: b + }) + } + }(), + getSize: function() { + var a = this._.element.getFirst(); + return { + width: a.$.offsetWidth || 0, + height: a.$.offsetHeight || 0 + } + }, + move: function(a, b, c) { + var e = this._.element.getFirst(), + d = "rtl" == this._.editor.lang.dir, + f = "fixed" == e.getComputedStyle("position"); + CKEDITOR.env.ie && e.setStyle("zoom", "100%"); + f && this._.position && this._.position.x == a && this._.position.y == b || (this._.position = { + x: a, + y: b + }, f || (f = CKEDITOR.document.getWindow().getScrollPosition(), a += f.x, b += f.y), d && (f = this.getSize(), a = CKEDITOR.document.getWindow().getViewPaneSize().width - f.width - a), b = { + top: (0 < b ? b : 0) + "px" + }, + b[d ? "right" : "left"] = (0 < a ? a : 0) + "px", e.setStyles(b), c && (this._.moved = 1)) + }, + getPosition: function() { + return CKEDITOR.tools.extend({}, this._.position) + }, + show: function() { + var a = this._.element, + b = this.definition; + a.getParent() && a.getParent().equals(CKEDITOR.document.getBody()) ? a.setStyle("display", "block") : a.appendTo(CKEDITOR.document.getBody()); + this.resize(this._.contentSize && this._.contentSize.width || b.width || b.minWidth, this._.contentSize && this._.contentSize.height || b.height || b.minHeight); + this.reset(); + null === + this._.currentTabId && this.selectPage(this.definition.contents[0].id); + null === CKEDITOR.dialog._.currentZIndex && (CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex); + this._.element.getFirst().setStyle("z-index", CKEDITOR.dialog._.currentZIndex += 10); + null === CKEDITOR.dialog._.currentTop ? (CKEDITOR.dialog._.currentTop = this, this._.parentDialog = null, N(this._.editor)) : (this._.parentDialog = CKEDITOR.dialog._.currentTop, this._.parentDialog.getElement().getFirst().$.style.zIndex -= Math.floor(this._.editor.config.baseFloatZIndex / + 2), CKEDITOR.dialog._.currentTop = this); + a.on("keydown", Q); + a.on("keyup", R); + this._.hasFocus = !1; + for (var c in b.contents) + if (b.contents[c]) { + var a = b.contents[c], + e = this._.tabs[a.id], + d = a.requiredContent, + f = 0; + if (e) { + for (var g in this._.contents[a.id]) { + var h = this._.contents[a.id][g]; + "hbox" != h.type && "vbox" != h.type && h.getInputElement() && (h.requiredContent && !this._.editor.activeFilter.check(h.requiredContent) ? h.disable() : (h.enable(), f++)) + }!f || d && !this._.editor.activeFilter.check(d) ? e[0].addClass("cke_dialog_tab_disabled") : + e[0].removeClass("cke_dialog_tab_disabled") + } + } CKEDITOR.tools.setTimeout(function() { + this.layout(); + X(this); + this.parts.dialog.setStyle("visibility", ""); + this.fireOnce("load", {}); + CKEDITOR.ui.fire("ready", this); + this.fire("show", {}); + this._.editor.fire("dialogShow", this); + this._.parentDialog || this._.editor.focusManager.lock(); + this.foreach(function(a) { + a.setInitValue && a.setInitValue() + }) + }, 100, this) + }, + layout: function() { + var a = this.parts.dialog, + b = this.getSize(), + c = CKEDITOR.document.getWindow().getViewPaneSize(), + e = + (c.width - b.width) / 2, + d = (c.height - b.height) / 2; + CKEDITOR.env.ie6Compat || (b.height + (0 < d ? d : 0) > c.height || b.width + (0 < e ? e : 0) > c.width ? a.setStyle("position", "absolute") : a.setStyle("position", "fixed")); + this.move(this._.moved ? this._.position.x : e, this._.moved ? this._.position.y : d) + }, + foreach: function(a) { + for (var b in this._.contents) + for (var c in this._.contents[b]) a.call(this, this._.contents[b][c]); + return this + }, + reset: function() { + var a = function(a) { + a.reset && a.reset(1) + }; + return function() { + this.foreach(a); + return this + } + }(), + setupContent: function() { + var a = arguments; + this.foreach(function(b) { + b.setup && b.setup.apply(b, a) + }) + }, + commitContent: function() { + var a = arguments; + this.foreach(function(b) { + CKEDITOR.env.ie && this._.currentFocusIndex == b.focusIndex && b.getInputElement().$.blur(); + b.commit && b.commit.apply(b, a) + }) + }, + hide: function() { + if (this.parts.dialog.isVisible()) { + this.fire("hide", {}); + this._.editor.fire("dialogHide", this); + this.selectPage(this._.tabIdList[0]); + var a = this._.element; + a.setStyle("display", "none"); + this.parts.dialog.setStyle("visibility", + "hidden"); + for (ba(this); CKEDITOR.dialog._.currentTop != this;) CKEDITOR.dialog._.currentTop.hide(); + if (this._.parentDialog) { + var b = this._.parentDialog.getElement().getFirst(); + b.setStyle("z-index", parseInt(b.$.style.zIndex, 10) + Math.floor(this._.editor.config.baseFloatZIndex / 2)) + } else O(this._.editor); + if (CKEDITOR.dialog._.currentTop = this._.parentDialog) CKEDITOR.dialog._.currentZIndex -= 10; + else { + CKEDITOR.dialog._.currentZIndex = null; + a.removeListener("keydown", Q); + a.removeListener("keyup", R); + var c = this._.editor; + c.focus(); + setTimeout(function() { + c.focusManager.unlock(); + CKEDITOR.env.iOS && c.window.focus() + }, 0) + } + delete this._.parentDialog; + this.foreach(function(a) { + a.resetInitValue && a.resetInitValue() + }); + this.setState(CKEDITOR.DIALOG_STATE_IDLE) + } + }, + addPage: function(a) { + if (!a.requiredContent || this._.editor.filter.check(a.requiredContent)) { + for (var b = [], c = a.label ? ' title\x3d"' + CKEDITOR.tools.htmlEncode(a.label) + '"' : "", e = CKEDITOR.dialog._.uiElementBuilders.vbox.build(this, { + type: "vbox", + className: "cke_dialog_page_contents", + children: a.elements, + expand: !!a.expand, + padding: a.padding, + style: a.style || "width: 100%;" + }, b), d = this._.contents[a.id] = {}, f = e.getChild(), g = 0; e = f.shift();) e.notAllowed || "hbox" == e.type || "vbox" == e.type || g++, d[e.id] = e, "function" == typeof e.getChild && f.push.apply(f, e.getChild()); + g || (a.hidden = !0); + b = CKEDITOR.dom.element.createFromHtml(b.join("")); + b.setAttribute("role", "tabpanel"); + e = CKEDITOR.env; + d = "cke_" + a.id + "_" + CKEDITOR.tools.getNextNumber(); + c = CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"', + 0 < this._.pageCount ? " cke_last" : "cke_first", c, a.hidden ? ' style\x3d"display:none"' : "", ' id\x3d"', d, '"', e.gecko && !e.hc ? "" : ' href\x3d"javascript:void(0)"', ' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e', a.label, "\x3c/a\x3e" + ].join("")); + b.setAttribute("aria-labelledby", d); + this._.tabs[a.id] = [c, b]; + this._.tabIdList.push(a.id); + !a.hidden && this._.pageCount++; + this._.lastTab = c; + this.updateStyle(); + b.setAttribute("name", a.id); + b.appendTo(this.parts.contents); + c.unselectable(); + this.parts.tabs.append(c); + a.accessKey && + (S(this, this, "CTRL+" + a.accessKey, ca, da), this._.accessKeyMap["CTRL+" + a.accessKey] = a.id) + } + }, + selectPage: function(a) { + if (this._.currentTabId != a && !this._.tabs[a][0].hasClass("cke_dialog_tab_disabled") && !1 !== this.fire("selectPage", { + page: a, + currentPage: this._.currentTabId + })) { + for (var b in this._.tabs) { + var c = this._.tabs[b][0], + e = this._.tabs[b][1]; + b != a && (c.removeClass("cke_dialog_tab_selected"), e.hide()); + e.setAttribute("aria-hidden", b != a) + } + var d = this._.tabs[a]; + d[0].addClass("cke_dialog_tab_selected"); + CKEDITOR.env.ie6Compat || + CKEDITOR.env.ie7Compat ? (K(d[1]), d[1].show(), setTimeout(function() { + K(d[1], 1) + }, 0)) : d[1].show(); + this._.currentTabId = a; + this._.currentTabIndex = CKEDITOR.tools.indexOf(this._.tabIdList, a) + } + }, + updateStyle: function() { + this.parts.dialog[(1 === this._.pageCount ? "add" : "remove") + "Class"]("cke_single_page") + }, + hidePage: function(a) { + var b = this._.tabs[a] && this._.tabs[a][0]; + b && 1 != this._.pageCount && b.isVisible() && (a == this._.currentTabId && this.selectPage(x.call(this)), b.hide(), this._.pageCount--, this.updateStyle()) + }, + showPage: function(a) { + if (a = + this._.tabs[a] && this._.tabs[a][0]) a.show(), this._.pageCount++, this.updateStyle() + }, + getElement: function() { + return this._.element + }, + getName: function() { + return this._.name + }, + getContentElement: function(a, b) { + var c = this._.contents[a]; + return c && c[b] + }, + getValueOf: function(a, b) { + return this.getContentElement(a, b).getValue() + }, + setValueOf: function(a, b, c) { + return this.getContentElement(a, b).setValue(c) + }, + getButton: function(a) { + return this._.buttons[a] + }, + click: function(a) { + return this._.buttons[a].click() + }, + disableButton: function(a) { + return this._.buttons[a].disable() + }, + enableButton: function(a) { + return this._.buttons[a].enable() + }, + getPageCount: function() { + return this._.pageCount + }, + getParentEditor: function() { + return this._.editor + }, + getSelectedElement: function() { + return this.getParentEditor().getSelection().getSelectedElement() + }, + addFocusable: function(a, b) { + if ("undefined" == typeof b) b = this._.focusList.length, this._.focusList.push(new L(this, a, b)); + else { + this._.focusList.splice(b, 0, new L(this, a, b)); + for (var c = b + 1; c < this._.focusList.length; c++) this._.focusList[c].focusIndex++ + } + }, + setState: function(a) { + if (this.state != a) { + this.state = a; + if (a == CKEDITOR.DIALOG_STATE_BUSY) { + if (!this.parts.spinner) { + var b = this.getParentEditor().lang.dir, + c = { + attributes: { + "class": "cke_dialog_spinner" + }, + styles: { + "float": "rtl" == b ? "right" : "left" + } + }; + c.styles["margin-" + ("rtl" == b ? "left" : "right")] = "8px"; + this.parts.spinner = CKEDITOR.document.createElement("div", c); + this.parts.spinner.setHtml("\x26#8987;"); + this.parts.spinner.appendTo(this.parts.title, 1) + } + this.parts.spinner.show(); + this.getButton("ok").disable() + } else a == + CKEDITOR.DIALOG_STATE_IDLE && (this.parts.spinner && this.parts.spinner.hide(), this.getButton("ok").enable()); + this.fire("state", a) + } + } + }; + CKEDITOR.tools.extend(CKEDITOR.dialog, { + add: function(a, b) { + this._.dialogDefinitions[a] && "function" != typeof b || (this._.dialogDefinitions[a] = b) + }, + exists: function(a) { + return !!this._.dialogDefinitions[a] + }, + getCurrent: function() { + return CKEDITOR.dialog._.currentTop + }, + isTabEnabled: function(a, b, c) { + a = a.config.removeDialogTabs; + return !(a && a.match(new RegExp("(?:^|;)" + b + ":" + c + "(?:$|;)", + "i"))) + }, + okButton: function() { + var a = function(a, c) { + c = c || {}; + return CKEDITOR.tools.extend({ + id: "ok", + type: "button", + label: a.lang.common.ok, + "class": "cke_dialog_ui_button_ok", + onClick: function(a) { + a = a.data.dialog; + !1 !== a.fire("ok", { + hide: !0 + }).hide && a.hide() + } + }, c, !0) + }; + a.type = "button"; + a.override = function(b) { + return CKEDITOR.tools.extend(function(c) { + return a(c, b) + }, { + type: "button" + }, !0) + }; + return a + }(), + cancelButton: function() { + var a = function(a, c) { + c = c || {}; + return CKEDITOR.tools.extend({ + id: "cancel", + type: "button", + label: a.lang.common.cancel, + "class": "cke_dialog_ui_button_cancel", + onClick: function(a) { + a = a.data.dialog; + !1 !== a.fire("cancel", { + hide: !0 + }).hide && a.hide() + } + }, c, !0) + }; + a.type = "button"; + a.override = function(b) { + return CKEDITOR.tools.extend(function(c) { + return a(c, b) + }, { + type: "button" + }, !0) + }; + return a + }(), + addUIElement: function(a, b) { + this._.uiElementBuilders[a] = b + } + }); + CKEDITOR.dialog._ = { + uiElementBuilders: {}, + dialogDefinitions: {}, + currentTop: null, + currentZIndex: null + }; + CKEDITOR.event.implementOn(CKEDITOR.dialog); + CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype); + var aa = { + resizable: CKEDITOR.DIALOG_RESIZE_BOTH, + minWidth: 600, + minHeight: 400, + buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton] + }, + D = function(a, b, c) { + for (var e = 0, d; d = a[e]; e++) + if (d.id == b || c && d[c] && (d = D(d[c], b, c))) return d; + return null + }, + E = function(a, b, c, e, d) { + if (c) { + for (var f = 0, g; g = a[f]; f++) { + if (g.id == c) return a.splice(f, 0, b), b; + if (e && g[e] && (g = E(g[e], b, c, e, !0))) return g + } + if (d) return null + } + a.push(b); + return b + }, + F = function(a, b, c) { + for (var e = 0, d; d = a[e]; e++) { + if (d.id == b) return a.splice(e, 1); + if (c && d[c] && (d = F(d[c], + b, c))) return d + } + return null + }, + P = function(a, b) { + this.dialog = a; + for (var c = b.contents, e = 0, d; d = c[e]; e++) c[e] = d && new M(a, d); + CKEDITOR.tools.extend(this, b) + }; + P.prototype = { + getContents: function(a) { + return D(this.contents, a) + }, + getButton: function(a) { + return D(this.buttons, a) + }, + addContents: function(a, b) { + return E(this.contents, a, b) + }, + addButton: function(a, b) { + return E(this.buttons, a, b) + }, + removeContents: function(a) { + F(this.contents, a) + }, + removeButton: function(a) { + F(this.buttons, a) + } + }; + M.prototype = { + get: function(a) { + return D(this.elements, + a, "children") + }, + add: function(a, b) { + return E(this.elements, a, b, "children") + }, + remove: function(a) { + F(this.elements, a, "children") + } + }; + var J, z = {}, + u, w = {}, + Q = function(a) { + var b = a.data.$.ctrlKey || a.data.$.metaKey, + c = a.data.$.altKey, + e = a.data.$.shiftKey, + d = String.fromCharCode(a.data.$.keyCode); + (b = w[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && (b = b[b.length - 1], b.keydown && b.keydown.call(b.uiElement, b.dialog, b.key), a.data.preventDefault()) + }, + R = function(a) { + var b = a.data.$.ctrlKey || a.data.$.metaKey, + c = a.data.$.altKey, + e = a.data.$.shiftKey, + d = String.fromCharCode(a.data.$.keyCode); + (b = w[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && (b = b[b.length - 1], b.keyup && (b.keyup.call(b.uiElement, b.dialog, b.key), a.data.preventDefault())) + }, + S = function(a, b, c, e, d) { + (w[c] || (w[c] = [])).push({ + uiElement: a, + dialog: b, + key: c, + keyup: d || a.accessKeyUp, + keydown: e || a.accessKeyDown + }) + }, + ba = function(a) { + for (var b in w) { + for (var c = w[b], e = c.length - 1; 0 <= e; e--) c[e].dialog != a && c[e].uiElement != a || c.splice(e, 1); + 0 === c.length && delete w[b] + } + }, + da = function(a, + b) { + a._.accessKeyMap[b] && a.selectPage(a._.accessKeyMap[b]) + }, + ca = function() {}; + (function() { + CKEDITOR.ui.dialog = { + uiElement: function(a, b, c, e, d, f, g) { + if (!(4 > arguments.length)) { + var h = (e.call ? e(b) : e) || "div", + p = ["\x3c", h, " "], + m = (d && d.call ? d(b) : d) || {}, + k = (f && f.call ? f(b) : f) || {}, + q = (g && g.call ? g.call(this, a, b) : g) || "", + n = this.domId = k.id || CKEDITOR.tools.getNextId() + "_uiElement"; + b.requiredContent && !a.getParentEditor().filter.check(b.requiredContent) && (m.display = "none", this.notAllowed = !0); + k.id = n; + var r = {}; + b.type && (r["cke_dialog_ui_" + + b.type] = 1); + b.className && (r[b.className] = 1); + b.disabled && (r.cke_disabled = 1); + for (var l = k["class"] && k["class"].split ? k["class"].split(" ") : [], n = 0; n < l.length; n++) l[n] && (r[l[n]] = 1); + l = []; + for (n in r) l.push(n); + k["class"] = l.join(" "); + b.title && (k.title = b.title); + r = (b.style || "").split(";"); + b.align && (l = b.align, m["margin-left"] = "left" == l ? 0 : "auto", m["margin-right"] = "right" == l ? 0 : "auto"); + for (n in m) r.push(n + ":" + m[n]); + b.hidden && r.push("display:none"); + for (n = r.length - 1; 0 <= n; n--) "" === r[n] && r.splice(n, 1); + 0 < r.length && (k.style = + (k.style ? k.style + "; " : "") + r.join("; ")); + for (n in k) p.push(n + '\x3d"' + CKEDITOR.tools.htmlEncode(k[n]) + '" '); + p.push("\x3e", q, "\x3c/", h, "\x3e"); + c.push(p.join("")); + (this._ || (this._ = {})).dialog = a; + "boolean" == typeof b.isChanged && (this.isChanged = function() { + return b.isChanged + }); + "function" == typeof b.isChanged && (this.isChanged = b.isChanged); + "function" == typeof b.setValue && (this.setValue = CKEDITOR.tools.override(this.setValue, function(a) { + return function(c) { + a.call(this, b.setValue.call(this, c)) + } + })); + "function" == typeof b.getValue && + (this.getValue = CKEDITOR.tools.override(this.getValue, function(a) { + return function() { + return b.getValue.call(this, a.call(this)) + } + })); + CKEDITOR.event.implementOn(this); + this.registerEvents(b); + this.accessKeyUp && this.accessKeyDown && b.accessKey && S(this, a, "CTRL+" + b.accessKey); + var t = this; + a.on("load", function() { + var b = t.getInputElement(); + if (b) { + var c = t.type in { + checkbox: 1, + ratio: 1 + } && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? "cke_dialog_ui_focused" : ""; + b.on("focus", function() { + a._.tabBarMode = !1; + a._.hasFocus = !0; + t.fire("focus"); + c && this.addClass(c) + }); + b.on("blur", function() { + t.fire("blur"); + c && this.removeClass(c) + }) + } + }); + CKEDITOR.tools.extend(this, b); + this.keyboardFocusable && (this.tabIndex = b.tabIndex || 0, this.focusIndex = a._.focusList.push(this) - 1, this.on("focus", function() { + a._.currentFocusIndex = t.focusIndex + })) + } + }, + hbox: function(a, b, c, e, d) { + if (!(4 > arguments.length)) { + this._ || (this._ = {}); + var f = this._.children = b, + g = d && d.widths || null, + h = d && d.height || null, + p, m = { + role: "presentation" + }; + d && d.align && (m.align = d.align); + CKEDITOR.ui.dialog.uiElement.call(this, + a, d || { + type: "hbox" + }, e, "table", {}, m, + function() { + var a = ['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e']; + for (p = 0; p < c.length; p++) { + var b = "cke_dialog_ui_hbox_child", + e = []; + 0 === p && (b = "cke_dialog_ui_hbox_first"); + p == c.length - 1 && (b = "cke_dialog_ui_hbox_last"); + a.push('\x3ctd class\x3d"', b, '" role\x3d"presentation" '); + g ? g[p] && e.push("width:" + v(g[p])) : e.push("width:" + Math.floor(100 / c.length) + "%"); + h && e.push("height:" + v(h)); + d && void 0 !== d.padding && e.push("padding:" + v(d.padding)); + CKEDITOR.env.ie && CKEDITOR.env.quirks && + f[p].align && e.push("text-align:" + f[p].align); + 0 < e.length && a.push('style\x3d"' + e.join("; ") + '" '); + a.push("\x3e", c[p], "\x3c/td\x3e") + } + a.push("\x3c/tr\x3e\x3c/tbody\x3e"); + return a.join("") + }) + } + }, + vbox: function(a, b, c, e, d) { + if (!(3 > arguments.length)) { + this._ || (this._ = {}); + var f = this._.children = b, + g = d && d.width || null, + h = d && d.heights || null; + CKEDITOR.ui.dialog.uiElement.call(this, a, d || { + type: "vbox" + }, e, "div", null, { + role: "presentation" + }, function() { + var b = ['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" ']; + b.push('style\x3d"'); + d && d.expand && b.push("height:100%;"); + b.push("width:" + v(g || "100%"), ";"); + CKEDITOR.env.webkit && b.push("float:none;"); + b.push('"'); + b.push('align\x3d"', CKEDITOR.tools.htmlEncode(d && d.align || ("ltr" == a.getParentEditor().lang.dir ? "left" : "right")), '" '); + b.push("\x3e\x3ctbody\x3e"); + for (var e = 0; e < c.length; e++) { + var k = []; + b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" '); + g && k.push("width:" + v(g || "100%")); + h ? k.push("height:" + v(h[e])) : d && d.expand && k.push("height:" + Math.floor(100 / c.length) + "%"); + d && void 0 !== d.padding && k.push("padding:" + v(d.padding)); + CKEDITOR.env.ie && CKEDITOR.env.quirks && f[e].align && k.push("text-align:" + f[e].align); + 0 < k.length && b.push('style\x3d"', k.join("; "), '" '); + b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e', c[e], "\x3c/td\x3e\x3c/tr\x3e") + } + b.push("\x3c/tbody\x3e\x3c/table\x3e"); + return b.join("") + }) + } + } + } + })(); + CKEDITOR.ui.dialog.uiElement.prototype = { + getElement: function() { + return CKEDITOR.document.getById(this.domId) + }, + getInputElement: function() { + return this.getElement() + }, + getDialog: function() { + return this._.dialog + }, + setValue: function(a, b) { + this.getInputElement().setValue(a); + !b && this.fire("change", { + value: a + }); + return this + }, + getValue: function() { + return this.getInputElement().getValue() + }, + isChanged: function() { + return !1 + }, + selectParentTab: function() { + for (var a = this.getInputElement(); + (a = a.getParent()) && -1 == a.$.className.search("cke_dialog_page_contents");); + if (!a) return this; + a = a.getAttribute("name"); + this._.dialog._.currentTabId != a && this._.dialog.selectPage(a); + return this + }, + focus: function() { + this.selectParentTab().getInputElement().focus(); + return this + }, + registerEvents: function(a) { + var b = /^on([A-Z]\w+)/, + c, e = function(a, b, c, d) { + b.on("load", function() { + a.getInputElement().on(c, d, a) + }) + }, + d; + for (d in a) + if (c = d.match(b)) this.eventProcessors[d] ? this.eventProcessors[d].call(this, this._.dialog, a[d]) : e(this, this._.dialog, c[1].toLowerCase(), a[d]); + return this + }, + eventProcessors: { + onLoad: function(a, b) { + a.on("load", b, this) + }, + onShow: function(a, b) { + a.on("show", b, this) + }, + onHide: function(a, b) { + a.on("hide", b, this) + } + }, + accessKeyDown: function() { + this.focus() + }, + accessKeyUp: function() {}, + disable: function() { + var a = this.getElement(); + this.getInputElement().setAttribute("disabled", "true"); + a.addClass("cke_disabled") + }, + enable: function() { + var a = this.getElement(); + this.getInputElement().removeAttribute("disabled"); + a.removeClass("cke_disabled") + }, + isEnabled: function() { + return !this.getElement().hasClass("cke_disabled") + }, + isVisible: function() { + return this.getInputElement().isVisible() + }, + isFocusable: function() { + return this.isEnabled() && this.isVisible() ? !0 : !1 + } + }; + CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, { + getChild: function(a) { + if (1 > arguments.length) return this._.children.concat(); + a.splice || (a = [a]); + return 2 > a.length ? this._.children[a[0]] : this._.children[a[0]] && this._.children[a[0]].getChild ? this._.children[a[0]].getChild(a.slice(1, a.length)) : null + } + }, !0); + CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox; + (function() { + var a = { + build: function(a, c, e) { + for (var d = c.children, f, g = [], h = [], p = 0; p < d.length && (f = d[p]); p++) { + var m = []; + g.push(m); + h.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a, f, m)) + } + return new CKEDITOR.ui.dialog[c.type](a, + h, g, e, c) + } + }; + CKEDITOR.dialog.addUIElement("hbox", a); + CKEDITOR.dialog.addUIElement("vbox", a) + })(); + CKEDITOR.dialogCommand = function(a, b) { + this.dialogName = a; + CKEDITOR.tools.extend(this, b, !0) + }; + CKEDITOR.dialogCommand.prototype = { + exec: function(a) { + var b = this.tabId; + a.openDialog(this.dialogName, function(a) { + b && a.selectPage(b) + }) + }, + canUndo: !1, + editorFocus: 1 + }; + (function() { + var a = /^([a]|[^a])+$/, + b = /^\d*$/, + c = /^\d*(?:\.\d+)?$/, + e = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, + d = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, + f = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; + CKEDITOR.VALIDATE_OR = 1; + CKEDITOR.VALIDATE_AND = 2; + CKEDITOR.dialog.validate = { + functions: function() { + var a = arguments; + return function() { + var b = this && this.getValue ? this.getValue() : a[0], + c, d = CKEDITOR.VALIDATE_AND, + e = [], + f; + for (f = 0; f < a.length; f++) + if ("function" == typeof a[f]) e.push(a[f]); + else break; + f < a.length && "string" == typeof a[f] && (c = a[f], f++); + f < a.length && "number" == typeof a[f] && (d = a[f]); + var n = d == CKEDITOR.VALIDATE_AND ? !0 : !1; + for (f = 0; f < e.length; f++) n = d == CKEDITOR.VALIDATE_AND ? n && + e[f](b) : n || e[f](b); + return n ? !0 : c + } + }, + regex: function(a, b) { + return function(c) { + c = this && this.getValue ? this.getValue() : c; + return a.test(c) ? !0 : b + } + }, + notEmpty: function(b) { + return this.regex(a, b) + }, + integer: function(a) { + return this.regex(b, a) + }, + number: function(a) { + return this.regex(c, a) + }, + cssLength: function(a) { + return this.functions(function(a) { + return d.test(CKEDITOR.tools.trim(a)) + }, a) + }, + htmlLength: function(a) { + return this.functions(function(a) { + return e.test(CKEDITOR.tools.trim(a)) + }, a) + }, + inlineStyle: function(a) { + return this.functions(function(a) { + return f.test(CKEDITOR.tools.trim(a)) + }, + a) + }, + equals: function(a, b) { + return this.functions(function(b) { + return b == a + }, b) + }, + notEqual: function(a, b) { + return this.functions(function(b) { + return b != a + }, b) + } + }; + CKEDITOR.on("instanceDestroyed", function(a) { + if (CKEDITOR.tools.isEmpty(CKEDITOR.instances)) { + for (var b; b = CKEDITOR.dialog._.currentTop;) b.hide(); + for (var c in z) z[c].remove(); + z = {} + } + a = a.editor._.storedDialogs; + for (var d in a) a[d].destroy() + }) + })(); + CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { + openDialog: function(a, b) { + var c = null, + e = CKEDITOR.dialog._.dialogDefinitions[a]; + null === CKEDITOR.dialog._.currentTop && N(this); + if ("function" == typeof e) c = this._.storedDialogs || (this._.storedDialogs = {}), c = c[a] || (c[a] = new CKEDITOR.dialog(this, a)), b && b.call(c, c), c.show(); + else { + if ("failed" == e) throw O(this), Error('[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.'); + "string" == typeof e && CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e), function() { + "function" != typeof CKEDITOR.dialog._.dialogDefinitions[a] && (CKEDITOR.dialog._.dialogDefinitions[a] = "failed"); + this.openDialog(a, + b) + }, this, 0, 1) + } + CKEDITOR.skin.loadPart("dialog"); + return c + } + }) + })(); + CKEDITOR.plugins.add("dialog", { + requires: "dialogui", + init: function(x) { + x.on("doubleclick", function(A) { + A.data.dialog && x.openDialog(A.data.dialog) + }, null, null, 999) + } + }); + CKEDITOR.plugins.add("about", { + requires: "dialog", + init: function(a) { + var b = a.addCommand("about", new CKEDITOR.dialogCommand("about")); + b.modes = { + wysiwyg: 1, + source: 1 + }; + b.canUndo = !1; + b.readOnly = 1; + a.ui.addButton && a.ui.addButton("About", { + label: a.lang.about.dlgTitle, + command: "about", + toolbar: "about" + }); + CKEDITOR.dialog.add("about", this.path + "dialogs/about.js") + } + }); + (function() { + CKEDITOR.plugins.add("a11yhelp", { + requires: "dialog", + availableLangs: { + af: 1, + ar: 1, + az: 1, + bg: 1, + ca: 1, + cs: 1, + cy: 1, + da: 1, + de: 1, + "de-ch": 1, + el: 1, + en: 1, + "en-au": 1, + "en-gb": 1, + eo: 1, + es: 1, + "es-mx": 1, + et: 1, + eu: 1, + fa: 1, + fi: 1, + fo: 1, + fr: 1, + "fr-ca": 1, + gl: 1, + gu: 1, + he: 1, + hi: 1, + hr: 1, + hu: 1, + id: 1, + it: 1, + ja: 1, + km: 1, + ko: 1, + ku: 1, + lt: 1, + lv: 1, + mk: 1, + mn: 1, + nb: 1, + nl: 1, + no: 1, + oc: 1, + pl: 1, + pt: 1, + "pt-br": 1, + ro: 1, + ru: 1, + si: 1, + sk: 1, + sl: 1, + sq: 1, + sr: 1, + "sr-latn": 1, + sv: 1, + th: 1, + tr: 1, + tt: 1, + ug: 1, + uk: 1, + vi: 1, + zh: 1, + "zh-cn": 1 + }, + init: function(b) { + var c = this; + b.addCommand("a11yHelp", { + exec: function() { + var a = + b.langCode, + a = c.availableLangs[a] ? a : c.availableLangs[a.replace(/-.*/, "")] ? a.replace(/-.*/, "") : "en"; + CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path + "dialogs/lang/" + a + ".js"), function() { + b.lang.a11yhelp = c.langEntries[a]; + b.openDialog("a11yHelp") + }) + }, + modes: { + wysiwyg: 1, + source: 1 + }, + readOnly: 1, + canUndo: !1 + }); + b.setKeystroke(CKEDITOR.ALT + 48, "a11yHelp"); + CKEDITOR.dialog.add("a11yHelp", this.path + "dialogs/a11yhelp.js"); + b.on("ariaEditorHelpLabel", function(a) { + a.data.label = b.lang.common.editorHelp + }) + } + }) + })(); + (function() { + function f(c) { + var a = this.att; + c = c && c.hasAttribute(a) && c.getAttribute(a) || ""; + void 0 !== c && this.setValue(c) + } + + function g() { + for (var c, a = 0; a < arguments.length; a++) + if (arguments[a] instanceof CKEDITOR.dom.element) { + c = arguments[a]; + break + } if (c) { + var a = this.att, + b = this.getValue(); + b ? c.setAttribute(a, b) : c.removeAttribute(a, b) + } + } + var k = { + id: 1, + dir: 1, + classes: 1, + styles: 1 + }; + CKEDITOR.plugins.add("dialogadvtab", { + requires: "dialog", + allowedContent: function(c) { + c || (c = k); + var a = []; + c.id && a.push("id"); + c.dir && a.push("dir"); + var b = + ""; + a.length && (b += "[" + a.join(",") + "]"); + c.classes && (b += "(*)"); + c.styles && (b += "{*}"); + return b + }, + createAdvancedTab: function(c, a, b) { + a || (a = k); + var d = c.lang.common, + h = { + id: "advanced", + label: d.advancedTab, + title: d.advancedTab, + elements: [{ + type: "vbox", + padding: 1, + children: [] + }] + }, + e = []; + if (a.id || a.dir) a.id && e.push({ + id: "advId", + att: "id", + type: "text", + requiredContent: b ? b + "[id]" : null, + label: d.id, + setup: f, + commit: g + }), a.dir && e.push({ + id: "advLangDir", + att: "dir", + type: "select", + requiredContent: b ? b + "[dir]" : null, + label: d.langDir, + "default": "", + style: "width:100%", + items: [ + [d.notSet, ""], + [d.langDirLTR, "ltr"], + [d.langDirRTL, "rtl"] + ], + setup: f, + commit: g + }), h.elements[0].children.push({ + type: "hbox", + widths: ["50%", "50%"], + children: [].concat(e) + }); + if (a.styles || a.classes) e = [], a.styles && e.push({ + id: "advStyles", + att: "style", + type: "text", + requiredContent: b ? b + "{cke-xyz}" : null, + label: d.styles, + "default": "", + validate: CKEDITOR.dialog.validate.inlineStyle(d.invalidInlineStyle), + onChange: function() {}, + getStyle: function(a, c) { + var b = this.getValue().match(new RegExp("(?:^|;)\\s*" + + a + "\\s*:\\s*([^;]*)", "i")); + return b ? b[1] : c + }, + updateStyle: function(a, b) { + var d = this.getValue(), + e = c.document.createElement("span"); + e.setAttribute("style", d); + e.setStyle(a, b); + d = CKEDITOR.tools.normalizeCssText(e.getAttribute("style")); + this.setValue(d, 1) + }, + setup: f, + commit: g + }), a.classes && e.push({ + type: "hbox", + widths: ["45%", "55%"], + children: [{ + id: "advCSSClasses", + att: "class", + type: "text", + requiredContent: b ? b + "(cke-xyz)" : null, + label: d.cssClasses, + "default": "", + setup: f, + commit: g + }] + }), h.elements[0].children.push({ + type: "hbox", + widths: ["50%", "50%"], + children: [].concat(e) + }); + return h + } + }) + })(); + CKEDITOR.plugins.add("basicstyles", { + init: function(c) { + var e = 0, + d = function(g, d, b, a) { + if (a) { + a = new CKEDITOR.style(a); + var f = h[b]; + f.unshift(a); + c.attachStyleStateChange(a, function(a) { + !c.readOnly && c.getCommand(b).setState(a) + }); + c.addCommand(b, new CKEDITOR.styleCommand(a, { + contentForms: f + })); + c.ui.addButton && c.ui.addButton(g, { + label: d, + command: b, + toolbar: "basicstyles," + (e += 10) + }) + } + }, + h = { + bold: ["strong", "b", ["span", function(a) { + a = a.styles["font-weight"]; + return "bold" == a || 700 <= +a + }]], + italic: ["em", "i", ["span", function(a) { + return "italic" == + a.styles["font-style"] + }]], + underline: ["u", ["span", function(a) { + return "underline" == a.styles["text-decoration"] + }]], + strike: ["s", "strike", ["span", function(a) { + return "line-through" == a.styles["text-decoration"] + }]], + subscript: ["sub"], + superscript: ["sup"] + }, + b = c.config, + a = c.lang.basicstyles; + d("Bold", a.bold, "bold", b.coreStyles_bold); + d("Italic", a.italic, "italic", b.coreStyles_italic); + d("Underline", a.underline, "underline", b.coreStyles_underline); + d("Strike", a.strike, "strike", b.coreStyles_strike); + d("Subscript", a.subscript, + "subscript", b.coreStyles_subscript); + d("Superscript", a.superscript, "superscript", b.coreStyles_superscript); + c.setKeystroke([ + [CKEDITOR.CTRL + 66, "bold"], + [CKEDITOR.CTRL + 73, "italic"], + [CKEDITOR.CTRL + 85, "underline"] + ]) + } + }); + CKEDITOR.config.coreStyles_bold = { + element: "strong", + overrides: "b" + }; + CKEDITOR.config.coreStyles_italic = { + element: "em", + overrides: "i" + }; + CKEDITOR.config.coreStyles_underline = { + element: "u" + }; + CKEDITOR.config.coreStyles_strike = { + element: "s", + overrides: "strike" + }; + CKEDITOR.config.coreStyles_subscript = { + element: "sub" + }; + CKEDITOR.config.coreStyles_superscript = { + element: "sup" + }; + (function() { + function q(a, f, d, b) { + if (!a.isReadOnly() && !a.equals(d.editable())) { + CKEDITOR.dom.element.setMarker(b, a, "bidi_processed", 1); + b = a; + for (var c = d.editable(); + (b = b.getParent()) && !b.equals(c);) + if (b.getCustomData("bidi_processed")) { + a.removeStyle("direction"); + a.removeAttribute("dir"); + return + } b = "useComputedState" in d.config ? d.config.useComputedState : 1; + (b ? a.getComputedStyle("direction") : a.getStyle("direction") || a.hasAttribute("dir")) != f && (a.removeStyle("direction"), b ? (a.removeAttribute("dir"), f != a.getComputedStyle("direction") && + a.setAttribute("dir", f)) : a.setAttribute("dir", f), d.forceNextSelectionCheck()) + } + } + + function v(a, f, d) { + var b = a.getCommonAncestor(!1, !0); + a = a.clone(); + a.enlarge(d == CKEDITOR.ENTER_BR ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS); + if (a.checkBoundaryOfElement(b, CKEDITOR.START) && a.checkBoundaryOfElement(b, CKEDITOR.END)) { + for (var c; b && b.type == CKEDITOR.NODE_ELEMENT && (c = b.getParent()) && 1 == c.getChildCount() && !(b.getName() in f);) b = c; + return b.type == CKEDITOR.NODE_ELEMENT && b.getName() in f && b + } + } + + function p(a) { + return { + context: "p", + allowedContent: { + "h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td": { + propertiesOnly: !0, + attributes: "dir" + } + }, + requiredContent: "p[dir]", + refresh: function(a, d) { + var b = a.config.useComputedState, + c, b = void 0 === b || b; + if (!b) { + c = d.lastElement; + for (var h = a.editable(); c && !(c.getName() in u || c.equals(h));) { + var e = c.getParent(); + if (!e) break; + c = e + } + } + c = c || d.block || d.blockLimit; + c.equals(a.editable()) && (h = a.getSelection().getRanges()[0].getEnclosedNode()) && h.type == CKEDITOR.NODE_ELEMENT && (c = h); + c && (b = b ? c.getComputedStyle("direction") : + c.getStyle("direction") || c.getAttribute("dir"), a.getCommand("bidirtl").setState("rtl" == b ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF), a.getCommand("bidiltr").setState("ltr" == b ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF)); + b = (d.block || d.blockLimit || a.editable()).getDirection(1); + b != (a._.selDir || a.lang.dir) && (a._.selDir = b, a.fire("contentDirChanged", b)) + }, + exec: function(f) { + var d = f.getSelection(), + b = f.config.enterMode, + c = d.getRanges(); + if (c && c.length) { + for (var h = {}, e = d.createBookmarks(), c = c.createIterator(), g, + l = 0; g = c.getNextRange(1);) { + var k = g.getEnclosedNode(); + k && (!k || k.type == CKEDITOR.NODE_ELEMENT && k.getName() in r) || (k = v(g, t, b)); + k && q(k, a, f, h); + var m = new CKEDITOR.dom.walker(g), + n = e[l].startNode, + p = e[l++].endNode; + m.evaluator = function(a) { + var c = b == CKEDITOR.ENTER_P ? "p" : "div", + d; + if (d = (a ? a.type == CKEDITOR.NODE_ELEMENT : !1) && a.getName() in t) { + if (c = a.is(c)) c = (c = a.getParent()) ? c.type == CKEDITOR.NODE_ELEMENT : !1; + d = !(c && a.getParent().is("blockquote")) + } + return !!(d && a.getPosition(n) & CKEDITOR.POSITION_FOLLOWING && (a.getPosition(p) & + CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_CONTAINS) == CKEDITOR.POSITION_PRECEDING) + }; + for (; k = m.next();) q(k, a, f, h); + g = g.createIterator(); + for (g.enlargeBr = b != CKEDITOR.ENTER_BR; k = g.getNextParagraph(b == CKEDITOR.ENTER_P ? "p" : "div");) q(k, a, f, h) + } + CKEDITOR.dom.element.clearAllMarkers(h); + f.forceNextSelectionCheck(); + d.selectBookmarks(e); + f.focus() + } + } + } + } + + function w(a) { + var f = a == l.setAttribute, + d = a == l.removeAttribute, + b = /\bdirection\s*:\s*(.*?)\s*(:?$|;)/; + return function(c, h) { + if (!this.isReadOnly()) { + var e; + if (e = c == (f || d ? + "dir" : "direction") || "style" == c && (d || b.test(h))) { + a: { + e = this; + for (var g = e.getDocument().getBody().getParent(); e;) { + if (e.equals(g)) { + e = !1; + break a + } + e = e.getParent() + } + e = !0 + } + e = !e + } + if (e && (e = this.getDirection(1), g = a.apply(this, arguments), e != this.getDirection(1))) return this.getDocument().fire("dirChanged", this), g + } + return a.apply(this, arguments) + } + } + var t = { + table: 1, + ul: 1, + ol: 1, + blockquote: 1, + div: 1 + }, + r = {}, + u = {}; + CKEDITOR.tools.extend(r, t, { + tr: 1, + p: 1, + div: 1, + li: 1 + }); + CKEDITOR.tools.extend(u, r, { + td: 1 + }); + CKEDITOR.plugins.add("bidi", { + init: function(a) { + function f(b, + c, d, e, f) { + a.addCommand(d, new CKEDITOR.command(a, e)); + a.ui.addButton && a.ui.addButton(b, { + label: c, + command: d, + toolbar: "bidi," + f + }) + } + if (!a.blockless) { + var d = a.lang.bidi; + f("BidiLtr", d.ltr, "bidiltr", p("ltr"), 10); + f("BidiRtl", d.rtl, "bidirtl", p("rtl"), 20); + a.on("contentDom", function() { + a.document.on("dirChanged", function(b) { + a.fire("dirChanged", { + node: b.data, + dir: b.data.getDirection(1) + }) + }) + }); + a.on("contentDirChanged", function(b) { + b = (a.lang.dir != b.data ? "add" : "remove") + "Class"; + var c = a.ui.space(a.config.toolbarLocation); + if (c) c[b]("cke_mixed_dir_content") + }) + } + } + }); + for (var l = CKEDITOR.dom.element.prototype, n = ["setStyle", "removeStyle", "setAttribute", "removeAttribute"], m = 0; m < n.length; m++) l[n[m]] = CKEDITOR.tools.override(l[n[m]], w) + })(); + (function() { + var m = { + exec: function(g) { + var a = g.getCommand("blockquote").state, + k = g.getSelection(), + c = k && k.getRanges()[0]; + if (c) { + var h = k.createBookmarks(); + if (CKEDITOR.env.ie) { + var e = h[0].startNode, + b = h[0].endNode, + d; + if (e && "blockquote" == e.getParent().getName()) + for (d = e; d = d.getNext();) + if (d.type == CKEDITOR.NODE_ELEMENT && d.isBlockBoundary()) { + e.move(d, !0); + break + } if (b && "blockquote" == b.getParent().getName()) + for (d = b; d = d.getPrevious();) + if (d.type == CKEDITOR.NODE_ELEMENT && d.isBlockBoundary()) { + b.move(d); + break + } + } + var f = c.createIterator(); + f.enlargeBr = g.config.enterMode != CKEDITOR.ENTER_BR; + if (a == CKEDITOR.TRISTATE_OFF) { + for (e = []; a = f.getNextParagraph();) e.push(a); + 1 > e.length && (a = g.document.createElement(g.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div"), b = h.shift(), c.insertNode(a), a.append(new CKEDITOR.dom.text("", g.document)), c.moveToBookmark(b), c.selectNodeContents(a), c.collapse(!0), b = c.createBookmark(), e.push(a), h.unshift(b)); + d = e[0].getParent(); + c = []; + for (b = 0; b < e.length; b++) a = e[b], d = d.getCommonAncestor(a.getParent()); + for (a = { + table: 1, + tbody: 1, + tr: 1, + ol: 1, + ul: 1 + }; a[d.getName()];) d = d.getParent(); + for (b = null; 0 < e.length;) { + for (a = e.shift(); !a.getParent().equals(d);) a = a.getParent(); + a.equals(b) || c.push(a); + b = a + } + for (; 0 < c.length;) + if (a = c.shift(), "blockquote" == a.getName()) { + for (b = new CKEDITOR.dom.documentFragment(g.document); a.getFirst();) b.append(a.getFirst().remove()), e.push(b.getLast()); + b.replace(a) + } else e.push(a); + c = g.document.createElement("blockquote"); + for (c.insertBefore(e[0]); 0 < e.length;) a = e.shift(), c.append(a) + } else if (a == CKEDITOR.TRISTATE_ON) { + b = []; + for (d = {}; a = f.getNextParagraph();) { + for (e = c = null; a.getParent();) { + if ("blockquote" == a.getParent().getName()) { + c = a.getParent(); + e = a; + break + } + a = a.getParent() + } + c && e && !e.getCustomData("blockquote_moveout") && (b.push(e), CKEDITOR.dom.element.setMarker(d, e, "blockquote_moveout", !0)) + } + CKEDITOR.dom.element.clearAllMarkers(d); + a = []; + e = []; + for (d = {}; 0 < b.length;) f = b.shift(), c = f.getParent(), f.getPrevious() ? f.getNext() ? (f.breakParent(f.getParent()), e.push(f.getNext())) : f.remove().insertAfter(c) : f.remove().insertBefore(c), c.getCustomData("blockquote_processed") || + (e.push(c), CKEDITOR.dom.element.setMarker(d, c, "blockquote_processed", !0)), a.push(f); + CKEDITOR.dom.element.clearAllMarkers(d); + for (b = e.length - 1; 0 <= b; b--) { + c = e[b]; + a: { + d = c; + for (var f = 0, m = d.getChildCount(), l = void 0; f < m && (l = d.getChild(f)); f++) + if (l.type == CKEDITOR.NODE_ELEMENT && l.isBlockBoundary()) { + d = !1; + break a + } d = !0 + } + d && c.remove() + } + if (g.config.enterMode == CKEDITOR.ENTER_BR) + for (c = !0; a.length;) + if (f = a.shift(), "div" == f.getName()) { + b = new CKEDITOR.dom.documentFragment(g.document); + !c || !f.getPrevious() || f.getPrevious().type == + CKEDITOR.NODE_ELEMENT && f.getPrevious().isBlockBoundary() || b.append(g.document.createElement("br")); + for (c = f.getNext() && !(f.getNext().type == CKEDITOR.NODE_ELEMENT && f.getNext().isBlockBoundary()); f.getFirst();) f.getFirst().remove().appendTo(b); + c && b.append(g.document.createElement("br")); + b.replace(f); + c = !1 + } + } + k.selectBookmarks(h); + g.focus() + } + }, + refresh: function(g, a) { + this.setState(g.elementPath(a.block || a.blockLimit).contains("blockquote", 1) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF) + }, + context: "blockquote", + allowedContent: "blockquote", + requiredContent: "blockquote" + }; + CKEDITOR.plugins.add("blockquote", { + init: function(g) { + g.blockless || (g.addCommand("blockquote", m), g.ui.addButton && g.ui.addButton("Blockquote", { + label: g.lang.blockquote.toolbar, + command: "blockquote", + toolbar: "blocks,10" + })) + } + }) + })(); + (function() { + function q(b, a) { + CKEDITOR.tools.extend(this, a, { + editor: b, + id: "cke-" + CKEDITOR.tools.getUniqueId(), + area: b._.notificationArea + }); + a.type || (this.type = "info"); + this.element = this._createElement(); + b.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element) + } + + function r(b) { + var a = this; + this.editor = b; + this.notifications = []; + this.element = this._createElement(); + this._uiBuffer = CKEDITOR.tools.eventsBuffer(10, this._layout, this); + this._changeBuffer = CKEDITOR.tools.eventsBuffer(500, this._layout, + this); + b.on("destroy", function() { + a._removeListeners(); + a.element.remove() + }) + } + CKEDITOR.plugins.add("notification", { + init: function(b) { + function a(b) { + var a = new CKEDITOR.dom.element("div"); + a.setStyles({ + position: "fixed", + "margin-left": "-9999px" + }); + a.setAttributes({ + "aria-live": "assertive", + "aria-atomic": "true" + }); + a.setText(b); + CKEDITOR.document.getBody().append(a); + setTimeout(function() { + a.remove() + }, 100) + } + b._.notificationArea = new r(b); + b.showNotification = function(a, d, e) { + var f, l; + "progress" == d ? f = e : l = e; + a = new CKEDITOR.plugins.notification(b, { + message: a, + type: d, + progress: f, + duration: l + }); + a.show(); + return a + }; + b.on("key", function(c) { + if (27 == c.data.keyCode) { + var d = b._.notificationArea.notifications; + d.length && (a(b.lang.notification.closed), d[d.length - 1].hide(), c.cancel()) + } + }) + } + }); + q.prototype = { + show: function() { + !1 !== this.editor.fire("notificationShow", { + notification: this + }) && (this.area.add(this), this._hideAfterTimeout()) + }, + update: function(b) { + var a = !0; + !1 === this.editor.fire("notificationUpdate", { + notification: this, + options: b + }) && (a = !1); + var c = this.element, + d = c.findOne(".cke_notification_message"), + e = c.findOne(".cke_notification_progress"), + f = b.type; + c.removeAttribute("role"); + b.progress && "progress" != this.type && (f = "progress"); + f && (c.removeClass(this._getClass()), c.removeAttribute("aria-label"), this.type = f, c.addClass(this._getClass()), c.setAttribute("aria-label", this.type), "progress" != this.type || e ? "progress" != this.type && e && e.remove() : (e = this._createProgressElement(), e.insertBefore(d))); + void 0 !== b.message && (this.message = b.message, d.setHtml(this.message)); + void 0 !== b.progress && (this.progress = b.progress, + e && e.setStyle("width", this._getPercentageProgress())); + a && b.important && (c.setAttribute("role", "alert"), this.isVisible() || this.area.add(this)); + this.duration = b.duration; + this._hideAfterTimeout() + }, + hide: function() { + !1 !== this.editor.fire("notificationHide", { + notification: this + }) && this.area.remove(this) + }, + isVisible: function() { + return 0 <= CKEDITOR.tools.indexOf(this.area.notifications, this) + }, + _createElement: function() { + var b = this, + a, c, d = this.editor.lang.common.close; + a = new CKEDITOR.dom.element("div"); + a.addClass("cke_notification"); + a.addClass(this._getClass()); + a.setAttributes({ + id: this.id, + role: "alert", + "aria-label": this.type + }); + "progress" == this.type && a.append(this._createProgressElement()); + c = new CKEDITOR.dom.element("p"); + c.addClass("cke_notification_message"); + c.setHtml(this.message); + a.append(c); + c = CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"' + d + '" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e'); + a.append(c); + c.on("click", + function() { + b.editor.focus(); + b.hide() + }); + return a + }, + _getClass: function() { + return "progress" == this.type ? "cke_notification_info" : "cke_notification_" + this.type + }, + _createProgressElement: function() { + var b = new CKEDITOR.dom.element("span"); + b.addClass("cke_notification_progress"); + b.setStyle("width", this._getPercentageProgress()); + return b + }, + _getPercentageProgress: function() { + return Math.round(100 * (this.progress || 0)) + "%" + }, + _hideAfterTimeout: function() { + var b = this, + a; + this._hideTimeoutId && clearTimeout(this._hideTimeoutId); + if ("number" == typeof this.duration) a = this.duration; + else if ("info" == this.type || "success" == this.type) a = "number" == typeof this.editor.config.notification_duration ? this.editor.config.notification_duration : 5E3; + a && (b._hideTimeoutId = setTimeout(function() { + b.hide() + }, a)) + } + }; + r.prototype = { + add: function(b) { + this.notifications.push(b); + this.element.append(b.element); + 1 == this.element.getChildCount() && (CKEDITOR.document.getBody().append(this.element), this._attachListeners()); + this._layout() + }, + remove: function(b) { + var a = CKEDITOR.tools.indexOf(this.notifications, + b); + 0 > a || (this.notifications.splice(a, 1), b.element.remove(), this.element.getChildCount() || (this._removeListeners(), this.element.remove())) + }, + _createElement: function() { + var b = this.editor, + a = b.config, + c = new CKEDITOR.dom.element("div"); + c.addClass("cke_notifications_area"); + c.setAttribute("id", "cke_notifications_area_" + b.name); + c.setStyle("z-index", a.baseFloatZIndex - 2); + return c + }, + _attachListeners: function() { + var b = CKEDITOR.document.getWindow(), + a = this.editor; + b.on("scroll", this._uiBuffer.input); + b.on("resize", this._uiBuffer.input); + a.on("change", this._changeBuffer.input); + a.on("floatingSpaceLayout", this._layout, this, null, 20); + a.on("blur", this._layout, this, null, 20) + }, + _removeListeners: function() { + var b = CKEDITOR.document.getWindow(), + a = this.editor; + b.removeListener("scroll", this._uiBuffer.input); + b.removeListener("resize", this._uiBuffer.input); + a.removeListener("change", this._changeBuffer.input); + a.removeListener("floatingSpaceLayout", this._layout); + a.removeListener("blur", this._layout) + }, + _layout: function() { + function b() { + a.setStyle("left", + k(n + d.width - g - h)) + } + var a = this.element, + c = this.editor, + d = c.ui.contentsElement.getClientRect(), + e = c.ui.contentsElement.getDocumentPosition(), + f, l, u = a.getClientRect(), + m, g = this._notificationWidth, + h = this._notificationMargin; + m = CKEDITOR.document.getWindow(); + var p = m.getScrollPosition(), + t = m.getViewPaneSize(), + q = CKEDITOR.document.getBody(), + r = q.getDocumentPosition(), + k = CKEDITOR.tools.cssLength; + g && h || (m = this.element.getChild(0), g = this._notificationWidth = m.getClientRect().width, h = this._notificationMargin = parseInt(m.getComputedStyle("margin-left"), + 10) + parseInt(m.getComputedStyle("margin-right"), 10)); + c.toolbar && (f = c.ui.space("top"), l = f.getClientRect()); + f && f.isVisible() && l.bottom > d.top && l.bottom < d.bottom - u.height ? a.setStyles({ + position: "fixed", + top: k(l.bottom) + }) : 0 < d.top ? a.setStyles({ + position: "absolute", + top: k(e.y) + }) : e.y + d.height - u.height > p.y ? a.setStyles({ + position: "fixed", + top: 0 + }) : a.setStyles({ + position: "absolute", + top: k(e.y + d.height - u.height) + }); + var n = "fixed" == a.getStyle("position") ? d.left : "static" != q.getComputedStyle("position") ? e.x - r.x : e.x; + d.width < + g + h ? e.x + g + h > p.x + t.width ? b() : a.setStyle("left", k(n)) : e.x + g + h > p.x + t.width ? a.setStyle("left", k(n)) : e.x + d.width / 2 + g / 2 + h > p.x + t.width ? a.setStyle("left", k(n - e.x + p.x + t.width - g - h)) : 0 > d.left + d.width - g - h ? b() : 0 > d.left + d.width / 2 - g / 2 ? a.setStyle("left", k(n - e.x + p.x)) : a.setStyle("left", k(n + d.width / 2 - g / 2 - h / 2)) + } + }; + CKEDITOR.plugins.notification = q + })(); + (function() { + var c = '\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"'; + CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"'); + CKEDITOR.env.gecko && (c += + ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); + var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" ' + (CKEDITOR.env.ie ? 'onclick\x3d"return false;" onmouseup' : "onclick") + '\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"'), + c = c + '\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e', + v = CKEDITOR.addTemplate("buttonArrow", '\x3cspan class\x3d"cke_button_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : "") + "\x3c/span\x3e"), + w = CKEDITOR.addTemplate("button", c); + CKEDITOR.plugins.add("button", { + beforeInit: function(a) { + a.ui.addHandler(CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler) + } + }); + CKEDITOR.UI_BUTTON = "button"; + CKEDITOR.ui.button = function(a) { + CKEDITOR.tools.extend(this, a, { + title: a.label, + click: a.click || function(b) { + b.execCommand(a.command) + } + }); + this._ = {} + }; + CKEDITOR.ui.button.handler = { + create: function(a) { + return new CKEDITOR.ui.button(a) + } + }; + CKEDITOR.ui.button.prototype = { + render: function(a, b) { + function c() { + var f = a.mode; + f && (f = this.modes[f] ? void 0 !== n[f] ? n[f] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, f = a.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : f, this.setState(f), this.refresh && this.refresh()) + } + var n = null, + p = CKEDITOR.env, + q = this._.id = CKEDITOR.tools.getNextId(), + g = "", + d = this.command, + t, k, l; + this._.editor = a; + var e = { + id: q, + button: this, + editor: a, + focus: function() { + CKEDITOR.document.getById(q).focus() + }, + execute: function() { + this.button.click(a) + }, + attach: function(a) { + this.button.attach(a) + } + }, + x = CKEDITOR.tools.addFunction(function(a) { + if (e.onkey) return a = new CKEDITOR.dom.event(a), !1 !== e.onkey(e, a.getKeystroke()) + }), + y = CKEDITOR.tools.addFunction(function(a) { + var b; + e.onfocus && (b = !1 !== e.onfocus(e, new CKEDITOR.dom.event(a))); + return b + }), + u = 0; + e.clickFn = t = CKEDITOR.tools.addFunction(function() { + u && (a.unlockSelection(1), u = 0); + e.execute(); + p.iOS && a.focus() + }); + this.modes ? (n = {}, a.on("beforeModeUnload", function() { + a.mode && this._.state != CKEDITOR.TRISTATE_DISABLED && (n[a.mode] = + this._.state) + }, this), a.on("activeFilterChange", c, this), a.on("mode", c, this), !this.readOnly && a.on("readOnly", c, this)) : d && (d = a.getCommand(d)) && (d.on("state", function() { + this.setState(d.state) + }, this), g += d.state == CKEDITOR.TRISTATE_ON ? "on" : d.state == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off"); + var m; + if (this.directional) a.on("contentDirChanged", function(b) { + var c = CKEDITOR.document.getById(this._.id), + d = c.getFirst(); + b = b.data; + b != a.lang.dir ? c.addClass("cke_" + b) : c.removeClass("cke_ltr").removeClass("cke_rtl"); + d.setAttribute("style", + CKEDITOR.skin.getIconStyle(m, "rtl" == b, this.icon, this.iconOffset)) + }, this); + d ? (k = a.getCommandKeystroke(d)) && (l = CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard, k)) : g += "off"; + k = this.name || this.command; + var h = null, + r = this.icon; + m = k; + this.icon && !/\./.test(this.icon) ? (m = this.icon, r = null) : (this.icon && (h = this.icon), CKEDITOR.env.hidpi && this.iconHiDpi && (h = this.iconHiDpi)); + h ? (CKEDITOR.skin.addIcon(h, h), r = null) : h = m; + g = { + id: q, + name: k, + iconName: m, + label: this.label, + cls: this.className || "", + state: g, + ariaDisabled: "disabled" == + g ? "true" : "false", + title: this.title + (l ? " (" + l.display + ")" : ""), + ariaShortcut: l ? a.lang.common.keyboardShortcut + " " + l.aria : "", + titleJs: p.gecko && !p.hc ? "" : (this.title || "").replace("'", ""), + hasArrow: this.hasArrow ? "true" : "false", + keydownFn: x, + focusFn: y, + clickFn: t, + style: CKEDITOR.skin.getIconStyle(h, "rtl" == a.lang.dir, r, this.iconOffset), + arrowHtml: this.hasArrow ? v.output() : "" + }; + w.output(g, b); + if (this.onRender) this.onRender(); + return e + }, + setState: function(a) { + if (this._.state == a) return !1; + this._.state = a; + var b = CKEDITOR.document.getById(this._.id); + return b ? (b.setState(a, "cke_button"), a == CKEDITOR.TRISTATE_DISABLED ? b.setAttribute("aria-disabled", !0) : b.removeAttribute("aria-disabled"), this.hasArrow ? (a = a == CKEDITOR.TRISTATE_ON ? this._.editor.lang.button.selectedLabel.replace(/%1/g, this.label) : this.label, CKEDITOR.document.getById(this._.id + "_label").setText(a)) : a == CKEDITOR.TRISTATE_ON ? b.setAttribute("aria-pressed", !0) : b.removeAttribute("aria-pressed"), !0) : !1 + }, + getState: function() { + return this._.state + }, + toFeature: function(a) { + if (this._.feature) return this._.feature; + var b = this; + this.allowedContent || this.requiredContent || !this.command || (b = a.getCommand(this.command) || b); + return this._.feature = b + } + }; + CKEDITOR.ui.prototype.addButton = function(a, b) { + this.add(a, CKEDITOR.UI_BUTTON, b) + } + })(); + (function() { + function D(a) { + function d() { + for (var b = f(), e = CKEDITOR.tools.clone(a.config.toolbarGroups) || v(a), n = 0; n < e.length; n++) { + var g = e[n]; + if ("/" != g) { + "string" == typeof g && (g = e[n] = { + name: g + }); + var l, d = g.groups; + if (d) + for (var h = 0; h < d.length; h++) l = d[h], (l = b[l]) && c(g, l); + (l = b[g.name]) && c(g, l) + } + } + return e + } + + function f() { + var b = {}, + c, e, g; + for (c in a.ui.items) e = a.ui.items[c], g = e.toolbar || "others", g = g.split(","), e = g[0], g = parseInt(g[1] || -1, 10), b[e] || (b[e] = []), b[e].push({ + name: c, + order: g + }); + for (e in b) b[e] = b[e].sort(function(b, + a) { + return b.order == a.order ? 0 : 0 > a.order ? -1 : 0 > b.order ? 1 : b.order < a.order ? -1 : 1 + }); + return b + } + + function c(c, e) { + if (e.length) { + c.items ? c.items.push(a.ui.create("-")) : c.items = []; + for (var d; d = e.shift();) d = "string" == typeof d ? d : d.name, b && -1 != CKEDITOR.tools.indexOf(b, d) || (d = a.ui.create(d)) && a.addFeature(d) && c.items.push(d) + } + } + + function h(b) { + var a = [], + e, d, h; + for (e = 0; e < b.length; ++e) d = b[e], h = {}, "/" == d ? a.push(d) : CKEDITOR.tools.isArray(d) ? (c(h, CKEDITOR.tools.clone(d)), a.push(h)) : d.items && (c(h, CKEDITOR.tools.clone(d.items)), + h.name = d.name, a.push(h)); + return a + } + var b = a.config.removeButtons, + b = b && b.split(","), + e = a.config.toolbar; + "string" == typeof e && (e = a.config["toolbar_" + e]); + return a.toolbar = e ? h(e) : d() + } + + function v(a) { + return a._.toolbarGroups || (a._.toolbarGroups = [{ + name: "document", + groups: ["mode", "document", "doctools"] + }, { + name: "clipboard", + groups: ["clipboard", "undo"] + }, { + name: "editing", + groups: ["find", "selection", "spellchecker"] + }, { + name: "forms" + }, "/", { + name: "basicstyles", + groups: ["basicstyles", "cleanup"] + }, { + name: "paragraph", + groups: ["list", + "indent", "blocks", "align", "bidi" + ] + }, { + name: "links" + }, { + name: "insert" + }, "/", { + name: "styles" + }, { + name: "colors" + }, { + name: "tools" + }, { + name: "others" + }, { + name: "about" + }]) + } + var z = function() { + this.toolbars = []; + this.focusCommandExecuted = !1 + }; + z.prototype.focus = function() { + for (var a = 0, d; d = this.toolbars[a++];) + for (var f = 0, c; c = d.items[f++];) + if (c.focus) { + c.focus(); + return + } + }; + var E = { + modes: { + wysiwyg: 1, + source: 1 + }, + readOnly: 1, + exec: function(a) { + a.toolbox && (a.toolbox.focusCommandExecuted = !0, CKEDITOR.env.ie || CKEDITOR.env.air ? setTimeout(function() { + a.toolbox.focus() + }, + 100) : a.toolbox.focus()) + } + }; + CKEDITOR.plugins.add("toolbar", { + requires: "button", + init: function(a) { + var d, f = function(c, h) { + var b, e = "rtl" == a.lang.dir, + k = a.config.toolbarGroupCycling, + q = e ? 37 : 39, + e = e ? 39 : 37, + k = void 0 === k || k; + switch (h) { + case 9: + case CKEDITOR.SHIFT + 9: + for (; !b || !b.items.length;) + if (b = 9 == h ? (b ? b.next : c.toolbar.next) || a.toolbox.toolbars[0] : (b ? b.previous : c.toolbar.previous) || a.toolbox.toolbars[a.toolbox.toolbars.length - 1], b.items.length) + for (c = b.items[d ? b.items.length - 1 : 0]; c && !c.focus;)(c = d ? c.previous : c.next) || + (b = 0); + c && c.focus(); + return !1; + case q: + b = c; + do b = b.next, !b && k && (b = c.toolbar.items[0]); while (b && !b.focus); + b ? b.focus() : f(c, 9); + return !1; + case 40: + return c.button && c.button.hasArrow ? c.execute() : f(c, 40 == h ? q : e), !1; + case e: + case 38: + b = c; + do b = b.previous, !b && k && (b = c.toolbar.items[c.toolbar.items.length - 1]); while (b && !b.focus); + b ? b.focus() : (d = 1, f(c, CKEDITOR.SHIFT + 9), d = 0); + return !1; + case 27: + return a.focus(), !1; + case 13: + case 32: + return c.execute(), !1 + } + return !0 + }; + a.on("uiSpace", function(c) { + if (c.data.space == a.config.toolbarLocation) { + c.removeListener(); + a.toolbox = new z; + var d = CKEDITOR.tools.getNextId(), + b = ['\x3cspan id\x3d"', d, '" class\x3d"cke_voice_label"\x3e', a.lang.toolbar.toolbars, "\x3c/span\x3e", '\x3cspan id\x3d"' + a.ui.spaceId("toolbox") + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"', d, '" onmousedown\x3d"return false;"\x3e'], + d = !1 !== a.config.toolbarStartupExpanded, + e, k; + a.config.toolbarCanCollapse && a.elementMode != CKEDITOR.ELEMENT_MODE_INLINE && b.push('\x3cspan class\x3d"cke_toolbox_main"' + (d ? "\x3e" : ' style\x3d"display:none"\x3e')); + for (var q = a.toolbox.toolbars, n = D(a), g = n.length, l = 0; l < g; l++) { + var r, m = 0, + w, p = n[l], + v = "/" !== p && ("/" === n[l + 1] || l == g - 1), + x; + if (p) + if (e && (b.push("\x3c/span\x3e"), k = e = 0), "/" === p) b.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e'); + else { + x = p.items || p; + for (var y = 0; y < x.length; y++) { + var t = x[y], + A; + if (t) { + var B = function(c) { + c = c.render(a, b); + u = m.items.push(c) - 1; + 0 < u && (c.previous = m.items[u - 1], c.previous.next = c); + c.toolbar = m; + c.onkey = f; + c.onfocus = function() { + a.toolbox.focusCommandExecuted || a.focus() + } + }; + if (t.type == CKEDITOR.UI_SEPARATOR) k = + e && t; + else { + A = !1 !== t.canGroup; + if (!m) { + r = CKEDITOR.tools.getNextId(); + m = { + id: r, + items: [] + }; + w = p.name && (a.lang.toolbar.toolbarGroups[p.name] || p.name); + b.push('\x3cspan id\x3d"', r, '" class\x3d"cke_toolbar' + (v ? ' cke_toolbar_last"' : '"'), w ? ' aria-labelledby\x3d"' + r + '_label"' : "", ' role\x3d"toolbar"\x3e'); + w && b.push('\x3cspan id\x3d"', r, '_label" class\x3d"cke_voice_label"\x3e', w, "\x3c/span\x3e"); + b.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e'); + var u = q.push(m) - 1; + 0 < u && (m.previous = q[u - 1], m.previous.next = + m) + } + A ? e || (b.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'), e = 1) : e && (b.push("\x3c/span\x3e"), e = 0); + k && (B(k), k = 0); + B(t) + } + } + } + e && (b.push("\x3c/span\x3e"), k = e = 0); + m && b.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e') + } + } + a.config.toolbarCanCollapse && b.push("\x3c/span\x3e"); + if (a.config.toolbarCanCollapse && a.elementMode != CKEDITOR.ELEMENT_MODE_INLINE) { + var C = CKEDITOR.tools.addFunction(function() { + a.execCommand("toolbarCollapse") + }); + a.on("destroy", function() { + CKEDITOR.tools.removeFunction(C) + }); + a.addCommand("toolbarCollapse", { + readOnly: 1, + exec: function(b) { + var a = b.ui.space("toolbar_collapser"), + c = a.getPrevious(), + d = b.ui.space("contents"), + e = c.getParent(), + h = parseInt(d.$.style.height, 10), + g = e.$.offsetHeight, + f = a.hasClass("cke_toolbox_collapser_min"); + f ? (c.show(), a.removeClass("cke_toolbox_collapser_min"), a.setAttribute("title", b.lang.toolbar.toolbarCollapse)) : (c.hide(), a.addClass("cke_toolbox_collapser_min"), a.setAttribute("title", b.lang.toolbar.toolbarExpand)); + a.getFirst().setText(f ? "▲" : "◀"); + d.setStyle("height", + h - (e.$.offsetHeight - g) + "px"); + b.fire("resize", { + outerHeight: b.container.$.offsetHeight, + contentsHeight: d.$.offsetHeight, + outerWidth: b.container.$.offsetWidth + }) + }, + modes: { + wysiwyg: 1, + source: 1 + } + }); + a.setKeystroke(CKEDITOR.ALT + (CKEDITOR.env.ie || CKEDITOR.env.webkit ? 189 : 109), "toolbarCollapse"); + b.push('\x3ca title\x3d"' + (d ? a.lang.toolbar.toolbarCollapse : a.lang.toolbar.toolbarExpand) + '" id\x3d"' + a.ui.spaceId("toolbar_collapser") + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser'); + d || b.push(" cke_toolbox_collapser_min"); + b.push('" onclick\x3d"CKEDITOR.tools.callFunction(' + C + ')"\x3e', '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e', "\x3c/a\x3e") + } + b.push("\x3c/span\x3e"); + c.data.html += b.join("") + } + }); + a.on("destroy", function() { + if (this.toolbox) { + var a, d = 0, + b, e, f; + for (a = this.toolbox.toolbars; d < a.length; d++) + for (e = a[d].items, b = 0; b < e.length; b++) f = e[b], f.clickFn && CKEDITOR.tools.removeFunction(f.clickFn), f.keyDownFn && CKEDITOR.tools.removeFunction(f.keyDownFn) + } + }); + a.on("uiReady", function() { + var c = a.ui.space("toolbox"); + c && a.focusManager.add(c, + 1) + }); + a.addCommand("toolbarFocus", E); + a.setKeystroke(CKEDITOR.ALT + 121, "toolbarFocus"); + a.ui.add("-", CKEDITOR.UI_SEPARATOR, {}); + a.ui.addHandler(CKEDITOR.UI_SEPARATOR, { + create: function() { + return { + render: function(a, d) { + d.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e'); + return {} + } + } + } + }) + } + }); + CKEDITOR.ui.prototype.addToolbarGroup = function(a, d, f) { + var c = v(this.editor), + h = 0 === d, + b = { + name: a + }; + if (f) { + if (f = CKEDITOR.tools.search(c, function(a) { + return a.name == f + })) { + !f.groups && (f.groups = []); + if (d && + (d = CKEDITOR.tools.indexOf(f.groups, d), 0 <= d)) { + f.groups.splice(d + 1, 0, a); + return + } + h ? f.groups.splice(0, 0, a) : f.groups.push(a); + return + } + d = null + } + d && (d = CKEDITOR.tools.indexOf(c, function(a) { + return a.name == d + })); + h ? c.splice(0, 0, a) : "number" == typeof d ? c.splice(d + 1, 0, b) : c.push(a) + } + })(); + CKEDITOR.UI_SEPARATOR = "separator"; + CKEDITOR.config.toolbarLocation = "top"; + (function() { + function r(a, b, c) { + b.type || (b.type = "auto"); + if (c && !1 === a.fire("beforePaste", b) || !b.dataValue && b.dataTransfer.isEmpty()) return !1; + b.dataValue || (b.dataValue = ""); + if (CKEDITOR.env.gecko && "drop" == b.method && a.toolbox) a.once("afterPaste", function() { + a.toolbox.focus() + }); + return a.fire("paste", b) + } + + function x(a) { + function b() { + var b = a.editable(); + if (CKEDITOR.plugins.clipboard.isCustomCopyCutSupported) { + var c = function(b) { + a.getSelection().isCollapsed() || (a.readOnly && "cut" == b.name || p.initPasteDataTransfer(b, + a), b.data.preventDefault()) + }; + b.on("copy", c); + b.on("cut", c); + b.on("cut", function() { + a.readOnly || a.extractSelectedHtml() + }, null, null, 999) + } + b.on(p.mainPasteEvent, function(a) { + "beforepaste" == p.mainPasteEvent && m || k(a) + }); + "beforepaste" == p.mainPasteEvent && (b.on("paste", function(a) { + u || (g(), a.data.preventDefault(), k(a), e("paste")) + }), b.on("contextmenu", h, null, null, 0), b.on("beforepaste", function(a) { + !a.data || a.data.$.ctrlKey || a.data.$.shiftKey || h() + }, null, null, 0)); + b.on("beforecut", function() { + !m && f(a) + }); + var d; + b.attachListener(CKEDITOR.env.ie ? + b : a.document.getDocumentElement(), "mouseup", + function() { + d = setTimeout(function() { + t() + }, 0) + }); + a.on("destroy", function() { + clearTimeout(d) + }); + b.on("keyup", t) + } + + function c(b) { + return { + type: b, + canUndo: "cut" == b, + startDisabled: !0, + fakeKeystroke: "cut" == b ? CKEDITOR.CTRL + 88 : CKEDITOR.CTRL + 67, + exec: function() { + "cut" == this.type && f(); + var b; + var c = this.type; + if (CKEDITOR.env.ie) b = e(c); + else try { + b = a.document.$.execCommand(c, !1, null) + } catch (d) { + b = !1 + } + b || a.showNotification(a.lang.clipboard[this.type + "Error"]); + return b + } + } + } + + function d() { + return { + canUndo: !1, + async: !0, + fakeKeystroke: CKEDITOR.CTRL + 86, + exec: function(a, b) { + function c(b, h) { + h = "undefined" !== typeof h ? h : !0; + b ? (b.method = "paste", b.dataTransfer || (b.dataTransfer = p.initPasteDataTransfer()), r(a, b, h)) : e && !a._.forcePasteDialog && a.showNotification(n, "info", a.config.clipboard_notificationDuration); + a._.forcePasteDialog = !1; + a.fire("afterCommandExec", { + name: "paste", + command: d, + returnValue: !!b + }) + } + b = "undefined" !== typeof b && null !== b ? b : {}; + var d = this, + e = "undefined" !== typeof b.notification ? b.notification : !0, + h = b.type, + f = CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard, + a.getCommandKeystroke(this)), + n = "string" === typeof e ? e : a.lang.clipboard.pasteNotification.replace(/%1/, '\x3ckbd aria-label\x3d"' + f.aria + '"\x3e' + f.display + "\x3c/kbd\x3e"), + f = "string" === typeof b ? b : b.dataValue; + h && !0 !== a.config.forcePasteAsPlainText && "allow-word" !== a.config.forcePasteAsPlainText ? a._.nextPasteType = h : delete a._.nextPasteType; + "string" === typeof f ? c({ + dataValue: f + }) : a.getClipboardData(c) + } + } + } + + function g() { + u = 1; + setTimeout(function() { + u = 0 + }, 100) + } + + function h() { + m = 1; + setTimeout(function() { + m = 0 + }, 10) + } + + function e(b) { + var c = + a.document, + d = c.getBody(), + e = !1, + h = function() { + e = !0 + }; + d.on(b, h); + 7 < CKEDITOR.env.version ? c.$.execCommand(b) : c.$.selection.createRange().execCommand(b); + d.removeListener(b, h); + return e + } + + function f() { + if (CKEDITOR.env.ie && !CKEDITOR.env.quirks) { + var b = a.getSelection(), + c, d, e; + b.getType() == CKEDITOR.SELECTION_ELEMENT && (c = b.getSelectedElement()) && (d = b.getRanges()[0], e = a.document.createText(""), e.insertBefore(c), d.setStartBefore(e), d.setEndAfter(c), b.selectRanges([d]), setTimeout(function() { + c.getParent() && (e.remove(), b.selectElement(c)) + }, + 0)) + } + } + + function l(b, c) { + var d = a.document, + e = a.editable(), + h = function(a) { + a.cancel() + }, + f; + if (!d.getById("cke_pastebin")) { + var n = a.getSelection(), + g = n.createBookmarks(); + CKEDITOR.env.ie && n.root.fire("selectionchange"); + var k = new CKEDITOR.dom.element(!CKEDITOR.env.webkit && !e.is("body") || CKEDITOR.env.ie ? "div" : "body", d); + k.setAttributes({ + id: "cke_pastebin", + "data-cke-temp": "1" + }); + var l = 0, + d = d.getWindow(); + CKEDITOR.env.webkit ? (e.append(k), k.addClass("cke_editable"), e.is("body") || (l = "static" != e.getComputedStyle("position") ? + e : CKEDITOR.dom.element.get(e.$.offsetParent), l = l.getDocumentPosition().y)) : e.getAscendant(CKEDITOR.env.ie ? "body" : "html", 1).append(k); + k.setStyles({ + position: "absolute", + top: d.getScrollPosition().y - l + 10 + "px", + width: "1px", + height: Math.max(1, d.getViewPaneSize().height - 20) + "px", + overflow: "hidden", + margin: 0, + padding: 0 + }); + CKEDITOR.env.safari && k.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "text")); + (l = k.getParent().isReadOnly()) ? (k.setOpacity(0), k.setAttribute("contenteditable", !0)) : k.setStyle("ltr" == a.config.contentsLangDirection ? + "left" : "right", "-10000px"); + a.on("selectionChange", h, null, null, 0); + if (CKEDITOR.env.webkit || CKEDITOR.env.gecko) f = e.once("blur", h, null, null, -100); + l && k.focus(); + l = new CKEDITOR.dom.range(k); + l.selectNodeContents(k); + var t = l.select(); + CKEDITOR.env.ie && (f = e.once("blur", function() { + a.lockSelection(t) + })); + var q = CKEDITOR.document.getWindow().getScrollPosition().y; + setTimeout(function() { + CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = q); + f && f.removeListener(); + CKEDITOR.env.ie && e.focus(); + n.selectBookmarks(g); + k.remove(); + var b; + CKEDITOR.env.webkit && (b = k.getFirst()) && b.is && b.hasClass("Apple-style-span") && (k = b); + a.removeListener("selectionChange", h); + c(k.getHtml()) + }, 0) + } + } + + function y() { + if ("paste" == p.mainPasteEvent) return a.fire("beforePaste", { + type: "auto", + method: "paste" + }), !1; + a.focus(); + g(); + var b = a.focusManager; + b.lock(); + if (a.editable().fire(p.mainPasteEvent) && !e("paste")) return b.unlock(), !1; + b.unlock(); + return !0 + } + + function n(b) { + if ("wysiwyg" == a.mode) switch (b.data.keyCode) { + case CKEDITOR.CTRL + 86: + case CKEDITOR.SHIFT + 45: + b = + a.editable(); + g(); + "paste" == p.mainPasteEvent && b.fire("beforepaste"); + break; + case CKEDITOR.CTRL + 88: + case CKEDITOR.SHIFT + 46: + a.fire("saveSnapshot"), setTimeout(function() { + a.fire("saveSnapshot") + }, 50) + } + } + + function k(b) { + var c = { + type: "auto", + method: "paste", + dataTransfer: p.initPasteDataTransfer(b) + }; + c.dataTransfer.cacheData(); + var d = !1 !== a.fire("beforePaste", c); + d && p.canClipboardApiBeTrusted(c.dataTransfer, a) ? (b.data.preventDefault(), setTimeout(function() { + r(a, c) + }, 0)) : l(b, function(b) { + c.dataValue = b.replace(/]+data-cke-bookmark[^<]*?<\/span>/ig, + ""); + d && r(a, c) + }) + } + + function t() { + if ("wysiwyg" == a.mode) { + var b = q("paste"); + a.getCommand("cut").setState(q("cut")); + a.getCommand("copy").setState(q("copy")); + a.getCommand("paste").setState(b); + a.fire("pasteState", b) + } + } + + function q(b) { + if (v && b in { + paste: 1, + cut: 1 + }) return CKEDITOR.TRISTATE_DISABLED; + if ("paste" == b) return CKEDITOR.TRISTATE_OFF; + b = a.getSelection(); + var c = b.getRanges(); + return b.getType() == CKEDITOR.SELECTION_NONE || 1 == c.length && c[0].collapsed ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF + } + var p = CKEDITOR.plugins.clipboard, + m = 0, + u = 0, + v = 0; + (function() { + a.on("key", n); + a.on("contentDom", b); + a.on("selectionChange", function(a) { + v = a.data.selection.getRanges()[0].checkReadOnly(); + t() + }); + if (a.contextMenu) { + a.contextMenu.addListener(function(a, b) { + v = b.getRanges()[0].checkReadOnly(); + return { + cut: q("cut"), + copy: q("copy"), + paste: q("paste") + } + }); + var c = null; + a.on("menuShow", function() { + c && (c.removeListener(), c = null); + var b = a.contextMenu.findItemByCommandName("paste"); + b && b.element && (c = b.element.on("touchend", function() { + a._.forcePasteDialog = !0 + })) + }) + } + if (a.ui.addButton) a.once("instanceReady", + function() { + a._.pasteButtons && CKEDITOR.tools.array.forEach(a._.pasteButtons, function(b) { + if (b = a.ui.get(b)) + if (b = CKEDITOR.document.getById(b._.id)) b.on("touchend", function() { + a._.forcePasteDialog = !0 + }) + }) + }) + })(); + (function() { + function b(c, d, e, h, f) { + var n = a.lang.clipboard[d]; + a.addCommand(d, e); + a.ui.addButton && a.ui.addButton(c, { + label: n, + command: d, + toolbar: "clipboard," + h + }); + a.addMenuItems && a.addMenuItem(d, { + label: n, + command: d, + group: "clipboard", + order: f + }) + } + b("Cut", "cut", c("cut"), 10, 1); + b("Copy", "copy", c("copy"), 20, 4); + b("Paste", + "paste", d(), 30, 8); + a._.pasteButtons || (a._.pasteButtons = []); + a._.pasteButtons.push("Paste") + })(); + a.getClipboardData = function(b, c) { + function d(a) { + a.removeListener(); + a.cancel(); + c(a.data) + } + + function e(a) { + a.removeListener(); + a.cancel(); + c({ + type: f, + dataValue: a.data.dataValue, + dataTransfer: a.data.dataTransfer, + method: "paste" + }) + } + var h = !1, + f = "auto"; + c || (c = b, b = null); + a.on("beforePaste", function(a) { + a.removeListener(); + h = !0; + f = a.data.type + }, null, null, 1E3); + a.on("paste", d, null, null, 0); + !1 === y() && (a.removeListener("paste", d), a._.forcePasteDialog && + h && a.fire("pasteDialog") ? (a.on("pasteDialogCommit", e), a.on("dialogHide", function(a) { + a.removeListener(); + a.data.removeListener("pasteDialogCommit", e); + a.data._.committed || c(null) + })) : c(null)) + } + } + + function z(a) { + if (CKEDITOR.env.webkit) { + if (!a.match(/^[^<]*$/g) && !a.match(/^(
<\/div>|
[^<]*<\/div>)*$/gi)) return "html" + } else if (CKEDITOR.env.ie) { + if (!a.match(/^([^<]|)*$/gi) && !a.match(/^(

([^<]|)*<\/p>|(\r\n))*$/gi)) return "html" + } else if (CKEDITOR.env.gecko) { + if (!a.match(/^([^<]|)*$/gi)) return "html" + } else return "html"; + return "htmlifiedtext" + } + + function A(a, b) { + function c(a) { + return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", ~~(a / 2)) + (1 == a % 2 ? "\x3cbr\x3e" : "") + } + b = b.replace(/(?!\u3000)\s+/g, " ").replace(/> +/gi, "\x3cbr\x3e"); + b = b.replace(/<\/?[A-Z]+>/g, function(a) { + return a.toLowerCase() + }); + if (b.match(/^[^<]$/)) return b; + CKEDITOR.env.webkit && -1 < b.indexOf("\x3cdiv\x3e") && (b = b.replace(/^(

(
|)<\/div>)(?!$|(
(
|)<\/div>))/g, "\x3cbr\x3e").replace(/^(
(
|)<\/div>){2}(?!$)/g, "\x3cdiv\x3e\x3c/div\x3e"), + b.match(/
(
|)<\/div>/) && (b = "\x3cp\x3e" + b.replace(/(
(
|)<\/div>)+/g, function(a) { + return c(a.split("\x3c/div\x3e\x3cdiv\x3e").length + 1) + }) + "\x3c/p\x3e"), b = b.replace(/<\/div>
/g, "\x3cbr\x3e"), b = b.replace(/<\/?div>/g, "")); + CKEDITOR.env.gecko && a.enterMode != CKEDITOR.ENTER_BR && (CKEDITOR.env.gecko && (b = b.replace(/^

$/, "\x3cbr\x3e")), -1 < b.indexOf("\x3cbr\x3e\x3cbr\x3e") && (b = "\x3cp\x3e" + b.replace(/(
){2,}/g, function(a) { + return c(a.length / 4) + }) + "\x3c/p\x3e")); + return B(a, b) + } + + function C() { + function a() { + var a = {}, + b; + for (b in CKEDITOR.dtd) "$" != b.charAt(0) && "div" != b && "span" != b && (a[b] = 1); + return a + } + var b = {}; + return { + get: function(c) { + return "plain-text" == c ? b.plainText || (b.plainText = new CKEDITOR.filter("br")) : "semantic-content" == c ? ((c = b.semanticContent) || (c = new CKEDITOR.filter, c.allow({ + $1: { + elements: a(), + attributes: !0, + styles: !1, + classes: !1 + } + }), c = b.semanticContent = c), c) : c ? new CKEDITOR.filter(c) : null + } + } + } + + function w(a, b, c) { + b = CKEDITOR.htmlParser.fragment.fromHtml(b); + var d = new CKEDITOR.htmlParser.basicWriter; + c.applyTo(b, !0, !1, + a.activeEnterMode); + b.writeHtml(d); + return d.getHtml() + } + + function B(a, b) { + a.enterMode == CKEDITOR.ENTER_BR ? b = b.replace(/(<\/p>

)+/g, function(a) { + return CKEDITOR.tools.repeat("\x3cbr\x3e", a.length / 7 * 2) + }).replace(/<\/?p>/g, "") : a.enterMode == CKEDITOR.ENTER_DIV && (b = b.replace(/<(\/)?p>/g, "\x3c$1div\x3e")); + return b + } + + function D(a) { + a.data.preventDefault(); + a.data.$.dataTransfer.dropEffect = "none" + } + + function E(a) { + var b = CKEDITOR.plugins.clipboard; + a.on("contentDom", function() { + function c(b, c, e) { + c.select(); + r(a, { + dataTransfer: e, + method: "drop" + }, 1); + e.sourceEditor.fire("saveSnapshot"); + e.sourceEditor.editable().extractHtmlFromRange(b); + e.sourceEditor.getSelection().selectRanges([b]); + e.sourceEditor.fire("saveSnapshot") + } + + function d(c, e) { + c.select(); + r(a, { + dataTransfer: e, + method: "drop" + }, 1); + b.resetDragDataTransfer() + } + + function g(b, c, e) { + var d = { + $: b.data.$, + target: b.data.getTarget() + }; + c && (d.dragRange = c); + e && (d.dropRange = e); + !1 === a.fire(b.name, d) && b.data.preventDefault() + } + + function h(a) { + a.type != CKEDITOR.NODE_ELEMENT && (a = a.getParent()); + return a.getChildCount() + } + var e = a.editable(), + f = CKEDITOR.plugins.clipboard.getDropTarget(a), + l = a.ui.space("top"), + m = a.ui.space("bottom"); + b.preventDefaultDropOnElement(l); + b.preventDefaultDropOnElement(m); + e.attachListener(f, "dragstart", g); + e.attachListener(a, "dragstart", b.resetDragDataTransfer, b, null, 1); + e.attachListener(a, "dragstart", function(c) { + b.initDragDataTransfer(c, a) + }, null, null, 2); + e.attachListener(a, "dragstart", function() { + var c = b.dragRange = a.getSelection().getRanges()[0]; + CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (b.dragStartContainerChildCount = + c ? h(c.startContainer) : null, b.dragEndContainerChildCount = c ? h(c.endContainer) : null) + }, null, null, 100); + e.attachListener(f, "dragend", g); + e.attachListener(a, "dragend", b.initDragDataTransfer, b, null, 1); + e.attachListener(a, "dragend", b.resetDragDataTransfer, b, null, 100); + e.attachListener(f, "dragover", function(a) { + if (CKEDITOR.env.edge) a.data.preventDefault(); + else { + var b = a.data.getTarget(); + b && b.is && b.is("html") ? a.data.preventDefault() : CKEDITOR.env.ie && CKEDITOR.plugins.clipboard.isFileApiSupported && a.data.$.dataTransfer.types.contains("Files") && + a.data.preventDefault() + } + }); + e.attachListener(f, "drop", function(c) { + if (!c.data.$.defaultPrevented) { + c.data.preventDefault(); + var e = c.data.getTarget(); + if (!e.isReadOnly() || e.type == CKEDITOR.NODE_ELEMENT && e.is("html")) { + var e = b.getRangeAtDropPosition(c, a), + d = b.dragRange; + e && g(c, d, e) + } + } + }, null, null, 9999); + e.attachListener(a, "drop", b.initDragDataTransfer, b, null, 1); + e.attachListener(a, "drop", function(e) { + if (e = e.data) { + var h = e.dropRange, + f = e.dragRange, + g = e.dataTransfer; + g.getTransferType(a) == CKEDITOR.DATA_TRANSFER_INTERNAL ? + setTimeout(function() { + b.internalDrop(f, h, g, a) + }, 0) : g.getTransferType(a) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ? c(f, h, g) : d(h, g) + } + }, null, null, 9999) + }) + } + var m; + CKEDITOR.plugins.add("clipboard", { + requires: "dialog,notification,toolbar", + init: function(a) { + var b, c = C(); + a.config.forcePasteAsPlainText ? b = "plain-text" : a.config.pasteFilter ? b = a.config.pasteFilter : !CKEDITOR.env.webkit || "pasteFilter" in a.config || (b = "semantic-content"); + a.pasteFilter = c.get(b); + x(a); + E(a); + CKEDITOR.dialog.add("paste", CKEDITOR.getUrl(this.path + + "dialogs/paste.js")); + if (CKEDITOR.env.gecko) { + var d = ["image/png", "image/jpeg", "image/gif"], + g; + a.on("paste", function(b) { + var c = b.data, + f = c.dataTransfer; + if (!c.dataValue && "paste" == c.method && f && 1 == f.getFilesCount() && g != f.id && (f = f.getFile(0), -1 != CKEDITOR.tools.indexOf(d, f.type))) { + var l = new FileReader; + l.addEventListener("load", function() { + b.data.dataValue = '\x3cimg src\x3d"' + l.result + '" /\x3e'; + a.fire("paste", b.data) + }, !1); + l.addEventListener("abort", function() { + a.fire("paste", b.data) + }, !1); + l.addEventListener("error", + function() { + a.fire("paste", b.data) + }, !1); + l.readAsDataURL(f); + g = c.dataTransfer.id; + b.stop() + } + }, null, null, 1) + } + a.on("paste", function(b) { + b.data.dataTransfer || (b.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer); + if (!b.data.dataValue) { + var c = b.data.dataTransfer, + d = c.getData("text/html"); + if (d) b.data.dataValue = d, b.data.type = "html"; + else if (d = c.getData("text/plain")) b.data.dataValue = a.editable().transformPlainTextToHtml(d), b.data.type = "text" + } + }, null, null, 1); + a.on("paste", function(a) { + var b = a.data.dataValue, + c = CKEDITOR.dtd.$block; - 1 < b.indexOf("Apple-") && (b = b.replace(/ <\/span>/gi, " "), "html" != a.data.type && (b = b.replace(/]*>([^<]*)<\/span>/gi, function(a, b) { + return b.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;") + })), -1 < b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e') && (a.data.startsWithEOL = 1, a.data.preSniffing = "html", b = b.replace(/
/, "")), b = b.replace(/(<[^>]+) class="Apple-[^"]*"/gi, "$1")); + if (b.match(/^<[^<]+cke_(editable|contents)/i)) { + var d, g, n = new CKEDITOR.dom.element("div"); + for (n.setHtml(b); 1 == n.getChildCount() && (d = n.getFirst()) && d.type == CKEDITOR.NODE_ELEMENT && (d.hasClass("cke_editable") || d.hasClass("cke_contents"));) n = g = d; + g && (b = g.getHtml().replace(/
$/i, "")) + } + CKEDITOR.env.ie ? b = b.replace(/^ (?: |\r\n)?<(\w+)/g, function(b, d) { + return d.toLowerCase() in c ? (a.data.preSniffing = "html", "\x3c" + d) : b + }) : CKEDITOR.env.webkit ? b = b.replace(/<\/(\w+)>


<\/div>$/, function(b, d) { + return d in + c ? (a.data.endsWithEOL = 1, "\x3c/" + d + "\x3e") : b + }) : CKEDITOR.env.gecko && (b = b.replace(/(\s)
$/, "$1")); + a.data.dataValue = b + }, null, null, 3); + a.on("paste", function(b) { + b = b.data; + var d = a._.nextPasteType || b.type, + f = b.dataValue, + g, m = a.config.clipboard_defaultContentType || "html", + n = b.dataTransfer.getTransferType(a) == CKEDITOR.DATA_TRANSFER_EXTERNAL, + k = !0 === a.config.forcePasteAsPlainText; + g = "html" == d || "html" == b.preSniffing ? "html" : z(f); + delete a._.nextPasteType; + "htmlifiedtext" == g && (f = A(a.config, f)); + if ("text" == d && "html" == g) f = + w(a, f, c.get("plain-text")); + else if (n && a.pasteFilter && !b.dontFilter || k) f = w(a, f, a.pasteFilter); + b.startsWithEOL && (f = '\x3cbr data-cke-eol\x3d"1"\x3e' + f); + b.endsWithEOL && (f += '\x3cbr data-cke-eol\x3d"1"\x3e'); + "auto" == d && (d = "html" == g || "html" == m ? "html" : "text"); + b.type = d; + b.dataValue = f; + delete b.preSniffing; + delete b.startsWithEOL; + delete b.endsWithEOL + }, null, null, 6); + a.on("paste", function(b) { + b = b.data; + b.dataValue && (a.insertHtml(b.dataValue, b.type, b.range), setTimeout(function() { + a.fire("afterPaste") + }, 0)) + }, null, null, + 1E3); + a.on("pasteDialog", function(b) { + setTimeout(function() { + a.openDialog("paste", b.data) + }, 0) + }) + } + }); + CKEDITOR.plugins.clipboard = { + isCustomCopyCutSupported: (!CKEDITOR.env.ie || 16 <= CKEDITOR.env.version) && !CKEDITOR.env.iOS, + isCustomDataTypesSupported: !CKEDITOR.env.ie || 16 <= CKEDITOR.env.version, + isFileApiSupported: !CKEDITOR.env.ie || 9 < CKEDITOR.env.version, + mainPasteEvent: CKEDITOR.env.ie && !CKEDITOR.env.edge ? "beforepaste" : "paste", + addPasteButton: function(a, b, c) { + a.ui.addButton && (a.ui.addButton(b, c), a._.pasteButtons || + (a._.pasteButtons = []), a._.pasteButtons.push(b)) + }, + canClipboardApiBeTrusted: function(a, b) { + return a.getTransferType(b) != CKEDITOR.DATA_TRANSFER_EXTERNAL || CKEDITOR.env.chrome && !a.isEmpty() || CKEDITOR.env.gecko && (a.getData("text/html") || a.getFilesCount()) || CKEDITOR.env.safari && 603 <= CKEDITOR.env.version && !CKEDITOR.env.iOS || CKEDITOR.env.edge && 16 <= CKEDITOR.env.version ? !0 : !1 + }, + getDropTarget: function(a) { + var b = a.editable(); + return CKEDITOR.env.ie && 9 > CKEDITOR.env.version || b.isInline() ? b : a.document + }, + fixSplitNodesAfterDrop: function(a, + b, c, d) { + function g(a, c, d) { + var g = a; + g.type == CKEDITOR.NODE_TEXT && (g = a.getParent()); + if (g.equals(c) && d != c.getChildCount()) return a = b.startContainer.getChild(b.startOffset - 1), c = b.startContainer.getChild(b.startOffset), a && a.type == CKEDITOR.NODE_TEXT && c && c.type == CKEDITOR.NODE_TEXT && (d = a.getLength(), a.setText(a.getText() + c.getText()), c.remove(), b.setStart(a, d), b.collapse(!0)), !0 + } + var h = b.startContainer; + "number" == typeof d && "number" == typeof c && h.type == CKEDITOR.NODE_ELEMENT && (g(a.startContainer, h, c) || g(a.endContainer, + h, d)) + }, + isDropRangeAffectedByDragRange: function(a, b) { + var c = b.startContainer, + d = b.endOffset; + return a.endContainer.equals(c) && a.endOffset <= d || a.startContainer.getParent().equals(c) && a.startContainer.getIndex() < d || a.endContainer.getParent().equals(c) && a.endContainer.getIndex() < d ? !0 : !1 + }, + internalDrop: function(a, b, c, d) { + var g = CKEDITOR.plugins.clipboard, + h = d.editable(), + e, f; + d.fire("saveSnapshot"); + d.fire("lockSnapshot", { + dontUpdate: 1 + }); + CKEDITOR.env.ie && 10 > CKEDITOR.env.version && this.fixSplitNodesAfterDrop(a, b, g.dragStartContainerChildCount, + g.dragEndContainerChildCount); + (f = this.isDropRangeAffectedByDragRange(a, b)) || (e = a.createBookmark(!1)); + g = b.clone().createBookmark(!1); + f && (e = a.createBookmark(!1)); + a = e.startNode; + b = e.endNode; + f = g.startNode; + b && a.getPosition(f) & CKEDITOR.POSITION_PRECEDING && b.getPosition(f) & CKEDITOR.POSITION_FOLLOWING && f.insertBefore(a); + a = d.createRange(); + a.moveToBookmark(e); + h.extractHtmlFromRange(a, 1); + b = d.createRange(); + b.moveToBookmark(g); + r(d, { + dataTransfer: c, + method: "drop", + range: b + }, 1); + d.fire("unlockSnapshot") + }, + getRangeAtDropPosition: function(a, + b) { + var c = a.data.$, + d = c.clientX, + g = c.clientY, + h = b.getSelection(!0).getRanges()[0], + e = b.createRange(); + if (a.data.testRange) return a.data.testRange; + if (document.caretRangeFromPoint && b.document.$.caretRangeFromPoint(d, g)) c = b.document.$.caretRangeFromPoint(d, g), e.setStart(CKEDITOR.dom.node(c.startContainer), c.startOffset), e.collapse(!0); + else if (c.rangeParent) e.setStart(CKEDITOR.dom.node(c.rangeParent), c.rangeOffset), e.collapse(!0); + else { + if (CKEDITOR.env.ie && 8 < CKEDITOR.env.version && h && b.editable().hasFocus) return h; + if (document.body.createTextRange) { + b.focus(); + c = b.document.getBody().$.createTextRange(); + try { + for (var f = !1, l = 0; 20 > l && !f; l++) { + if (!f) try { + c.moveToPoint(d, g - l), f = !0 + } catch (m) {} + if (!f) try { + c.moveToPoint(d, g + l), f = !0 + } catch (n) {} + } + if (f) { + var k = "cke-temp-" + (new Date).getTime(); + c.pasteHTML('\x3cspan id\x3d"' + k + '"\x3e​\x3c/span\x3e'); + var t = b.document.getById(k); + e.moveToPosition(t, CKEDITOR.POSITION_BEFORE_START); + t.remove() + } else { + var q = b.document.$.elementFromPoint(d, g), + p = new CKEDITOR.dom.element(q), + r; + if (p.equals(b.editable()) || + "html" == p.getName()) return h && h.startContainer && !h.startContainer.equals(b.editable()) ? h : null; + r = p.getClientRect(); + d < r.left ? e.setStartAt(p, CKEDITOR.POSITION_AFTER_START) : e.setStartAt(p, CKEDITOR.POSITION_BEFORE_END); + e.collapse(!0) + } + } catch (u) { + return null + } + } else return null + } + return e + }, + initDragDataTransfer: function(a, b) { + var c = a.data.$ ? a.data.$.dataTransfer : null, + d = new this.dataTransfer(c, b); + "dragstart" === a.name && d.storeId(); + c ? this.dragData && d.id == this.dragData.id ? d = this.dragData : this.dragData = d : this.dragData ? + d = this.dragData : this.dragData = d; + a.data.dataTransfer = d + }, + resetDragDataTransfer: function() { + this.dragData = null + }, + initPasteDataTransfer: function(a, b) { + if (this.isCustomCopyCutSupported) { + if (a && a.data && a.data.$) { + var c = a.data.$.clipboardData, + d = new this.dataTransfer(c, b); + "copy" !== a.name && "cut" !== a.name || d.storeId(); + this.copyCutData && d.id == this.copyCutData.id ? (d = this.copyCutData, d.$ = c) : this.copyCutData = d; + return d + } + return new this.dataTransfer(null, b) + } + return new this.dataTransfer(CKEDITOR.env.edge && a && a.data.$ && + a.data.$.clipboardData || null, b) + }, + preventDefaultDropOnElement: function(a) { + a && a.on("dragover", D) + } + }; + m = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? "cke/id" : "Text"; + CKEDITOR.plugins.clipboard.dataTransfer = function(a, b) { + a && (this.$ = a); + this._ = { + metaRegExp: /^/i, + bodyRegExp: /([\s\S]*)<\/body>/i, + fragmentRegExp: /\x3c!--(?:Start|End)Fragment--\x3e/g, + data: {}, + files: [], + nativeHtmlCache: "", + normalizeType: function(a) { + a = a.toLowerCase(); + return "text" == a || "text/plain" == a ? "Text" : "url" == a ? + "URL" : a + } + }; + this._.fallbackDataTransfer = new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this); + this.id = this.getData(m); + this.id || (this.id = "Text" == m ? "" : "cke-" + CKEDITOR.tools.getUniqueId()); + b && (this.sourceEditor = b, this.setData("text/html", b.getSelectedHtml(1)), "Text" == m || this.getData("text/plain") || this.setData("text/plain", b.getSelection().getSelectedText())) + }; + CKEDITOR.DATA_TRANSFER_INTERNAL = 1; + CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2; + CKEDITOR.DATA_TRANSFER_EXTERNAL = 3; + CKEDITOR.plugins.clipboard.dataTransfer.prototype = { + getData: function(a, b) { + a = this._.normalizeType(a); + var c = "text/html" == a && b ? this._.nativeHtmlCache : this._.data[a]; + if (void 0 === c || null === c || "" === c) { + if (this._.fallbackDataTransfer.isRequired()) c = this._.fallbackDataTransfer.getData(a, b); + else try { + c = this.$.getData(a) || "" + } catch (d) { + c = "" + } + "text/html" != a || b || (c = this._stripHtml(c)) + } + "Text" == a && CKEDITOR.env.gecko && this.getFilesCount() && "file://" == c.substring(0, 7) && (c = ""); + if ("string" === typeof c) var g = c.indexOf("\x3c/html\x3e"), + c = -1 !== g ? c.substring(0, g + 7) : c; + return c + }, + setData: function(a, b) { + a = this._.normalizeType(a); + "text/html" == a ? (this._.data[a] = this._stripHtml(b), this._.nativeHtmlCache = b) : this._.data[a] = b; + if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "URL" == a || "Text" == a) + if ("Text" == m && "Text" == a && (this.id = b), this._.fallbackDataTransfer.isRequired()) this._.fallbackDataTransfer.setData(a, b); + else try { + this.$.setData(a, b) + } catch (c) {} + }, + storeId: function() { + "Text" !== m && this.setData(m, this.id) + }, + getTransferType: function(a) { + return this.sourceEditor ? this.sourceEditor == + a ? CKEDITOR.DATA_TRANSFER_INTERNAL : CKEDITOR.DATA_TRANSFER_CROSS_EDITORS : CKEDITOR.DATA_TRANSFER_EXTERNAL + }, + cacheData: function() { + function a(a) { + a = b._.normalizeType(a); + var c = b.getData(a); + "text/html" == a && (b._.nativeHtmlCache = b.getData(a, !0), c = b._stripHtml(c)); + c && (b._.data[a] = c) + } + if (this.$) { + var b = this, + c, d; + if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) { + if (this.$.types) + for (c = 0; c < this.$.types.length; c++) a(this.$.types[c]) + } else a("Text"), a("URL"); + d = this._getImageFromClipboard(); + if (this.$ && this.$.files || + d) { + this._.files = []; + if (this.$.files && this.$.files.length) + for (c = 0; c < this.$.files.length; c++) this._.files.push(this.$.files[c]); + 0 === this._.files.length && d && this._.files.push(d) + } + } + }, + getFilesCount: function() { + return this._.files.length ? this._.files.length : this.$ && this.$.files && this.$.files.length ? this.$.files.length : this._getImageFromClipboard() ? 1 : 0 + }, + getFile: function(a) { + return this._.files.length ? this._.files[a] : this.$ && this.$.files && this.$.files.length ? this.$.files[a] : 0 === a ? this._getImageFromClipboard() : + void 0 + }, + isEmpty: function() { + var a = {}, + b; + if (this.getFilesCount()) return !1; + CKEDITOR.tools.array.forEach(CKEDITOR.tools.objectKeys(this._.data), function(b) { + a[b] = 1 + }); + if (this.$) + if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) { + if (this.$.types) + for (var c = 0; c < this.$.types.length; c++) a[this.$.types[c]] = 1 + } else a.Text = 1, a.URL = 1; + "Text" != m && (a[m] = 0); + for (b in a) + if (a[b] && "" !== this.getData(b)) return !1; + return !0 + }, + _getImageFromClipboard: function() { + var a; + if (this.$ && this.$.items && this.$.items[0]) try { + if ((a = this.$.items[0].getAsFile()) && + a.type) return a + } catch (b) {} + }, + _stripHtml: function(a) { + if (a && a.length) { + a = a.replace(this._.metaRegExp, ""); + var b = this._.bodyRegExp.exec(a); + b && b.length && (a = b[1], a = a.replace(this._.fragmentRegExp, "")) + } + return a + } + }; + CKEDITOR.plugins.clipboard.fallbackDataTransfer = function(a) { + this._dataTransfer = a; + this._customDataFallbackType = "text/html" + }; + CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported = null; + CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes = []; + CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype = { + isRequired: function() { + var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer, + b = this._dataTransfer.$; + if (null === a._isCustomMimeTypeSupported) + if (b) { + a._isCustomMimeTypeSupported = !1; + if (CKEDITOR.env.edge && 17 <= CKEDITOR.env.version) return !0; + try { + b.setData("cke/mimetypetest", "cke test value"), a._isCustomMimeTypeSupported = "cke test value" === b.getData("cke/mimetypetest"), b.clearData("cke/mimetypetest") + } catch (c) {} + } else return !1; + return !a._isCustomMimeTypeSupported + }, + getData: function(a, b) { + var c = this._getData(this._customDataFallbackType, + !0); + if (b) return c; + var c = this._extractDataComment(c), + d = null, + d = a === this._customDataFallbackType ? c.content : c.data && c.data[a] ? c.data[a] : this._getData(a, !0); + return null !== d ? d : "" + }, + setData: function(a, b) { + var c = a === this._customDataFallbackType; + c && (b = this._applyDataComment(b, this._getFallbackTypeData())); + var d = b, + g = this._dataTransfer.$; + try { + g.setData(a, d), c && (this._dataTransfer._.nativeHtmlCache = d) + } catch (h) { + if (this._isUnsupportedMimeTypeError(h)) { + c = CKEDITOR.plugins.clipboard.fallbackDataTransfer; - 1 === CKEDITOR.tools.indexOf(c._customTypes, + a) && c._customTypes.push(a); + var c = this._getFallbackTypeContent(), + e = this._getFallbackTypeData(); + e[a] = d; + try { + d = this._applyDataComment(c, e), g.setData(this._customDataFallbackType, d), this._dataTransfer._.nativeHtmlCache = d + } catch (f) { + d = "" + } + } + } + return d + }, + _getData: function(a, b) { + var c = this._dataTransfer._.data; + if (!b && c[a]) return c[a]; + try { + return this._dataTransfer.$.getData(a) + } catch (d) { + return null + } + }, + _getFallbackTypeContent: function() { + var a = this._dataTransfer._.data[this._customDataFallbackType]; + a || (a = this._extractDataComment(this._getData(this._customDataFallbackType, + !0)).content); + return a + }, + _getFallbackTypeData: function() { + var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes, + b = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).data || {}, + c = this._dataTransfer._.data; + CKEDITOR.tools.array.forEach(a, function(a) { + void 0 !== c[a] ? b[a] = c[a] : void 0 !== b[a] && (b[a] = b[a]) + }, this); + return b + }, + _isUnsupportedMimeTypeError: function(a) { + return a.message && -1 !== a.message.search(/element not found/gi) + }, + _extractDataComment: function(a) { + var b = { + data: null, + content: a || + "" + }; + if (a && 16 < a.length) { + var c; + (c = /\x3c!--cke-data:(.*?)--\x3e/g.exec(a)) && c[1] && (b.data = JSON.parse(decodeURIComponent(c[1])), b.content = a.replace(c[0], "")) + } + return b + }, + _applyDataComment: function(a, b) { + var c = ""; + b && CKEDITOR.tools.objectKeys(b).length && (c = "\x3c!--cke-data:" + encodeURIComponent(JSON.stringify(b)) + "--\x3e"); + return c + (a && a.length ? a : "") + } + } + })(); + CKEDITOR.config.clipboard_notificationDuration = 1E4; + CKEDITOR.plugins.add("panelbutton", { + requires: "button", + onLoad: function() { + function e(c) { + var a = this._; + a.state != CKEDITOR.TRISTATE_DISABLED && (this.createPanel(c), a.on ? a.panel.hide() : a.panel.showBlock(this._.id, this.document.getById(this._.id), 4)) + } + CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass({ + base: CKEDITOR.ui.button, + $: function(c) { + var a = c.panel || {}; + delete c.panel; + this.base(c); + this.document = a.parent && a.parent.getDocument() || CKEDITOR.document; + a.block = { + attributes: a.attributes + }; + this.hasArrow = a.toolbarRelated = !0; + this.click = e; + this._ = { + panelDefinition: a + } + }, + statics: { + handler: { + create: function(c) { + return new CKEDITOR.ui.panelButton(c) + } + } + }, + proto: { + createPanel: function(c) { + var a = this._; + if (!a.panel) { + var f = this._.panelDefinition, + e = this._.panelDefinition.block, + g = f.parent || CKEDITOR.document.getBody(), + d = this._.panel = new CKEDITOR.ui.floatPanel(c, g, f), + f = d.addBlock(a.id, e), + b = this; + d.onShow = function() { + b.className && this.element.addClass(b.className + "_panel"); + b.setState(CKEDITOR.TRISTATE_ON); + a.on = 1; + b.editorFocus && c.focus(); + if (b.onOpen) b.onOpen() + }; + d.onHide = function(d) { + b.className && this.element.getFirst().removeClass(b.className + "_panel"); + b.setState(b.modes && b.modes[c.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED); + a.on = 0; + if (!d && b.onClose) b.onClose() + }; + d.onEscape = function() { + d.hide(1); + b.document.getById(a.id).focus() + }; + if (this.onBlock) this.onBlock(d, f); + f.onHide = function() { + a.on = 0; + b.setState(CKEDITOR.TRISTATE_OFF) + } + } + } + } + }) + }, + beforeInit: function(e) { + e.ui.addHandler(CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler) + } + }); + CKEDITOR.UI_PANELBUTTON = "panelbutton"; + (function() { + CKEDITOR.plugins.add("panel", { + beforeInit: function(a) { + a.ui.addHandler(CKEDITOR.UI_PANEL, CKEDITOR.ui.panel.handler) + } + }); + CKEDITOR.UI_PANEL = "panel"; + CKEDITOR.ui.panel = function(a, b) { + b && CKEDITOR.tools.extend(this, b); + CKEDITOR.tools.extend(this, { + className: "", + css: [] + }); + this.id = CKEDITOR.tools.getNextId(); + this.document = a; + this.isFramed = this.forceIFrame || this.css.length; + this._ = { + blocks: {} + } + }; + CKEDITOR.ui.panel.handler = { + create: function(a) { + return new CKEDITOR.ui.panel(a) + } + }; + var g = CKEDITOR.addTemplate("panel", + '\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'), + h = CKEDITOR.addTemplate("panel-frame", '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'), + k = CKEDITOR.addTemplate("panel-frame-inner", '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e'); + CKEDITOR.ui.panel.prototype = { + render: function(a, b) { + this.getHolderElement = function() { + var a = this._.holder; + if (!a) { + if (this.isFramed) { + var a = this.document.getById(this.id + "_frame"), + b = a.getParent(), + a = a.getFrameDocument(); + CKEDITOR.env.iOS && b.setStyles({ + overflow: "scroll", + "-webkit-overflow-scrolling": "touch" + }); + b = CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function() { + this.isLoaded = !0; + if (this.onLoad) this.onLoad() + }, this)); + a.write(k.output(CKEDITOR.tools.extend({ + css: CKEDITOR.tools.buildStyleHtml(this.css), + onload: "window.parent.CKEDITOR.tools.callFunction(" + + b + ");" + }, e))); + a.getWindow().$.CKEDITOR = CKEDITOR; + a.on("keydown", function(a) { + var b = a.data.getKeystroke(), + c = this.document.getById(this.id).getAttribute("dir"); + this._.onKeyDown && !1 === this._.onKeyDown(b) ? a.data.preventDefault() : (27 == b || b == ("rtl" == c ? 39 : 37)) && this.onEscape && !1 === this.onEscape(b) && a.data.preventDefault() + }, this); + a = a.getBody(); + a.unselectable(); + CKEDITOR.env.air && CKEDITOR.tools.callFunction(b) + } else a = this.document.getById(this.id); + this._.holder = a + } + return a + }; + var e = { + editorId: a.id, + id: this.id, + langCode: a.langCode, + dir: a.lang.dir, + cls: this.className, + frame: "", + env: CKEDITOR.env.cssClass, + "z-index": a.config.baseFloatZIndex + 1 + }; + if (this.isFramed) { + var d = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie ? "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())" : ""; + e.frame = h.output({ + id: this.id + "_frame", + src: d + }) + } + d = g.output(e); + b && b.push(d); + return d + }, + addBlock: function(a, b) { + b = this._.blocks[a] = b instanceof CKEDITOR.ui.panel.block ? b : new CKEDITOR.ui.panel.block(this.getHolderElement(), + b); + this._.currentBlock || this.showBlock(a); + return b + }, + getBlock: function(a) { + return this._.blocks[a] + }, + showBlock: function(a) { + a = this._.blocks[a]; + var b = this._.currentBlock, + e = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById(this.id + "_frame"); + b && b.hide(); + this._.currentBlock = a; + CKEDITOR.fire("ariaWidget", e); + a._.focusIndex = -1; + this._.onKeyDown = a.onKeyDown && CKEDITOR.tools.bind(a.onKeyDown, a); + a.show(); + return a + }, + destroy: function() { + this.element && this.element.remove() + } + }; + CKEDITOR.ui.panel.block = + CKEDITOR.tools.createClass({ + $: function(a, b) { + this.element = a.append(a.getDocument().createElement("div", { + attributes: { + tabindex: -1, + "class": "cke_panel_block" + }, + styles: { + display: "none" + } + })); + b && CKEDITOR.tools.extend(this, b); + this.element.setAttributes({ + role: this.attributes.role || "presentation", + "aria-label": this.attributes["aria-label"], + title: this.attributes.title || this.attributes["aria-label"] + }); + this.keys = {}; + this._.focusIndex = -1; + this.element.disableContextMenu() + }, + _: { + markItem: function(a) { + -1 != a && (a = this.element.getElementsByTag("a").getItem(this._.focusIndex = + a), CKEDITOR.env.webkit && a.getDocument().getWindow().focus(), a.focus(), this.onMark && this.onMark(a)) + }, + markFirstDisplayed: function(a) { + for (var b = function(a) { + return a.type == CKEDITOR.NODE_ELEMENT && "none" == a.getStyle("display") + }, e = this._.getItems(), d, c, f = e.count() - 1; 0 <= f; f--) + if (d = e.getItem(f), d.getAscendant(b) || (c = d, this._.focusIndex = f), "true" == d.getAttribute("aria-selected")) { + c = d; + this._.focusIndex = f; + break + } c && (a && a(), CKEDITOR.env.webkit && c.getDocument().getWindow().focus(), c.focus(), this.onMark && this.onMark(c)) + }, + getItems: function() { + return this.element.getElementsByTag("a") + } + }, + proto: { + show: function() { + this.element.setStyle("display", "") + }, + hide: function() { + this.onHide && !0 === this.onHide.call(this) || this.element.setStyle("display", "none") + }, + onKeyDown: function(a, b) { + var e = this.keys[a]; + switch (e) { + case "next": + for (var d = this._.focusIndex, e = this.element.getElementsByTag("a"), c; c = e.getItem(++d);) + if (c.getAttribute("_cke_focus") && c.$.offsetWidth) { + this._.focusIndex = d; + c.focus(); + break + } return c || b ? !1 : (this._.focusIndex = -1, this.onKeyDown(a, + 1)); + case "prev": + d = this._.focusIndex; + for (e = this.element.getElementsByTag("a"); 0 < d && (c = e.getItem(--d));) { + if (c.getAttribute("_cke_focus") && c.$.offsetWidth) { + this._.focusIndex = d; + c.focus(); + break + } + c = null + } + return c || b ? !1 : (this._.focusIndex = e.count(), this.onKeyDown(a, 1)); + case "click": + case "mouseup": + return d = this._.focusIndex, (c = 0 <= d && this.element.getElementsByTag("a").getItem(d)) && (c.$[e] ? c.$[e]() : c.$["on" + e]()), !1 + } + return !0 + } + } + }) + })(); + CKEDITOR.plugins.add("floatpanel", { + requires: "panel" + }); + (function() { + function v(a, b, c, m, h) { + h = CKEDITOR.tools.genKey(b.getUniqueId(), c.getUniqueId(), a.lang.dir, a.uiColor || "", m.css || "", h || ""); + var g = f[h]; + g || (g = f[h] = new CKEDITOR.ui.panel(b, m), g.element = c.append(CKEDITOR.dom.element.createFromHtml(g.render(a), b)), g.element.setStyles({ + display: "none", + position: "absolute" + })); + return g + } + var f = {}; + CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass({ + $: function(a, b, c, m) { + function h() { + e.hide() + } + c.forceIFrame = 1; + c.toolbarRelated && a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE && + (b = CKEDITOR.document.getById("cke_" + a.name)); + var g = b.getDocument(); + m = v(a, g, b, c, m || 0); + var n = m.element, + k = n.getFirst(), + e = this; + n.disableContextMenu(); + this.element = n; + this._ = { + editor: a, + panel: m, + parentElement: b, + definition: c, + document: g, + iframe: k, + children: [], + dir: a.lang.dir, + showBlockParams: null + }; + a.on("mode", h); + a.on("resize", h); + g.getWindow().on("resize", function() { + this.reposition() + }, this) + }, + proto: { + addBlock: function(a, b) { + return this._.panel.addBlock(a, b) + }, + addListBlock: function(a, b) { + return this._.panel.addListBlock(a, + b) + }, + getBlock: function(a) { + return this._.panel.getBlock(a) + }, + showBlock: function(a, b, c, m, h, g) { + var n = this._.panel, + k = n.showBlock(a); + this._.showBlockParams = [].slice.call(arguments); + this.allowBlur(!1); + var e = this._.editor.editable(); + this._.returnFocus = e.hasFocus ? e : new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement); + this._.hideTimeout = 0; + var l = this.element, + e = this._.iframe, + e = CKEDITOR.env.ie && !CKEDITOR.env.edge ? e : new CKEDITOR.dom.window(e.$.contentWindow), + f = l.getDocument(), + r = this._.parentElement.getPositionedAncestor(), + t = b.getDocumentPosition(f), + f = r ? r.getDocumentPosition(f) : { + x: 0, + y: 0 + }, + q = "rtl" == this._.dir, + d = t.x + (m || 0) - f.x, + p = t.y + (h || 0) - f.y; + !q || 1 != c && 4 != c ? q || 2 != c && 3 != c || (d += b.$.offsetWidth - 1) : d += b.$.offsetWidth; + if (3 == c || 4 == c) p += b.$.offsetHeight - 1; + this._.panel._.offsetParentId = b.getId(); + l.setStyles({ + top: p + "px", + left: 0, + display: "" + }); + l.setOpacity(0); + l.getFirst().removeStyle("width"); + this._.editor.focusManager.add(e); + this._.blurSet || (CKEDITOR.event.useCapture = !0, e.on("blur", function(a) { + function u() { + delete this._.returnFocus; + this.hide() + } + this.allowBlur() && a.data.getPhase() == CKEDITOR.EVENT_PHASE_AT_TARGET && this.visible && !this._.activeChild && (CKEDITOR.env.iOS ? this._.hideTimeout || (this._.hideTimeout = CKEDITOR.tools.setTimeout(u, 0, this)) : u.call(this)) + }, this), e.on("focus", function() { + this._.focused = !0; + this.hideChild(); + this.allowBlur(!0) + }, this), CKEDITOR.env.iOS && (e.on("touchstart", function() { + clearTimeout(this._.hideTimeout) + }, this), e.on("touchend", function() { + this._.hideTimeout = 0; + this.focus() + }, this)), CKEDITOR.event.useCapture = !1, + this._.blurSet = 1); + n.onEscape = CKEDITOR.tools.bind(function(a) { + if (this.onEscape && !1 === this.onEscape(a)) return !1 + }, this); + CKEDITOR.tools.setTimeout(function() { + var a = CKEDITOR.tools.bind(function() { + var a = l; + a.removeStyle("width"); + if (k.autoSize) { + var b = k.element.getDocument(), + b = (CKEDITOR.env.webkit || CKEDITOR.env.edge ? k.element : b.getBody()).$.scrollWidth; + CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetWidth || 0) - (a.$.clientWidth || 0) + 3); + a.setStyle("width", b + 10 + "px"); + b = k.element.$.scrollHeight; + CKEDITOR.env.ie && + CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetHeight || 0) - (a.$.clientHeight || 0) + 3); + a.setStyle("height", b + "px"); + n._.currentBlock.element.setStyle("display", "none").removeStyle("display") + } else a.removeStyle("height"); + q && (d -= l.$.offsetWidth); + l.setStyle("left", d + "px"); + var b = n.element.getWindow(), + a = l.$.getBoundingClientRect(), + b = b.getViewPaneSize(), + c = a.width || a.right - a.left, + e = a.height || a.bottom - a.top, + m = q ? a.right : b.width - a.left, + h = q ? b.width - a.right : a.left; + q ? m < c && (d = h > c ? d + c : b.width > c ? d - a.left : d - a.right + b.width) : + m < c && (d = h > c ? d - c : b.width > c ? d - a.right + b.width : d - a.left); + c = a.top; + b.height - a.top < e && (p = c > e ? p - e : b.height > e ? p - a.bottom + b.height : p - a.top); + CKEDITOR.env.ie && (b = a = new CKEDITOR.dom.element(l.$.offsetParent), "html" == b.getName() && (b = b.getDocument().getBody()), "rtl" == b.getComputedStyle("direction") && (d = CKEDITOR.env.ie8Compat ? d - 2 * l.getDocument().getDocumentElement().$.scrollLeft : d - (a.$.scrollWidth - a.$.clientWidth))); + var a = l.getFirst(), + f; + (f = a.getCustomData("activePanel")) && f.onHide && f.onHide.call(this, 1); + a.setCustomData("activePanel", + this); + l.setStyles({ + top: p + "px", + left: d + "px" + }); + l.setOpacity(1); + g && g() + }, this); + n.isLoaded ? a() : n.onLoad = a; + CKEDITOR.tools.setTimeout(function() { + var a = CKEDITOR.env.webkit && CKEDITOR.document.getWindow().getScrollPosition().y; + this.focus(); + k.element.focus(); + CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = a); + this.allowBlur(!0); + CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(function() { + k.markFirstDisplayed ? k.markFirstDisplayed() : k._.markFirstDisplayed() + }, 0) : k.markFirstDisplayed ? k.markFirstDisplayed() : + k._.markFirstDisplayed(); + this._.editor.fire("panelShow", this) + }, 0, this) + }, CKEDITOR.env.air ? 200 : 0, this); + this.visible = 1; + this.onShow && this.onShow.call(this) + }, + reposition: function() { + var a = this._.showBlockParams; + this.visible && this._.showBlockParams && (this.hide(), this.showBlock.apply(this, a)) + }, + focus: function() { + if (CKEDITOR.env.webkit) { + var a = CKEDITOR.document.getActive(); + a && !a.equals(this._.iframe) && a.$.blur() + }(this._.lastFocused || this._.iframe.getFrameDocument().getWindow()).focus() + }, + blur: function() { + var a = + this._.iframe.getFrameDocument().getActive(); + a && a.is("a") && (this._.lastFocused = a) + }, + hide: function(a) { + if (this.visible && (!this.onHide || !0 !== this.onHide.call(this))) { + this.hideChild(); + CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur(); + this.element.setStyle("display", "none"); + this.visible = 0; + this.element.getFirst().removeCustomData("activePanel"); + if (a = a && this._.returnFocus) CKEDITOR.env.webkit && a.type && a.getWindow().$.focus(), a.focus(); + delete this._.lastFocused; + this._.showBlockParams = + null; + this._.editor.fire("panelHide", this) + } + }, + allowBlur: function(a) { + var b = this._.panel; + void 0 !== a && (b.allowBlur = a); + return b.allowBlur + }, + showAsChild: function(a, b, c, f, h, g) { + if (this._.activeChild != a || a._.panel._.offsetParentId != c.getId()) this.hideChild(), a.onHide = CKEDITOR.tools.bind(function() { + CKEDITOR.tools.setTimeout(function() { + this._.focused || this.hide() + }, 0, this) + }, this), this._.activeChild = a, this._.focused = !1, a.showBlock(b, c, f, h, g), this.blur(), (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) && setTimeout(function() { + a.element.getChild(0).$.style.cssText += + "" + }, 100) + }, + hideChild: function(a) { + var b = this._.activeChild; + b && (delete b.onHide, delete this._.activeChild, b.hide(), a && this.focus()) + } + } + }); + CKEDITOR.on("instanceDestroyed", function() { + var a = CKEDITOR.tools.isEmpty(CKEDITOR.instances), + b; + for (b in f) { + var c = f[b]; + a ? c.destroy() : c.element.hide() + } + a && (f = {}) + }) + })(); + CKEDITOR.plugins.add("colorbutton", { + requires: "panelbutton,floatpanel", + init: function(e) { + function t(a, d, g, r, k) { + var p = new CKEDITOR.style(l["colorButton_" + d + "Style"]), + m = CKEDITOR.tools.getNextId() + "_colorBox", + q; + k = k || {}; + e.ui.add(a, CKEDITOR.UI_PANELBUTTON, { + label: g, + title: g, + modes: { + wysiwyg: 1 + }, + editorFocus: 0, + toolbar: "colors," + r, + allowedContent: p, + requiredContent: p, + contentTransformations: k.contentTransformations, + panel: { + css: CKEDITOR.skin.getPath("editor"), + attributes: { + role: "listbox", + "aria-label": h.panelTitle + } + }, + onBlock: function(a, + b) { + q = b; + b.autoSize = !0; + b.element.addClass("cke_colorblock"); + b.element.setHtml(y(a, d, m)); + b.element.getDocument().getBody().setStyle("overflow", "hidden"); + CKEDITOR.ui.fire("ready", this); + var c = b.keys, + f = "rtl" == e.lang.dir; + c[f ? 37 : 39] = "next"; + c[40] = "next"; + c[9] = "next"; + c[f ? 39 : 37] = "prev"; + c[38] = "prev"; + c[CKEDITOR.SHIFT + 9] = "prev"; + c[32] = "click" + }, + refresh: function() { + e.activeFilter.check(p) || this.setState(CKEDITOR.TRISTATE_DISABLED) + }, + onOpen: function() { + var a = e.getSelection(), + b = a && a.getStartElement(), + c = e.elementPath(b); + if (c) { + b = c.block || c.blockLimit || e.document.getBody(); + do c = b && b.getComputedStyle("back" == d ? "background-color" : "color") || "transparent"; while ("back" == d && "transparent" == c && b && (b = b.getParent())); + c && "transparent" != c || (c = "#ffffff"); + !1 !== l.colorButton_enableAutomatic && this._.panel._.iframe.getFrameDocument().getById(m).setStyle("background-color", c); + if (b = a && a.getRanges()[0]) { + for (var a = new CKEDITOR.dom.walker(b), f = b.collapsed ? b.startContainer : a.next(), b = ""; f;) { + f.type !== CKEDITOR.NODE_ELEMENT && (f = f.getParent()); + f = u(f.getComputedStyle("back" == d ? "background-color" : "color")); + b = b || f; + if (b !== f) { + b = ""; + break + } + f = a.next() + } + a = b; + b = q._.getItems(); + for (f = 0; f < b.count(); f++) { + var g = b.getItem(f); + g.removeAttribute("aria-selected"); + a && a == u(g.getAttribute("data-value")) && g.setAttribute("aria-selected", !0) + } + } + return c + } + } + }) + } + + function y(a, d, g) { + a = []; + var r = l.colorButton_colors.split(","), + k = l.colorButton_colorsPerRow || 6, + p = e.plugins.colordialog && !1 !== l.colorButton_enableMore, + m = r.length + (p ? 2 : 1), + q = CKEDITOR.tools.addFunction(function(a, b) { + function c(a) { + var d = + l["colorButton_" + b + "Style"]; + e.removeStyle(new CKEDITOR.style(d, { + color: "inherit" + })); + d.childRule = "back" == b ? function(a) { + return v(a) + } : function(a) { + return !(a.is("a") || a.getElementsByTag("a").count()) || v(a) + }; + e.focus(); + a && e.applyStyle(new CKEDITOR.style(d, { + color: a + })); + e.fire("saveSnapshot") + } + e.focus(); + e.fire("saveSnapshot"); + if ("?" == a) e.getColorFromDialog(function(a) { + if (a) return c(a) + }); + else return c(a) + }); + !1 !== l.colorButton_enableAutomatic && a.push('\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"', + h.auto, '" onclick\x3d"CKEDITOR.tools.callFunction(', q, ",null,'", d, "');return false;\" href\x3d\"javascript:void('", h.auto, '\')" role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"', m, '"\x3e\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctr\x3e\x3ctd colspan\x3d"' + k + '" align\x3d"center"\x3e\x3cspan class\x3d"cke_colorbox" id\x3d"', g, '"\x3e\x3c/span\x3e', h.auto, "\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/a\x3e"); + a.push('\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e'); + for (g = 0; g < r.length; g++) { + 0 === g % k && a.push("\x3c/tr\x3e\x3ctr\x3e"); + var n = r[g].split("/"), + b = n[0], + c = n[1] || b; + n[1] ? n = b : (b = "#" + b.replace(/^(.)(.)(.)$/, "$1$1$2$2$3$3"), n = e.lang.colorbutton.colors[c] || c); + a.push('\x3ctd\x3e\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"', n, '" onclick\x3d"CKEDITOR.tools.callFunction(', q, ",'", b, "','", d, "'); return false;\" href\x3d\"javascript:void('", n, '\')" data-value\x3d"' + c + '" role\x3d"option" aria-posinset\x3d"', g + 2, '" aria-setsize\x3d"', m, '"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#', + c, '"\x3e\x3c/span\x3e\x3c/a\x3e\x3c/td\x3e') + } + p && a.push('\x3c/tr\x3e\x3ctr\x3e\x3ctd colspan\x3d"' + k + '" align\x3d"center"\x3e\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"', h.more, '" onclick\x3d"CKEDITOR.tools.callFunction(', q, ",'?','", d, "');return false;\" href\x3d\"javascript:void('", h.more, "')\"", ' role\x3d"option" aria-posinset\x3d"', m, '" aria-setsize\x3d"', m, '"\x3e', h.more, "\x3c/a\x3e\x3c/td\x3e"); + a.push("\x3c/tr\x3e\x3c/table\x3e"); + return a.join("") + } + + function v(a) { + return "false" == + a.getAttribute("contentEditable") || a.getAttribute("data-nostyle") + } + + function u(a) { + return CKEDITOR.tools.normalizeHex("#" + CKEDITOR.tools.convertRgbToHex(a || "")).replace(/#/g, "") + } + var l = e.config, + h = e.lang.colorbutton; + if (!CKEDITOR.env.hc) { + t("TextColor", "fore", h.textColorTitle, 10, { + contentTransformations: [ + [{ + element: "font", + check: "span{color}", + left: function(a) { + return !!a.attributes.color + }, + right: function(a) { + a.name = "span"; + a.attributes.color && (a.styles.color = a.attributes.color); + delete a.attributes.color + } + }] + ] + }); + var w = {}, + x = e.config.colorButton_normalizeBackground; + if (void 0 === x || x) w.contentTransformations = [ + [{ + element: "span", + left: function(a) { + var d = CKEDITOR.tools; + if ("span" != a.name || !a.styles || !a.styles.background) return !1; + a = d.style.parse.background(a.styles.background); + return a.color && 1 === d.objectKeys(a).length + }, + right: function(a) { + var d = (new CKEDITOR.style(e.config.colorButton_backStyle, { + color: a.styles.background + })).getDefinition(); + a.name = d.element; + a.styles = d.styles; + a.attributes = d.attributes || {}; + return a + } + }] + ]; + t("BGColor", + "back", h.bgColorTitle, 20, w) + } + } + }); + CKEDITOR.config.colorButton_colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000"; + CKEDITOR.config.colorButton_foreStyle = { + element: "span", + styles: { + color: "#(color)" + }, + overrides: [{ + element: "font", + attributes: { + color: null + } + }] + }; + CKEDITOR.config.colorButton_backStyle = { + element: "span", + styles: { + "background-color": "#(color)" + } + }; + CKEDITOR.plugins.colordialog = { + requires: "dialog", + init: function(b) { + var d = new CKEDITOR.dialogCommand("colordialog"); + d.editorFocus = !1; + b.addCommand("colordialog", d); + CKEDITOR.dialog.add("colordialog", this.path + "dialogs/colordialog.js"); + b.getColorFromDialog = function(d, g) { + var c, f, e; + c = function(a) { + f(this); + a = "ok" == a.name ? this.getValueOf("picker", "selectedColor") : null; + /^[0-9a-f]{3}([0-9a-f]{3})?$/i.test(a) && (a = "#" + a); + d.call(g, a) + }; + f = function(a) { + a.removeListener("ok", c); + a.removeListener("cancel", c) + }; + e = function(a) { + a.on("ok", + c); + a.on("cancel", c) + }; + b.execCommand("colordialog"); + if (b._.storedDialogs && b._.storedDialogs.colordialog) e(b._.storedDialogs.colordialog); + else CKEDITOR.on("dialogDefinition", function(a) { + if ("colordialog" == a.data.name) { + var b = a.data.definition; + a.removeListener(); + b.onLoad = CKEDITOR.tools.override(b.onLoad, function(a) { + return function() { + e(this); + b.onLoad = a; + "function" == typeof a && a.call(this) + } + }) + } + }) + } + } + }; + CKEDITOR.plugins.add("colordialog", CKEDITOR.plugins.colordialog); + (function() { + CKEDITOR.plugins.add("templates", { + requires: "dialog", + init: function(a) { + CKEDITOR.dialog.add("templates", CKEDITOR.getUrl(this.path + "dialogs/templates.js")); + a.addCommand("templates", new CKEDITOR.dialogCommand("templates")); + a.ui.addButton && a.ui.addButton("Templates", { + label: a.lang.templates.button, + command: "templates", + toolbar: "doctools,10" + }) + } + }); + var c = {}, + f = {}; + CKEDITOR.addTemplates = function(a, d) { + c[a] = d + }; + CKEDITOR.getTemplates = function(a) { + return c[a] + }; + CKEDITOR.loadTemplates = function(a, d) { + for (var e = [], b = 0, c = a.length; b < c; b++) f[a[b]] || (e.push(a[b]), f[a[b]] = 1); + e.length ? CKEDITOR.scriptLoader.load(e, d) : setTimeout(d, 0) + } + })(); + CKEDITOR.config.templates_files = [CKEDITOR.getUrl("plugins/templates/templates/default.js")]; + CKEDITOR.config.templates_replaceContent = !0; + CKEDITOR.plugins.add("menu", { + requires: "floatpanel", + beforeInit: function(l) { + for (var h = l.config.menu_groups.split(","), r = l._.menuGroups = {}, t = l._.menuItems = {}, n = 0; n < h.length; n++) r[h[n]] = n + 1; + l.addMenuGroup = function(a, b) { + r[a] = b || 100 + }; + l.addMenuItem = function(a, b) { + r[b.group] && (t[a] = new CKEDITOR.menuItem(this, a, b)) + }; + l.addMenuItems = function(a) { + for (var b in a) this.addMenuItem(b, a[b]) + }; + l.getMenuItem = function(a) { + return t[a] + }; + l.removeMenuItem = function(a) { + delete t[a] + } + } + }); + (function() { + function l(a) { + a.sort(function(a, d) { + return a.group < d.group ? -1 : a.group > d.group ? 1 : a.order < d.order ? -1 : a.order > d.order ? 1 : 0 + }) + } + var h = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{label}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"'; + CKEDITOR.env.gecko && CKEDITOR.env.mac && (h += ' onkeypress\x3d"return false;"'); + CKEDITOR.env.gecko && (h += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"'); + var h = h + (' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" ' + (CKEDITOR.env.ie ? 'onclick\x3d"return false;" onmouseup' : "onclick") + '\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e'), + r = CKEDITOR.addTemplate("menuItem", + h + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e'), + t = CKEDITOR.addTemplate("menuArrow", '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'), + n = CKEDITOR.addTemplate("menuShortcut", '\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e'); + CKEDITOR.menu = CKEDITOR.tools.createClass({ + $: function(a, b) { + b = this._.definition = b || {}; + this.id = CKEDITOR.tools.getNextId(); + this.editor = a; + this.items = []; + this._.listeners = []; + this._.level = b.level || 1; + var d = CKEDITOR.tools.extend({}, b.panel, { + css: [CKEDITOR.skin.getPath("editor")], + level: this._.level - 1, + block: {} + }), + m = d.block.attributes = d.attributes || {}; + !m.role && (m.role = "menu"); + this._.panelDefinition = + d + }, + _: { + onShow: function() { + var a = this.editor.getSelection(), + b = a && a.getStartElement(), + d = this.editor.elementPath(), + m = this._.listeners; + this.removeAll(); + for (var g = 0; g < m.length; g++) { + var k = m[g](b, a, d); + if (k) + for (var e in k) { + var f = this.editor.getMenuItem(e); + !f || f.command && !this.editor.getCommand(f.command).state || (f.state = k[e], this.add(f)) + } + } + }, + onClick: function(a) { + this.hide(); + if (a.onClick) a.onClick(); + else a.command && this.editor.execCommand(a.command) + }, + onEscape: function(a) { + var b = this.parent; + b ? b._.panel.hideChild(1) : + 27 == a && this.hide(1); + return !1 + }, + onHide: function() { + this.onHide && this.onHide() + }, + showSubMenu: function(a) { + var b = this._.subMenu, + d = this.items[a]; + if (d = d.getItems && d.getItems()) { + b ? b.removeAll() : (b = this._.subMenu = new CKEDITOR.menu(this.editor, CKEDITOR.tools.extend({}, this._.definition, { + level: this._.level + 1 + }, !0)), b.parent = this, b._.onClick = CKEDITOR.tools.bind(this._.onClick, this)); + for (var m in d) { + var g = this.editor.getMenuItem(m); + g && (g.state = d[m], b.add(g)) + } + var k = this._.panel.getBlock(this.id).element.getDocument().getById(this.id + + String(a)); + setTimeout(function() { + b.show(k, 2) + }, 0) + } else this._.panel.hideChild(1) + } + }, + proto: { + add: function(a) { + a.order || (a.order = this.items.length); + this.items.push(a) + }, + removeAll: function() { + this.items = [] + }, + show: function(a, b, d, m) { + if (!this.parent && (this._.onShow(), !this.items.length)) return; + b = b || ("rtl" == this.editor.lang.dir ? 2 : 1); + var g = this.items, + k = this.editor, + e = this._.panel, + f = this._.element; + if (!e) { + e = this._.panel = new CKEDITOR.ui.floatPanel(this.editor, CKEDITOR.document.getBody(), this._.panelDefinition, this._.level); + e.onEscape = CKEDITOR.tools.bind(function(a) { + if (!1 === this._.onEscape(a)) return !1 + }, this); + e.onShow = function() { + e._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all") + }; + e.onHide = CKEDITOR.tools.bind(function() { + this._.onHide && this._.onHide() + }, this); + f = e.addBlock(this.id, this._.panelDefinition.block); + f.autoSize = !0; + var c = f.keys; + c[40] = "next"; + c[9] = "next"; + c[38] = "prev"; + c[CKEDITOR.SHIFT + 9] = "prev"; + c["rtl" == k.lang.dir ? 37 : 39] = CKEDITOR.env.ie ? "mouseup" : "click"; + c[32] = CKEDITOR.env.ie ? "mouseup" : + "click"; + CKEDITOR.env.ie && (c[13] = "mouseup"); + f = this._.element = f.element; + c = f.getDocument(); + c.getBody().setStyle("overflow", "hidden"); + c.getElementsByTag("html").getItem(0).setStyle("overflow", "hidden"); + this._.itemOverFn = CKEDITOR.tools.addFunction(function(a) { + clearTimeout(this._.showSubTimeout); + this._.showSubTimeout = CKEDITOR.tools.setTimeout(this._.showSubMenu, k.config.menu_subMenuDelay || 400, this, [a]) + }, this); + this._.itemOutFn = CKEDITOR.tools.addFunction(function() { + clearTimeout(this._.showSubTimeout) + }, this); + this._.itemClickFn = CKEDITOR.tools.addFunction(function(a) { + var b = this.items[a]; + if (b.state == CKEDITOR.TRISTATE_DISABLED) this.hide(1); + else if (b.getItems) this._.showSubMenu(a); + else this._.onClick(b) + }, this) + } + l(g); + for (var c = k.elementPath(), c = ['\x3cdiv class\x3d"cke_menu' + (c && c.direction() != k.lang.dir ? " cke_mixed_dir_content" : "") + '" role\x3d"presentation"\x3e'], h = g.length, n = h && g[0].group, q = 0; q < h; q++) { + var p = g[q]; + n != p.group && (c.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'), + n = p.group); + p.render(this, q, c) + } + c.push("\x3c/div\x3e"); + f.setHtml(c.join("")); + CKEDITOR.ui.fire("ready", this); + this.parent ? this.parent._.panel.showAsChild(e, this.id, a, b, d, m) : e.showBlock(this.id, a, b, d, m); + k.fire("menuShow", [e]) + }, + addListener: function(a) { + this._.listeners.push(a) + }, + hide: function(a) { + this._.onHide && this._.onHide(); + this._.panel && this._.panel.hide(a) + }, + findItemByCommandName: function(a) { + var b = CKEDITOR.tools.array.filter(this.items, function(b) { + return a === b.command + }); + return b.length ? (b = b[0], { + item: b, + element: this._.element.findOne("." + b.className) + }) : null + } + } + }); + CKEDITOR.menuItem = CKEDITOR.tools.createClass({ + $: function(a, b, d) { + CKEDITOR.tools.extend(this, d, { + order: 0, + className: "cke_menubutton__" + b + }); + this.group = a._.menuGroups[this.group]; + this.editor = a; + this.name = b + }, + proto: { + render: function(a, b, d) { + var h = a.id + String(b), + g = "undefined" == typeof this.state ? CKEDITOR.TRISTATE_OFF : this.state, + k = "", + e = this.editor, + f, c, l = g == CKEDITOR.TRISTATE_ON ? "on" : g == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off"; + this.role in { + menuitemcheckbox: 1, + menuitemradio: 1 + } && (k = ' aria-checked\x3d"' + (g == CKEDITOR.TRISTATE_ON ? "true" : "false") + '"'); + var u = this.getItems, + q = "\x26#" + ("rtl" == this.editor.lang.dir ? "9668" : "9658") + ";", + p = this.name; + this.icon && !/\./.test(this.icon) && (p = this.icon); + this.command && (f = e.getCommand(this.command), (f = e.getCommandKeystroke(f)) && (c = CKEDITOR.tools.keystrokeToString(e.lang.common.keyboard, f))); + a = { + id: h, + name: this.name, + iconName: p, + label: this.label, + cls: this.className || "", + state: l, + hasPopup: u ? "true" : "false", + disabled: g == CKEDITOR.TRISTATE_DISABLED, + title: this.label + (c ? " (" + c.display + ")" : ""), + ariaShortcut: c ? e.lang.common.keyboardShortcut + " " + c.aria : "", + href: "javascript:void('" + (this.label || "").replace("'") + "')", + hoverFn: a._.itemOverFn, + moveOutFn: a._.itemOutFn, + clickFn: a._.itemClickFn, + index: b, + iconStyle: CKEDITOR.skin.getIconStyle(p, "rtl" == this.editor.lang.dir, p == this.icon ? null : this.icon, this.iconOffset), + shortcutHtml: c ? n.output({ + shortcut: c.display + }) : "", + arrowHtml: u ? t.output({ + label: q + }) : "", + role: this.role ? this.role : "menuitem", + ariaChecked: k + }; + r.output(a, d) + } + } + }) + })(); + CKEDITOR.config.menu_groups = "clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div"; + CKEDITOR.plugins.add("contextmenu", { + requires: "menu", + onLoad: function() { + CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass({ + base: CKEDITOR.menu, + $: function(a) { + this.base.call(this, a, { + panel: { + className: "cke_menu_panel", + attributes: { + "aria-label": a.lang.contextmenu.options + } + } + }) + }, + proto: { + addTarget: function(a, e) { + a.on("contextmenu", function(a) { + a = a.data; + var c = CKEDITOR.env.webkit ? f : CKEDITOR.env.mac ? a.$.metaKey : a.$.ctrlKey; + if (!e || !c) { + a.preventDefault(); + if (CKEDITOR.env.mac && CKEDITOR.env.webkit) { + var c = this.editor, + b = (new CKEDITOR.dom.elementPath(a.getTarget(), c.editable())).contains(function(a) { + return a.hasAttribute("contenteditable") + }, !0); + b && "false" == b.getAttribute("contenteditable") && c.getSelection().fake(b) + } + var b = a.getTarget().getDocument(), + d = a.getTarget().getDocument().getDocumentElement(), + c = !b.equals(CKEDITOR.document), + b = b.getWindow().getScrollPosition(), + g = c ? a.$.clientX : a.$.pageX || b.x + a.$.clientX, + h = c ? a.$.clientY : a.$.pageY || b.y + a.$.clientY; + CKEDITOR.tools.setTimeout(function() { + this.open(d, null, g, h) + }, CKEDITOR.env.ie ? + 200 : 0, this) + } + }, this); + if (CKEDITOR.env.webkit) { + var f, d = function() { + f = 0 + }; + a.on("keydown", function(a) { + f = CKEDITOR.env.mac ? a.data.$.metaKey : a.data.$.ctrlKey + }); + a.on("keyup", d); + a.on("contextmenu", d) + } + }, + open: function(a, e, f, d) { + !1 !== this.editor.config.enableContextMenu && (this.editor.focus(), a = a || CKEDITOR.document.getDocumentElement(), this.editor.selectionChange(1), this.show(a, e, f, d)) + } + } + }) + }, + beforeInit: function(a) { + var e = a.contextMenu = new CKEDITOR.plugins.contextMenu(a); + a.on("contentDom", function() { + e.addTarget(a.editable(), + !1 !== a.config.browserContextMenuOnCtrl) + }); + a.addCommand("contextMenu", { + exec: function() { + a.contextMenu.open(a.document.getBody()) + } + }); + a.setKeystroke(CKEDITOR.SHIFT + 121, "contextMenu"); + a.setKeystroke(CKEDITOR.CTRL + CKEDITOR.SHIFT + 121, "contextMenu") + } + }); + (function() { + function k(a, b, d, e) { + var c = new CKEDITOR.dom.walker(a); + if (a = a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0)) + if (d(a), e) return; + for (; a = c.next();) + if (a = a.getAscendant(b, !0)) + if (d(a), e) break + } + + function u(a, b) { + var d = { + ul: "ol", + ol: "ul" + }; + return -1 !== l(b, function(b) { + return b.element === a || b.element === d[a] + }) + } + + function q(a) { + this.styles = null; + this.sticky = !1; + this.editor = a; + this.filter = new CKEDITOR.filter(a.config.copyFormatting_allowRules); + !0 === a.config.copyFormatting_allowRules && (this.filter.disabled = !0); + a.config.copyFormatting_disallowRules && this.filter.disallow(a.config.copyFormatting_disallowRules) + } + var l = CKEDITOR.tools.indexOf, + r = CKEDITOR.tools.getMouseButton, + t = !1; + CKEDITOR.plugins.add("copyformatting", { + lang: "az,de,en,it,ja,nb,nl,oc,pl,pt-br,ru,sv,tr,zh,zh-cn", + icons: "copyformatting", + hidpi: !0, + init: function(a) { + var b = CKEDITOR.plugins.copyformatting; + b._addScreenReaderContainer(); + t || (CKEDITOR.document.appendStyleSheet(this.path + "styles/copyformatting.css"), t = !0); + a.addContentsCss && a.addContentsCss(this.path + + "styles/copyformatting.css"); + a.copyFormatting = new b.state(a); + a.addCommand("copyFormatting", b.commands.copyFormatting); + a.addCommand("applyFormatting", b.commands.applyFormatting); + a.ui.addButton("CopyFormatting", { + label: a.lang.copyformatting.label, + command: "copyFormatting", + toolbar: "cleanup,0" + }); + a.on("contentDom", function() { + var d = a.editable(), + b = d.isInline() ? d : a.document, + c = a.ui.get("CopyFormatting"); + d.attachListener(b, "mouseup", function(b) { + r(b) === CKEDITOR.MOUSE_BUTTON_LEFT && a.execCommand("applyFormatting") + }); + d.attachListener(CKEDITOR.document, "mouseup", function(b) { + var e = a.getCommand("copyFormatting"); + r(b) !== CKEDITOR.MOUSE_BUTTON_LEFT || e.state !== CKEDITOR.TRISTATE_ON || d.contains(b.data.getTarget()) || a.execCommand("copyFormatting") + }); + c && (b = CKEDITOR.document.getById(c._.id), d.attachListener(b, "dblclick", function() { + a.execCommand("copyFormatting", { + sticky: !0 + }) + }), d.attachListener(b, "mouseup", function(a) { + a.data.stopPropagation() + })) + }); + a.config.copyFormatting_keystrokeCopy && a.setKeystroke(a.config.copyFormatting_keystrokeCopy, + "copyFormatting"); + a.on("key", function(b) { + var e = a.getCommand("copyFormatting"); + b = b.data.domEvent; + b.getKeystroke && 27 === b.getKeystroke() && e.state === CKEDITOR.TRISTATE_ON && a.execCommand("copyFormatting") + }); + a.copyFormatting.on("extractFormatting", function(d) { + var e = d.data.element; + if (e.contains(a.editable()) || e.equals(a.editable())) return d.cancel(); + e = b._convertElementToStyleDef(e); + if (!a.copyFormatting.filter.check(new CKEDITOR.style(e), !0, !0)) return d.cancel(); + d.data.styleDef = e + }); + a.copyFormatting.on("applyFormatting", + function(d) { + if (!d.data.preventFormatStripping) { + var e = d.data.range, + c = b._extractStylesFromRange(a, e), + f = b._determineContext(e), + g, h; + if (a.copyFormatting._isContextAllowed(f)) + for (h = 0; h < c.length; h++) f = c[h], g = e.createBookmark(), -1 === l(b.preservedElements, f.element) ? CKEDITOR.env.webkit && !CKEDITOR.env.chrome ? c[h].removeFromRange(d.data.range, d.editor) : c[h].remove(d.editor) : u(f.element, d.data.styles) && b._removeStylesFromElementInRange(e, f.element), e.moveToBookmark(g) + } + }); + a.copyFormatting.on("applyFormatting", + function(b) { + var e = CKEDITOR.plugins.copyformatting, + c = e._determineContext(b.data.range); + "list" === c && a.copyFormatting._isContextAllowed("list") ? e._applyStylesToListContext(b.editor, b.data.range, b.data.styles) : "table" === c && a.copyFormatting._isContextAllowed("table") ? e._applyStylesToTableContext(b.editor, b.data.range, b.data.styles) : a.copyFormatting._isContextAllowed("text") && e._applyStylesToTextContext(b.editor, b.data.range, b.data.styles) + }, null, null, 999) + } + }); + q.prototype._isContextAllowed = function(a) { + var b = + this.editor.config.copyFormatting_allowedContexts; + return !0 === b || -1 !== l(b, a) + }; + CKEDITOR.event.implementOn(q.prototype); + CKEDITOR.plugins.copyformatting = { + state: q, + inlineBoundary: "h1 h2 h3 h4 h5 h6 p div".split(" "), + excludedAttributes: ["id", "style", "href", "data-cke-saved-href", "dir"], + elementsForInlineTransform: ["li"], + excludedElementsFromInlineTransform: ["table", "thead", "tbody", "ul", "ol"], + excludedAttributesFromInlineTransform: ["value", "type"], + preservedElements: "ul ol li td th tr thead tbody table".split(" "), + breakOnElements: ["ul", "ol", "table"], + _initialKeystrokePasteCommand: null, + commands: { + copyFormatting: { + exec: function(a, b) { + var d = CKEDITOR.plugins.copyformatting, + e = a.copyFormatting, + c = b ? "keystrokeHandler" == b.from : !1, + f = b ? b.sticky || c : !1, + g = d._getCursorContainer(a), + h = CKEDITOR.document.getDocumentElement(); + if (this.state === CKEDITOR.TRISTATE_ON) return e.styles = null, e.sticky = !1, g.removeClass("cke_copyformatting_active"), h.removeClass("cke_copyformatting_disabled"), h.removeClass("cke_copyformatting_tableresize_cursor"), + d._putScreenReaderMessage(a, "canceled"), d._detachPasteKeystrokeHandler(a), this.setState(CKEDITOR.TRISTATE_OFF); + e.styles = d._extractStylesFromElement(a, a.elementPath().lastElement); + this.setState(CKEDITOR.TRISTATE_ON); + c || (g.addClass("cke_copyformatting_active"), h.addClass("cke_copyformatting_tableresize_cursor"), a.config.copyFormatting_outerCursor && h.addClass("cke_copyformatting_disabled")); + e.sticky = f; + d._putScreenReaderMessage(a, "copied"); + d._attachPasteKeystrokeHandler(a) + } + }, + applyFormatting: { + editorFocus: CKEDITOR.env.ie && + !CKEDITOR.env.edge ? !1 : !0, + exec: function(a, b) { + var d = a.getCommand("copyFormatting"), + e = b ? "keystrokeHandler" == b.from : !1, + c = CKEDITOR.plugins.copyformatting, + f = a.copyFormatting, + g = c._getCursorContainer(a), + h = CKEDITOR.document.getDocumentElement(); + if (e || d.state === CKEDITOR.TRISTATE_ON) { + if (e && !f.styles) return c._putScreenReaderMessage(a, "failed"), c._detachPasteKeystrokeHandler(a), !1; + e = c._applyFormat(a, f.styles); + f.sticky || (f.styles = null, g.removeClass("cke_copyformatting_active"), h.removeClass("cke_copyformatting_disabled"), + h.removeClass("cke_copyformatting_tableresize_cursor"), d.setState(CKEDITOR.TRISTATE_OFF), c._detachPasteKeystrokeHandler(a)); + c._putScreenReaderMessage(a, e ? "applied" : "canceled") + } + } + } + }, + _getCursorContainer: function(a) { + return a.elementMode === CKEDITOR.ELEMENT_MODE_INLINE ? a.editable() : a.editable().getParent() + }, + _convertElementToStyleDef: function(a) { + var b = CKEDITOR.tools, + d = a.getAttributes(CKEDITOR.plugins.copyformatting.excludedAttributes), + b = b.parseCssText(a.getAttribute("style"), !0, !0); + return { + element: a.getName(), + type: CKEDITOR.STYLE_INLINE, + attributes: d, + styles: b + } + }, + _extractStylesFromElement: function(a, b) { + var d = {}, + e = []; + do + if (b.type === CKEDITOR.NODE_ELEMENT && !b.hasAttribute("data-cke-bookmark") && (d.element = b, a.copyFormatting.fire("extractFormatting", d, a) && d.styleDef && e.push(new CKEDITOR.style(d.styleDef)), b.getName && -1 !== l(CKEDITOR.plugins.copyformatting.breakOnElements, b.getName()))) break; while ((b = b.getParent()) && b.type === CKEDITOR.NODE_ELEMENT); + return e + }, + _extractStylesFromRange: function(a, b) { + for (var d = [], e = new CKEDITOR.dom.walker(b), + c; c = e.next();) d = d.concat(CKEDITOR.plugins.copyformatting._extractStylesFromElement(a, c)); + return d + }, + _removeStylesFromElementInRange: function(a, b) { + for (var d = -1 !== l(["ol", "ul", "table"], b), e = new CKEDITOR.dom.walker(a), c; c = e.next();) + if (c = c.getAscendant(b, !0)) + if (c.removeAttributes(c.getAttributes()), d) break + }, + _getSelectedWordOffset: function(a) { + function b(a, b) { + return a[b ? "getPrevious" : "getNext"](function(a) { + return a.type !== CKEDITOR.NODE_COMMENT + }) + } + + function d(a) { + return a.type == CKEDITOR.NODE_ELEMENT ? (a = a.getHtml().replace(/ <\/span>/g, + ""), a.replace(/<.*?>/g, "")) : a.getText() + } + + function e(a, c) { + var f = a, + g = /\s/g, + h = "p br ol ul li td th div caption body".split(" "), + m = !1, + k = !1, + p, n; + do { + for (p = b(f, c); !p && f.getParent();) { + f = f.getParent(); + if (-1 !== l(h, f.getName())) { + k = m = !0; + break + } + p = b(f, c) + } + if (p && p.getName && -1 !== l(h, p.getName())) { + m = !0; + break + } + f = p + } while (f && f.getStyle && ("none" == f.getStyle("display") || !f.getText())); + for (f || (f = a); f.type !== CKEDITOR.NODE_TEXT;) f = !m || c || k ? f.getChild(0) : f.getChild(f.getChildCount() - 1); + for (h = d(f); null != (k = g.exec(h)) && (n = k.index, + c);); + if ("number" !== typeof n && !m) return e(f, c); + if (m) c ? n = 0 : (g = /([\.\b]*$)/, n = (k = g.exec(h)) ? k.index : h.length); + else if (c && (n += 1, n > h.length)) return e(f); + return { + node: f, + offset: n + } + } + var c = /\b\w+\b/ig, + f, g, h, m, k; + h = m = k = a.startContainer; + for (f = d(h); null != (g = c.exec(f));) + if (g.index + g[0].length >= a.startOffset) return a = g.index, c = g.index + g[0].length, 0 === g.index && (g = e(h, !0), m = g.node, a = g.offset), c >= f.length && (f = e(h), k = f.node, c = f.offset), { + startNode: m, + startOffset: a, + endNode: k, + endOffset: c + }; + return null + }, + _filterStyles: function(a) { + var b = + CKEDITOR.tools.isEmpty, + d = [], + e, c; + for (c = 0; c < a.length; c++) e = a[c]._.definition, -1 !== CKEDITOR.tools.indexOf(CKEDITOR.plugins.copyformatting.inlineBoundary, e.element) && (e.element = a[c].element = "span"), "span" === e.element && b(e.attributes) && b(e.styles) || d.push(a[c]); + return d + }, + _determineContext: function(a) { + function b(b) { + var e = new CKEDITOR.dom.walker(a), + c; + if (a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0)) return !0; + for (; c = e.next();) + if (c.getAscendant(b, !0)) return !0 + } + return b({ + ul: 1, + ol: 1 + }) ? + "list" : b("table") ? "table" : "text" + }, + _applyStylesToTextContext: function(a, b, d) { + var e = CKEDITOR.plugins.copyformatting, + c = e.excludedAttributesFromInlineTransform, + f, g; + CKEDITOR.env.webkit && !CKEDITOR.env.chrome && a.getSelection().selectRanges([b]); + for (f = 0; f < d.length; f++) + if (b = d[f], -1 === l(e.excludedElementsFromInlineTransform, b.element)) { + if (-1 !== l(e.elementsForInlineTransform, b.element)) + for (b.element = b._.definition.element = "span", g = 0; g < c.length; g++) b._.definition.attributes[c[g]] && delete b._.definition.attributes[c[g]]; + b.apply(a) + } + }, + _applyStylesToListContext: function(a, b, d) { + var e, c, f; + for (f = 0; f < d.length; f++) e = d[f], c = b.createBookmark(), "ol" === e.element || "ul" === e.element ? k(b, { + ul: 1, + ol: 1 + }, function(a) { + var b = e; + a.getName() !== b.element && a.renameNode(b.element); + b.applyToObject(a) + }, !0) : "li" === e.element ? k(b, "li", function(a) { + e.applyToObject(a) + }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext(a, b, [e]), b.moveToBookmark(c) + }, + _applyStylesToTableContext: function(a, b, d) { + function e(a, b) { + a.getName() !== b.element && (b = b.getDefinition(), + b.element = a.getName(), b = new CKEDITOR.style(b)); + b.applyToObject(a) + } + var c, f, g; + for (g = 0; g < d.length; g++) c = d[g], f = b.createBookmark(), -1 !== l(["table", "tr"], c.element) ? k(b, c.element, function(a) { + c.applyToObject(a) + }) : -1 !== l(["td", "th"], c.element) ? k(b, { + td: 1, + th: 1 + }, function(a) { + e(a, c) + }) : -1 !== l(["thead", "tbody"], c.element) ? k(b, { + thead: 1, + tbody: 1 + }, function(a) { + e(a, c) + }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext(a, b, [c]), b.moveToBookmark(f) + }, + _applyFormat: function(a, b) { + var d = a.getSelection().getRanges()[0], + e = CKEDITOR.plugins.copyformatting, + c, f; + if (!d) return !1; + if (d.collapsed) { + f = a.getSelection().createBookmarks(); + if (!(c = e._getSelectedWordOffset(d))) return; + d = a.createRange(); + d.setStart(c.startNode, c.startOffset); + d.setEnd(c.endNode, c.endOffset); + d.select() + } + b = e._filterStyles(b); + if (!a.copyFormatting.fire("applyFormatting", { + styles: b, + range: d, + preventFormatStripping: !1 + }, a)) return !1; + f && a.getSelection().selectBookmarks(f); + return !0 + }, + _putScreenReaderMessage: function(a, b) { + var d = this._getScreenReaderContainer(); + d && d.setText(a.lang.copyformatting.notification[b]) + }, + _addScreenReaderContainer: function() { + if (this._getScreenReaderContainer()) return this._getScreenReaderContainer(); + if (!CKEDITOR.env.ie6Compat && !CKEDITOR.env.ie7Compat) return CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_screen_reader_only cke_copyformatting_notification"\x3e\x3cdiv aria-live\x3d"polite"\x3e\x3c/div\x3e\x3c/div\x3e')).getChild(0) + }, + _getScreenReaderContainer: function() { + if (!CKEDITOR.env.ie6Compat && !CKEDITOR.env.ie7Compat) return CKEDITOR.document.getBody().findOne(".cke_copyformatting_notification div[aria-live]") + }, + _attachPasteKeystrokeHandler: function(a) { + var b = a.config.copyFormatting_keystrokePaste; + b && (this._initialKeystrokePasteCommand = a.keystrokeHandler.keystrokes[b], a.setKeystroke(b, "applyFormatting")) + }, + _detachPasteKeystrokeHandler: function(a) { + var b = a.config.copyFormatting_keystrokePaste; + b && a.setKeystroke(b, this._initialKeystrokePasteCommand || !1) + } + }; + CKEDITOR.config.copyFormatting_outerCursor = !0; + CKEDITOR.config.copyFormatting_allowRules = "b s u i em strong span p div td th ol ul li(*)[*]{*}"; + CKEDITOR.config.copyFormatting_disallowRules = + "*[data-cke-widget*,data-widget*,data-cke-realelement](cke_widget*)"; + CKEDITOR.config.copyFormatting_allowedContexts = !0; + CKEDITOR.config.copyFormatting_keystrokeCopy = CKEDITOR.CTRL + CKEDITOR.SHIFT + 67; + CKEDITOR.config.copyFormatting_keystrokePaste = CKEDITOR.CTRL + CKEDITOR.SHIFT + 86 + })(); + (function() { + CKEDITOR.plugins.add("div", { + requires: "dialog", + init: function(a) { + if (!a.blockless) { + var c = a.lang.div, + b = "div(*)"; + CKEDITOR.dialog.isTabEnabled(a, "editdiv", "advanced") && (b += ";div[dir,id,lang,title]{*}"); + a.addCommand("creatediv", new CKEDITOR.dialogCommand("creatediv", { + allowedContent: b, + requiredContent: "div", + contextSensitive: !0, + contentTransformations: [ + ["div: alignmentToStyle"] + ], + refresh: function(a, c) { + this.setState("div" in (a.config.div_wrapTable ? c.root : c.blockLimit).getDtd() ? CKEDITOR.TRISTATE_OFF : + CKEDITOR.TRISTATE_DISABLED) + } + })); + a.addCommand("editdiv", new CKEDITOR.dialogCommand("editdiv", { + requiredContent: "div" + })); + a.addCommand("removediv", { + requiredContent: "div", + exec: function(a) { + function c(b) { + (b = CKEDITOR.plugins.div.getSurroundDiv(a, b)) && !b.data("cke-div-added") && (f.push(b), b.data("cke-div-added")) + } + for (var b = a.getSelection(), g = b && b.getRanges(), e, h = b.createBookmarks(), f = [], d = 0; d < g.length; d++) e = g[d], e.collapsed ? c(b.getStartElement()) : (e = new CKEDITOR.dom.walker(e), e.evaluator = c, e.lastForward()); + for (d = 0; d < f.length; d++) f[d].remove(!0); + b.selectBookmarks(h) + } + }); + a.ui.addButton && a.ui.addButton("CreateDiv", { + label: c.toolbar, + command: "creatediv", + toolbar: "blocks,50" + }); + a.addMenuItems && (a.addMenuItems({ + editdiv: { + label: c.edit, + command: "editdiv", + group: "div", + order: 1 + }, + removediv: { + label: c.remove, + command: "removediv", + group: "div", + order: 5 + } + }), a.contextMenu && a.contextMenu.addListener(function(b) { + return !b || b.isReadOnly() ? null : CKEDITOR.plugins.div.getSurroundDiv(a) ? { + editdiv: CKEDITOR.TRISTATE_OFF, + removediv: CKEDITOR.TRISTATE_OFF + } : + null + })); + CKEDITOR.dialog.add("creatediv", this.path + "dialogs/div.js"); + CKEDITOR.dialog.add("editdiv", this.path + "dialogs/div.js") + } + } + }); + CKEDITOR.plugins.div = { + getSurroundDiv: function(a, c) { + var b = a.elementPath(c); + return a.elementPath(b.blockLimit).contains(function(a) { + return a.is("div") && !a.isReadOnly() + }, 1) + } + } + })(); + CKEDITOR.plugins.add("resize", { + init: function(b) { + function f(d) { + var e = c.width, + m = c.height, + f = e + (d.data.$.screenX - n.x) * ("rtl" == g ? -1 : 1); + d = m + (d.data.$.screenY - n.y); + h && (e = Math.max(a.resize_minWidth, Math.min(f, a.resize_maxWidth))); + p && (m = Math.max(a.resize_minHeight, Math.min(d, a.resize_maxHeight))); + b.resize(h ? e : null, m) + } + + function k() { + CKEDITOR.document.removeListener("mousemove", f); + CKEDITOR.document.removeListener("mouseup", k); + b.document && (b.document.removeListener("mousemove", f), b.document.removeListener("mouseup", + k)) + } + var a = b.config, + r = b.ui.spaceId("resizer"), + g = b.element ? b.element.getDirection(1) : "ltr"; + !a.resize_dir && (a.resize_dir = "vertical"); + void 0 === a.resize_maxWidth && (a.resize_maxWidth = 3E3); + void 0 === a.resize_maxHeight && (a.resize_maxHeight = 3E3); + void 0 === a.resize_minWidth && (a.resize_minWidth = 750); + void 0 === a.resize_minHeight && (a.resize_minHeight = 250); + if (!1 !== a.resize_enabled) { + var l = null, + n, c, h = ("both" == a.resize_dir || "horizontal" == a.resize_dir) && a.resize_minWidth != a.resize_maxWidth, + p = ("both" == a.resize_dir || "vertical" == + a.resize_dir) && a.resize_minHeight != a.resize_maxHeight, + q = CKEDITOR.tools.addFunction(function(d) { + l || (l = b.getResizable()); + c = { + width: l.$.offsetWidth || 0, + height: l.$.offsetHeight || 0 + }; + n = { + x: d.screenX, + y: d.screenY + }; + a.resize_minWidth > c.width && (a.resize_minWidth = c.width); + a.resize_minHeight > c.height && (a.resize_minHeight = c.height); + CKEDITOR.document.on("mousemove", f); + CKEDITOR.document.on("mouseup", k); + b.document && (b.document.on("mousemove", f), b.document.on("mouseup", k)); + d.preventDefault && d.preventDefault() + }); + b.on("destroy", + function() { + CKEDITOR.tools.removeFunction(q) + }); + b.on("uiSpace", function(a) { + if ("bottom" == a.data.space) { + var e = ""; + h && !p && (e = " cke_resizer_horizontal"); + !h && p && (e = " cke_resizer_vertical"); + var c = '\x3cspan id\x3d"' + r + '" class\x3d"cke_resizer' + e + " cke_resizer_" + g + '" title\x3d"' + CKEDITOR.tools.htmlEncode(b.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + q + ', event)"\x3e' + ("ltr" == g ? "◢" : "◣") + "\x3c/span\x3e"; + "ltr" == g && "ltr" == e ? a.data.html += c : a.data.html = c + a.data.html + } + }, b, null, 100); + b.on("maximize", + function(a) { + b.ui.space("resizer")[a.data == CKEDITOR.TRISTATE_ON ? "hide" : "show"]() + }) + } + } + }); + (function() { + function q(a, c) { + function k(b) { + b = h.list[b]; + var e; + b.equals(a.editable()) || "true" == b.getAttribute("contenteditable") ? (e = a.createRange(), e.selectNodeContents(b), e = e.select()) : (e = a.getSelection(), e.selectElement(b)); + CKEDITOR.env.ie && a.fire("selectionChange", { + selection: e, + path: new CKEDITOR.dom.elementPath(b) + }); + a.focus() + } + + function l() { + m && m.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e'); + delete h.list + } + var n = a.ui.spaceId("path"), + m, h = a._.elementsPath, + q = h.idBase; + c.html += '\x3cspan id\x3d"' + + n + '_label" class\x3d"cke_voice_label"\x3e' + a.lang.elementspath.eleLabel + '\x3c/span\x3e\x3cspan id\x3d"' + n + '" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"' + n + '_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e'; + a.on("uiReady", function() { + var b = a.ui.space("path"); + b && a.focusManager.add(b, 1) + }); + h.onClick = k; + var v = CKEDITOR.tools.addFunction(k), + w = CKEDITOR.tools.addFunction(function(b, e) { + var g = h.idBase, + d; + e = new CKEDITOR.dom.event(e); + d = "rtl" == a.lang.dir; + switch (e.getKeystroke()) { + case d ? + 39: + 37: case 9: return (d = CKEDITOR.document.getById(g + (b + 1))) || (d = CKEDITOR.document.getById(g + "0")), d.focus(), !1; + case d ? 37: + 39: case CKEDITOR.SHIFT + 9: return (d = CKEDITOR.document.getById(g + (b - 1))) || (d = CKEDITOR.document.getById(g + (h.list.length - 1))), d.focus(), !1; + case 27: + return a.focus(), !1; + case 13: + case 32: + return k(b), !1 + } + return !0 + }); + a.on("selectionChange", function(b) { + for (var e = [], g = h.list = [], d = [], c = h.filters, p = !0, k = b.data.path.elements, u = k.length; u--;) { + var f = k[u], + r = 0; + b = f.data("cke-display-name") ? f.data("cke-display-name") : + f.data("cke-real-element-type") ? f.data("cke-real-element-type") : f.getName(); + (p = f.hasAttribute("contenteditable") ? "true" == f.getAttribute("contenteditable") : p) || f.hasAttribute("contenteditable") || (r = 1); + for (var t = 0; t < c.length; t++) { + var l = c[t](f, b); + if (!1 === l) { + r = 1; + break + } + b = l || b + } + r || (g.unshift(f), d.unshift(b)) + } + g = g.length; + for (c = 0; c < g; c++) b = d[c], p = a.lang.elementspath.eleTitle.replace(/%1/, b), b = x.output({ + id: q + c, + label: p, + text: b, + jsTitle: "javascript:void('" + b + "')", + index: c, + keyDownFn: w, + clickFn: v + }), e.unshift(b); + m || + (m = CKEDITOR.document.getById(n)); + d = m; + d.setHtml(e.join("") + '\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e'); + a.fire("elementsPathUpdate", { + space: d + }) + }); + a.on("readOnly", l); + a.on("contentDomUnload", l); + a.addCommand("elementsPathFocus", y.toolbarFocus); + a.setKeystroke(CKEDITOR.ALT + 122, "elementsPathFocus") + } + var y = { + toolbarFocus: { + editorFocus: !1, + readOnly: 1, + exec: function(a) { + (a = CKEDITOR.document.getById(a._.elementsPath.idBase + "0")) && a.focus(CKEDITOR.env.ie || CKEDITOR.env.air) + } + } + }, + c = ""; + CKEDITOR.env.gecko && + CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"'); + CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); + var x = CKEDITOR.addTemplate("pathItem", '\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"' + c + ' hidefocus\x3d"true" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e'); + CKEDITOR.plugins.add("elementspath", { + init: function(a) { + a._.elementsPath = { + idBase: "cke_elementspath_" + CKEDITOR.tools.getNextNumber() + "_", + filters: [] + }; + a.on("uiSpace", function(c) { + "bottom" == c.data.space && q(a, c.data) + }) + } + }) + })(); + (function() { + function x(a, e, b) { + b = a.config.forceEnterMode || b; + if ("wysiwyg" == a.mode) { + e || (e = a.activeEnterMode); + var g = a.elementPath(); + g && !g.isContextFor("p") && (e = CKEDITOR.ENTER_BR, b = 1); + a.fire("saveSnapshot"); + e == CKEDITOR.ENTER_BR ? u(a, e, null, b) : r(a, e, null, b); + a.fire("saveSnapshot") + } + } + + function y(a) { + a = a.getSelection().getRanges(!0); + for (var e = a.length - 1; 0 < e; e--) a[e].deleteContents(); + return a[0] + } + + function z(a) { + var e = a.startContainer.getAscendant(function(a) { + return a.type == CKEDITOR.NODE_ELEMENT && "true" == a.getAttribute("contenteditable") + }, + !0); + if (a.root.equals(e)) return a; + e = new CKEDITOR.dom.range(e); + e.moveToRange(a); + return e + } + CKEDITOR.plugins.add("enterkey", { + init: function(a) { + a.addCommand("enter", { + modes: { + wysiwyg: 1 + }, + editorFocus: !1, + exec: function(a) { + x(a) + } + }); + a.addCommand("shiftEnter", { + modes: { + wysiwyg: 1 + }, + editorFocus: !1, + exec: function(a) { + x(a, a.activeShiftEnterMode, 1) + } + }); + a.setKeystroke([ + [13, "enter"], + [CKEDITOR.SHIFT + 13, "shiftEnter"] + ]) + } + }); + var A = CKEDITOR.dom.walker.whitespaces(), + B = CKEDITOR.dom.walker.bookmark(), + v, u, r, w; + CKEDITOR.plugins.enterkey = { + enterBlock: function(a, e, b, g) { + function m(a) { + var b; + if (a === CKEDITOR.ENTER_BR || -1 === CKEDITOR.tools.indexOf(["td", "th"], p.lastElement.getName()) || 1 !== p.lastElement.getChildCount()) return !1; + a = p.lastElement.getChild(0).clone(!0); + (b = a.getBogus()) && b.remove(); + return a.getText().length ? !1 : !0 + } + if (b = b || y(a)) { + b = z(b); + var h = b.document, + n = b.checkStartOfBlock(), + f = b.checkEndOfBlock(), + p = a.elementPath(b.startContainer), + c = p.block, + l = e == CKEDITOR.ENTER_DIV ? "div" : "p", + d; + if (n && f) { + if (c && (c.is("li") || c.getParent().is("li"))) { + c.is("li") || + (c = c.getParent()); + b = c.getParent(); + d = b.getParent(); + g = !c.hasPrevious(); + var f = !c.hasNext(), + l = a.getSelection(), + n = l.createBookmarks(), + k = c.getDirection(1), + t = c.getAttribute("class"), + q = c.getAttribute("style"), + r = d.getDirection(1) != k; + a = a.enterMode != CKEDITOR.ENTER_BR || r || q || t; + if (d.is("li")) g || f ? (g && f && b.remove(), c[f ? "insertAfter" : "insertBefore"](d)) : c.breakParent(d); + else { + if (a) + if (p.block.is("li") ? (d = h.createElement(e == CKEDITOR.ENTER_P ? "p" : "div"), r && d.setAttribute("dir", k), q && d.setAttribute("style", q), t && d.setAttribute("class", + t), c.moveChildren(d)) : d = p.block, g || f) d[g ? "insertBefore" : "insertAfter"](b); + else c.breakParent(b), d.insertAfter(b); + else if (c.appendBogus(!0), g || f) + for (; h = c[g ? "getFirst" : "getLast"]();) h[g ? "insertBefore" : "insertAfter"](b); + else + for (c.breakParent(b); h = c.getLast();) h.insertAfter(b); + c.remove() + } + l.selectBookmarks(n); + return + } + if (c && c.getParent().is("blockquote")) { + c.breakParent(c.getParent()); + c.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1)) || c.getPrevious().remove(); + c.getNext().getFirst(CKEDITOR.dom.walker.invisible(1)) || + c.getNext().remove(); + b.moveToElementEditStart(c); + b.select(); + return + } + } else if (c && c.is("pre") && !f) { + u(a, e, b, g); + return + } + if (q = b.splitBlock(l)) { + a = q.previousBlock; + c = q.nextBlock; + n = q.wasStartOfBlock; + f = q.wasEndOfBlock; + c ? (k = c.getParent(), k.is("li") && (c.breakParent(k), c.move(c.getNext(), 1))) : a && (k = a.getParent()) && k.is("li") && (a.breakParent(k), k = a.getNext(), b.moveToElementEditStart(k), a.move(a.getPrevious())); + if (n || f) + if (m(e)) b.moveToElementEditStart(b.getTouchedStartNode()); + else { + if (a) { + if (a.is("li") || !w.test(a.getName()) && + !a.is("pre")) d = a.clone() + } else c && (d = c.clone()); + d ? g && !d.is("li") && d.renameNode(l) : k && k.is("li") ? d = k : (d = h.createElement(l), a && (t = a.getDirection()) && d.setAttribute("dir", t)); + if (h = q.elementPath) + for (e = 0, g = h.elements.length; e < g; e++) { + l = h.elements[e]; + if (l.equals(h.block) || l.equals(h.blockLimit)) break; + CKEDITOR.dtd.$removeEmpty[l.getName()] && (l = l.clone(), d.moveChildren(l), d.append(l)) + } + d.appendBogus(); + d.getParent() || b.insertNode(d); + d.is("li") && d.removeAttribute("value"); + !CKEDITOR.env.ie || !n || f && a.getChildCount() || + (b.moveToElementEditStart(f ? a : d), b.select()); + b.moveToElementEditStart(n && !f ? c : d) + } + else c.is("li") && (d = b.clone(), d.selectNodeContents(c), d = new CKEDITOR.dom.walker(d), d.evaluator = function(a) { + return !(B(a) || A(a) || a.type == CKEDITOR.NODE_ELEMENT && a.getName() in CKEDITOR.dtd.$inline && !(a.getName() in CKEDITOR.dtd.$empty)) + }, (k = d.next()) && k.type == CKEDITOR.NODE_ELEMENT && k.is("ul", "ol") && (CKEDITOR.env.needsBrFiller ? h.createElement("br") : h.createText(" ")).insertBefore(k)), c && b.moveToElementEditStart(c); + b.select(); + b.scrollIntoView() + } + } + }, + enterBr: function(a, e, b, g) { + if (b = b || y(a)) { + var m = b.document, + h = b.checkEndOfBlock(), + n = new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()), + f = n.block, + p = f && n.block.getName(); + g || "li" != p ? (!g && h && w.test(p) ? (h = f.getDirection()) ? (m = m.createElement("div"), m.setAttribute("dir", h), m.insertAfter(f), b.setStart(m, 0)) : (m.createElement("br").insertAfter(f), CKEDITOR.env.gecko && m.createText("").insertAfter(f), b.setStartAt(f.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START)) : + (a = "pre" == p && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? m.createText("\r") : m.createElement("br"), b.deleteContents(), b.insertNode(a), CKEDITOR.env.needsBrFiller ? (m.createText("").insertAfter(a), h && (f || n.blockLimit).appendBogus(), a.getNext().$.nodeValue = "", b.setStartAt(a.getNext(), CKEDITOR.POSITION_AFTER_START)) : b.setStartAt(a, CKEDITOR.POSITION_AFTER_END)), b.collapse(!0), b.select(), b.scrollIntoView()) : r(a, e, b, g) + } + } + }; + v = CKEDITOR.plugins.enterkey; + u = v.enterBr; + r = v.enterBlock; + w = /^h[1-6]$/ + })(); + (function() { + function k(b, f) { + var g = {}, + c = [], + e = { + nbsp: " ", + shy: "­", + gt: "\x3e", + lt: "\x3c", + amp: "\x26", + apos: "'", + quot: '"' + }; + b = b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g, function(b, a) { + var d = f ? "\x26" + a + ";" : e[a]; + g[d] = f ? e[a] : "\x26" + a + ";"; + c.push(d); + return "" + }); + if (!f && b) { + b = b.split(","); + var a = document.createElement("div"), + d; + a.innerHTML = "\x26" + b.join(";\x26") + ";"; + d = a.innerHTML; + a = null; + for (a = 0; a < d.length; a++) { + var h = d.charAt(a); + g[h] = "\x26" + b[a] + ";"; + c.push(h) + } + } + g.regex = c.join(f ? "|" : ""); + return g + } + CKEDITOR.plugins.add("entities", { + afterInit: function(b) { + function f(a) { + return h[a] + } + + function g(b) { + return "force" != c.entities_processNumerical && a[b] ? a[b] : "\x26#" + b.charCodeAt(0) + ";" + } + var c = b.config; + if (b = (b = b.dataProcessor) && b.htmlFilter) { + var e = []; + !1 !== c.basicEntities && e.push("nbsp,gt,lt,amp"); + c.entities && (e.length && e.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"), + c.entities_latin && e.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"), c.entities_greek && e.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"), + c.entities_additional && e.push(c.entities_additional)); + var a = k(e.join(",")), + d = a.regex ? "[" + a.regex + "]" : "a^"; + delete a.regex; + c.entities && c.entities_processNumerical && (d = "[^ -~]|" + d); + var d = new RegExp(d, "g"), + h = k("nbsp,gt,lt,amp,shy", !0), + l = new RegExp(h.regex, "g"); + b.addRules({ + text: function(a) { + return a.replace(l, f).replace(d, g) + } + }, { + applyToAll: !0, + excludeNestedEditable: !0 + }) + } + } + }) + })(); + CKEDITOR.config.basicEntities = !0; + CKEDITOR.config.entities = !0; + CKEDITOR.config.entities_latin = !0; + CKEDITOR.config.entities_greek = !0; + CKEDITOR.config.entities_additional = "#39"; + CKEDITOR.plugins.add("popup"); + CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { + popup: function(e, a, b, d) { + a = a || "80%"; + b = b || "70%"; + "string" == typeof a && 1 < a.length && "%" == a.substr(a.length - 1, 1) && (a = parseInt(window.screen.width * parseInt(a, 10) / 100, 10)); + "string" == typeof b && 1 < b.length && "%" == b.substr(b.length - 1, 1) && (b = parseInt(window.screen.height * parseInt(b, 10) / 100, 10)); + 640 > a && (a = 640); + 420 > b && (b = 420); + var f = parseInt((window.screen.height - b) / 2, 10), + g = parseInt((window.screen.width - a) / 2, 10); + d = (d || "location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes") + ",width\x3d" + + a + ",height\x3d" + b + ",top\x3d" + f + ",left\x3d" + g; + var c = window.open("", null, d, !0); + if (!c) return !1; + try { + -1 == navigator.userAgent.toLowerCase().indexOf(" chrome/") && (c.moveTo(g, f), c.resizeTo(a, b)), c.focus(), c.location.href = e + } catch (h) { + window.open(e, null, d, !0) + } + return !0 + } + }); + (function() { + function k(a) { + this.editor = a; + this.loaders = [] + } + + function l(a, c, b) { + var d = a.config.fileTools_defaultFileName; + this.editor = a; + this.lang = a.lang; + "string" === typeof c ? (this.data = c, this.file = n(this.data), this.loaded = this.total = this.file.size) : (this.data = null, this.file = c, this.total = this.file.size, this.loaded = 0); + b ? this.fileName = b : this.file.name ? this.fileName = this.file.name : (a = this.file.type.split("/"), d && (a[0] = d), this.fileName = a.join(".")); + this.uploaded = 0; + this.responseData = this.uploadTotal = null; + this.status = + "created"; + this.abort = function() { + this.changeStatus("abort") + } + } + + function n(a) { + var c = a.match(m)[1]; + a = a.replace(m, ""); + a = atob(a); + var b = [], + d, f, g, e; + for (d = 0; d < a.length; d += 512) { + f = a.slice(d, d + 512); + g = Array(f.length); + for (e = 0; e < f.length; e++) g[e] = f.charCodeAt(e); + f = new Uint8Array(g); + b.push(f) + } + return new Blob(b, { + type: c + }) + } + CKEDITOR.plugins.add("filetools", { + beforeInit: function(a) { + a.uploadRepository = new k(a); + a.on("fileUploadRequest", function(a) { + var b = a.data.fileLoader; + b.xhr.open("POST", b.uploadUrl, !0); + a.data.requestData.upload = { + file: b.file, + name: b.fileName + } + }, null, null, 5); + a.on("fileUploadRequest", function(c) { + var b = c.data.fileLoader, + d = new FormData; + c = c.data.requestData; + var f = a.config.fileTools_requestHeaders, + g, e; + for (e in c) { + var h = c[e]; + "object" === typeof h && h.file ? d.append(e, h.file, h.name) : d.append(e, h) + } + d.append("ckCsrfToken", CKEDITOR.tools.getCsrfToken()); + if (f) + for (g in f) b.xhr.setRequestHeader(g, f[g]); + b.xhr.send(d) + }, null, null, 999); + a.on("fileUploadResponse", function(a) { + var b = a.data.fileLoader, + d = b.xhr, + f = a.data; + try { + var g = JSON.parse(d.responseText); + g.error && g.error.message && (f.message = g.error.message); + if (g.uploaded) + for (var e in g) f[e] = g[e]; + else a.cancel() + } catch (h) { + f.message = b.lang.filetools.responseError, CKEDITOR.warn("filetools-response-error", { + responseText: d.responseText + }), a.cancel() + } + }, null, null, 999) + } + }); + k.prototype = { + create: function(a, c, b) { + b = b || l; + var d = this.loaders.length; + a = new b(this.editor, a, c); + a.id = d; + this.loaders[d] = a; + this.fire("instanceCreated", a); + return a + }, + isFinished: function() { + for (var a = 0; a < this.loaders.length; ++a) + if (!this.loaders[a].isFinished()) return !1; + return !0 + } + }; + l.prototype = { + loadAndUpload: function(a, c) { + var b = this; + this.once("loaded", function(d) { + d.cancel(); + b.once("update", function(a) { + a.cancel() + }, null, null, 0); + b.upload(a, c) + }, null, null, 0); + this.load() + }, + load: function() { + var a = this, + c = this.reader = new FileReader; + a.changeStatus("loading"); + this.abort = function() { + a.reader.abort() + }; + c.onabort = function() { + a.changeStatus("abort") + }; + c.onerror = function() { + a.message = a.lang.filetools.loadError; + a.changeStatus("error") + }; + c.onprogress = function(b) { + a.loaded = b.loaded; + a.update() + }; + c.onload = function() { + a.loaded = a.total; + a.data = c.result; + a.changeStatus("loaded") + }; + c.readAsDataURL(this.file) + }, + upload: function(a, c) { + var b = c || {}; + a ? (this.uploadUrl = a, this.xhr = new XMLHttpRequest, this.attachRequestListeners(), this.editor.fire("fileUploadRequest", { + fileLoader: this, + requestData: b + }) && this.changeStatus("uploading")) : (this.message = this.lang.filetools.noUrlError, this.changeStatus("error")) + }, + attachRequestListeners: function() { + function a() { + "error" != b.status && (b.message = b.lang.filetools.networkError, + b.changeStatus("error")) + } + + function c() { + "abort" != b.status && b.changeStatus("abort") + } + var b = this, + d = this.xhr; + b.abort = function() { + d.abort(); + c() + }; + d.onerror = a; + d.onabort = c; + d.upload ? (d.upload.onprogress = function(a) { + a.lengthComputable && (b.uploadTotal || (b.uploadTotal = a.total), b.uploaded = a.loaded, b.update()) + }, d.upload.onerror = a, d.upload.onabort = c) : (b.uploadTotal = b.total, b.update()); + d.onload = function() { + b.update(); + if ("abort" != b.status) + if (b.uploaded = b.uploadTotal, 200 > d.status || 299 < d.status) b.message = b.lang.filetools["httpError" + + d.status], b.message || (b.message = b.lang.filetools.httpError.replace("%1", d.status)), b.changeStatus("error"); + else { + for (var a = { + fileLoader: b + }, c = ["message", "fileName", "url"], e = b.editor.fire("fileUploadResponse", a), h = 0; h < c.length; h++) { + var k = c[h]; + "string" === typeof a[k] && (b[k] = a[k]) + } + b.responseData = a; + delete b.responseData.fileLoader; + !1 === e ? b.changeStatus("error") : b.changeStatus("uploaded") + } + } + }, + changeStatus: function(a) { + this.status = a; + if ("error" == a || "abort" == a || "loaded" == a || "uploaded" == a) this.abort = function() {}; + this.fire(a); + this.update() + }, + update: function() { + this.fire("update") + }, + isFinished: function() { + return !!this.status.match(/^(?:loaded|uploaded|error|abort)$/) + } + }; + CKEDITOR.event.implementOn(k.prototype); + CKEDITOR.event.implementOn(l.prototype); + var m = /^data:(\S*?);base64,/; + CKEDITOR.fileTools || (CKEDITOR.fileTools = {}); + CKEDITOR.tools.extend(CKEDITOR.fileTools, { + uploadRepository: k, + fileLoader: l, + getUploadUrl: function(a, c) { + var b = CKEDITOR.tools.capitalize; + return c && a[c + "UploadUrl"] ? a[c + "UploadUrl"] : a.uploadUrl ? a.uploadUrl : + c && a["filebrowser" + b(c, 1) + "UploadUrl"] ? a["filebrowser" + b(c, 1) + "UploadUrl"] + "\x26responseType\x3djson" : a.filebrowserUploadUrl ? a.filebrowserUploadUrl + "\x26responseType\x3djson" : null + }, + isTypeSupported: function(a, c) { + return !!a.type.match(c) + }, + isFileUploadSupported: "function" === typeof FileReader && "function" === typeof(new FileReader).readAsDataURL && "function" === typeof FormData && "function" === typeof(new FormData).append && "function" === typeof XMLHttpRequest && "function" === typeof Blob + }) + })(); + (function() { + function g(a, b) { + var d = []; + if (b) + for (var c in b) d.push(c + "\x3d" + encodeURIComponent(b[c])); + else return a; + return a + (-1 != a.indexOf("?") ? "\x26" : "?") + d.join("\x26") + } + + function p(a) { + return !a.match(/command=QuickUpload/) || a.match(/(\?|&)responseType=json/) ? a : g(a, { + responseType: "json" + }) + } + + function k(a) { + a += ""; + return a.charAt(0).toUpperCase() + a.substr(1) + } + + function q() { + var a = this.getDialog(), + b = a.getParentEditor(); + b._.filebrowserSe = this; + var d = b.config["filebrowser" + k(a.getName()) + "WindowWidth"] || b.config.filebrowserWindowWidth || + "80%", + a = b.config["filebrowser" + k(a.getName()) + "WindowHeight"] || b.config.filebrowserWindowHeight || "70%", + c = this.filebrowser.params || {}; + c.CKEditor = b.name; + c.CKEditorFuncNum = b._.filebrowserFn; + c.langCode || (c.langCode = b.langCode); + c = g(this.filebrowser.url, c); + b.popup(c, d, a, b.config.filebrowserWindowFeatures || b.config.fileBrowserWindowFeatures) + } + + function r(a) { + var b = new CKEDITOR.dom.element(a.$.form); + b && ((a = b.$.elements.ckCsrfToken) ? a = new CKEDITOR.dom.element(a) : (a = new CKEDITOR.dom.element("input"), a.setAttributes({ + name: "ckCsrfToken", + type: "hidden" + }), b.append(a)), a.setAttribute("value", CKEDITOR.tools.getCsrfToken())) + } + + function t() { + var a = this.getDialog(); + a.getParentEditor()._.filebrowserSe = this; + return a.getContentElement(this["for"][0], this["for"][1]).getInputElement().$.value && a.getContentElement(this["for"][0], this["for"][1]).getAction() ? !0 : !1 + } + + function u(a, b, d) { + var c = d.params || {}; + c.CKEditor = a.name; + c.CKEditorFuncNum = a._.filebrowserFn; + c.langCode || (c.langCode = a.langCode); + b.action = g(d.url, c); + b.filebrowser = d + } + + function l(a, b, d, c) { + if (c && + c.length) + for (var e, g = c.length; g--;) + if (e = c[g], "hbox" != e.type && "vbox" != e.type && "fieldset" != e.type || l(a, b, d, e.children), e.filebrowser) + if ("string" == typeof e.filebrowser && (e.filebrowser = { + action: "fileButton" == e.type ? "QuickUpload" : "Browse", + target: e.filebrowser + }), "Browse" == e.filebrowser.action) { + var f = e.filebrowser.url; + void 0 === f && (f = a.config["filebrowser" + k(b) + "BrowseUrl"], void 0 === f && (f = a.config.filebrowserBrowseUrl)); + f && (e.onClick = q, e.filebrowser.url = f, e.hidden = !1) + } else if ("QuickUpload" == e.filebrowser.action && + e["for"] && (f = e.filebrowser.url, void 0 === f && (f = a.config["filebrowser" + k(b) + "UploadUrl"], void 0 === f && (f = a.config.filebrowserUploadUrl)), f)) { + var h = e.onClick; + e.onClick = function(b) { + var c = b.sender, + d = c.getDialog().getContentElement(this["for"][0], this["for"][1]).getInputElement(), + e = CKEDITOR.fileTools && CKEDITOR.fileTools.isFileUploadSupported; + if (h && !1 === h.call(c, b)) return !1; + if (t.call(c, b)) { + if ("form" !== a.config.filebrowserUploadMethod && e) return b = a.uploadRepository.create(d.$.files[0]), b.on("uploaded", function(a) { + var b = + a.sender.responseData; + m.call(a.sender.editor, b.url, b.message) + }), b.on("error", n.bind(this)), b.on("abort", n.bind(this)), b.loadAndUpload(p(f)), "xhr"; + r(d); + return !0 + } + return !1 + }; + e.filebrowser.url = f; + e.hidden = !1; + u(a, d.getContents(e["for"][0]).get(e["for"][1]), e.filebrowser) + } + } + + function n(a) { + var b = {}; + try { + b = JSON.parse(a.sender.xhr.response) || {} + } catch (d) {} + this.enable(); + alert(b.error ? b.error.message : a.sender.message) + } + + function h(a, b, d) { + if (-1 !== d.indexOf(";")) { + d = d.split(";"); + for (var c = 0; c < d.length; c++) + if (h(a, b, d[c])) return !0; + return !1 + } + return (a = a.getContents(b).get(d).filebrowser) && a.url + } + + function m(a, b) { + var d = this._.filebrowserSe.getDialog(), + c = this._.filebrowserSe["for"], + e = this._.filebrowserSe.filebrowser.onSelect; + c && d.getContentElement(c[0], c[1]).reset(); + if ("function" != typeof b || !1 !== b.call(this._.filebrowserSe)) + if (!e || !1 !== e.call(this._.filebrowserSe, a, b)) + if ("string" == typeof b && b && alert(b), a && (c = this._.filebrowserSe, d = c.getDialog(), c = c.filebrowser.target || null)) + if (c = c.split(":"), e = d.getContentElement(c[0], c[1])) e.setValue(a), + d.selectPage(c[0]) + } + CKEDITOR.plugins.add("filebrowser", { + requires: "popup,filetools", + init: function(a) { + a._.filebrowserFn = CKEDITOR.tools.addFunction(m, a); + a.on("destroy", function() { + CKEDITOR.tools.removeFunction(this._.filebrowserFn) + }) + } + }); + CKEDITOR.on("dialogDefinition", function(a) { + if (a.editor.plugins.filebrowser) + for (var b = a.data.definition, d, c = 0; c < b.contents.length; ++c) + if (d = b.contents[c]) l(a.editor, a.data.name, b, d.elements), d.hidden && d.filebrowser && (d.hidden = !h(b, d.id, d.filebrowser)) + }) + })(); + CKEDITOR.plugins.add("find", { + requires: "dialog", + init: function(a) { + var b = a.addCommand("find", new CKEDITOR.dialogCommand("find")), + c = a.addCommand("replace", new CKEDITOR.dialogCommand("find", { + tabId: "replace" + })); + b.canUndo = !1; + b.readOnly = 1; + c.canUndo = !1; + a.ui.addButton && (a.ui.addButton("Find", { + label: a.lang.find.find, + command: "find", + toolbar: "find,10" + }), a.ui.addButton("Replace", { + label: a.lang.find.replace, + command: "replace", + toolbar: "find,20" + })); + CKEDITOR.dialog.add("find", this.path + "dialogs/find.js") + } + }); + CKEDITOR.config.find_highlight = { + element: "span", + styles: { + "background-color": "#004", + color: "#fff" + } + }; + (function() { + function g(a, b) { + var c = l.exec(a), + d = l.exec(b); + if (c) { + if (!c[2] && "px" == d[2]) return d[1]; + if ("px" == c[2] && !d[2]) return d[1] + "px" + } + return b + } + var k = CKEDITOR.htmlParser.cssStyle, + h = CKEDITOR.tools.cssLength, + l = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i, + m = { + elements: { + $: function(a) { + var b = a.attributes; + if ((b = (b = (b = b && b["data-cke-realelement"]) && new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b))) && b.children[0]) && a.attributes["data-cke-resizable"]) { + var c = (new k(a)).rules; + a = b.attributes; + var d = c.width, + c = c.height; + d && (a.width = g(a.width, d)); + c && (a.height = g(a.height, c)) + } + return b + } + } + }; + CKEDITOR.plugins.add("fakeobjects", { + init: function(a) { + a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}", "fakeobjects") + }, + afterInit: function(a) { + (a = (a = a.dataProcessor) && a.htmlFilter) && a.addRules(m, { + applyToAll: !0 + }) + } + }); + CKEDITOR.editor.prototype.createFakeElement = function(a, b, c, d) { + var e = this.lang.fakeobjects, + e = e[c] || e.unknown; + b = { + "class": b, + "data-cke-realelement": encodeURIComponent(a.getOuterHtml()), + "data-cke-real-node-type": a.type, + alt: e, + title: e, + align: a.getAttribute("align") || "" + }; + CKEDITOR.env.hc || (b.src = CKEDITOR.tools.transparentImageData); + c && (b["data-cke-real-element-type"] = c); + d && (b["data-cke-resizable"] = d, c = new k, d = a.getAttribute("width"), a = a.getAttribute("height"), d && (c.rules.width = h(d)), a && (c.rules.height = h(a)), c.populate(b)); + return this.document.createElement("img", { + attributes: b + }) + }; + CKEDITOR.editor.prototype.createFakeParserElement = function(a, b, c, d) { + var e = this.lang.fakeobjects, + e = e[c] || e.unknown, + f; + f = new CKEDITOR.htmlParser.basicWriter; + a.writeHtml(f); + f = f.getHtml(); + b = { + "class": b, + "data-cke-realelement": encodeURIComponent(f), + "data-cke-real-node-type": a.type, + alt: e, + title: e, + align: a.attributes.align || "" + }; + CKEDITOR.env.hc || (b.src = CKEDITOR.tools.transparentImageData); + c && (b["data-cke-real-element-type"] = c); + d && (b["data-cke-resizable"] = d, d = a.attributes, a = new k, c = d.width, d = d.height, void 0 !== c && (a.rules.width = h(c)), void 0 !== d && (a.rules.height = h(d)), a.populate(b)); + return new CKEDITOR.htmlParser.element("img", b) + }; + CKEDITOR.editor.prototype.restoreRealElement = + function(a) { + if (a.data("cke-real-node-type") != CKEDITOR.NODE_ELEMENT) return null; + var b = CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")), this.document); + if (a.data("cke-resizable")) { + var c = a.getStyle("width"); + a = a.getStyle("height"); + c && b.setAttribute("width", g(b.getAttribute("width"), c)); + a && b.setAttribute("height", g(b.getAttribute("height"), a)) + } + return b + } + })(); + (function() { + function d(a) { + a = a.attributes; + return "application/x-shockwave-flash" == a.type || f.test(a.src || "") + } + + function e(a, b) { + return a.createFakeParserElement(b, "cke_flash", "flash", !0) + } + var f = /\.swf(?:$|\?)/i; + CKEDITOR.plugins.add("flash", { + requires: "dialog,fakeobjects", + onLoad: function() { + CKEDITOR.addCss("img.cke_flash{background-image: url(" + CKEDITOR.getUrl(this.path + "images/placeholder.png") + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}") + }, + init: function(a) { + var b = "object[classid,codebase,height,hspace,vspace,width];param[name,value];embed[height,hspace,pluginspage,src,type,vspace,width]"; + CKEDITOR.dialog.isTabEnabled(a, "flash", "properties") && (b += ";object[align]; embed[allowscriptaccess,quality,scale,wmode]"); + CKEDITOR.dialog.isTabEnabled(a, "flash", "advanced") && (b += ";object[id]{*}; embed[bgcolor]{*}(*)"); + a.addCommand("flash", new CKEDITOR.dialogCommand("flash", { + allowedContent: b, + requiredContent: "embed" + })); + a.ui.addButton && a.ui.addButton("Flash", { + label: a.lang.common.flash, + command: "flash", + toolbar: "insert,20" + }); + CKEDITOR.dialog.add("flash", this.path + "dialogs/flash.js"); + a.addMenuItems && a.addMenuItems({ + flash: { + label: a.lang.flash.properties, + command: "flash", + group: "flash" + } + }); + a.on("doubleclick", function(a) { + var b = a.data.element; + b.is("img") && "flash" == b.data("cke-real-element-type") && (a.data.dialog = "flash") + }); + a.contextMenu && a.contextMenu.addListener(function(a) { + if (a && a.is("img") && !a.isReadOnly() && "flash" == a.data("cke-real-element-type")) return { + flash: CKEDITOR.TRISTATE_OFF + } + }) + }, + afterInit: function(a) { + var b = a.dataProcessor; + (b = b && b.dataFilter) && b.addRules({ + elements: { + "cke:object": function(b) { + var c = b.attributes; + if (!(c.classid && String(c.classid).toLowerCase() || d(b))) { + for (c = 0; c < b.children.length; c++) + if ("cke:embed" == b.children[c].name) { + if (!d(b.children[c])) break; + return e(a, b) + } return null + } + return e(a, b) + }, + "cke:embed": function(b) { + return d(b) ? e(a, b) : null + } + } + }, 5) + } + }) + })(); + CKEDITOR.tools.extend(CKEDITOR.config, { + flashEmbedTagOnly: !1, + flashAddEmbedTag: !0, + flashConvertOnEdit: !1 + }); + (function() { + function k(a) { + var l = a.config, + p = a.fire("uiSpace", { + space: "top", + html: "" + }).html, + t = function() { + function f(a, c, e) { + b.setStyle(c, w(e)); + b.setStyle("position", a) + } + + function e(a) { + var b = k.getDocumentPosition(); + switch (a) { + case "top": + f("absolute", "top", b.y - q - r); + break; + case "pin": + f("fixed", "top", x); + break; + case "bottom": + f("absolute", "top", b.y + (c.height || c.bottom - c.top) + r) + } + m = a + } + var m, k, n, c, h, q, v, p = l.floatSpaceDockedOffsetX || 0, + r = l.floatSpaceDockedOffsetY || 0, + u = l.floatSpacePinnedOffsetX || 0, + x = l.floatSpacePinnedOffsetY || + 0; + return function(d) { + if (k = a.editable()) { + var f = d && "focus" == d.name; + f && b.show(); + a.fire("floatingSpaceLayout", { + show: f + }); + b.removeStyle("left"); + b.removeStyle("right"); + n = b.getClientRect(); + c = k.getClientRect(); + h = g.getViewPaneSize(); + q = n.height; + v = "pageXOffset" in g.$ ? g.$.pageXOffset : CKEDITOR.document.$.documentElement.scrollLeft; + m ? (q + r <= c.top ? e("top") : q + r > h.height - c.bottom ? e("pin") : e("bottom"), d = h.width / 2, d = l.floatSpacePreferRight ? "right" : 0 < c.left && c.right < h.width && c.width > n.width ? "rtl" == l.contentsLangDirection ? + "right" : "left" : d - c.left > c.right - d ? "left" : "right", n.width > h.width ? (d = "left", f = 0) : (f = "left" == d ? 0 < c.left ? c.left : 0 : c.right < h.width ? h.width - c.right : 0, f + n.width > h.width && (d = "left" == d ? "right" : "left", f = 0)), b.setStyle(d, w(("pin" == m ? u : p) + f + ("pin" == m ? 0 : "left" == d ? v : -v)))) : (m = "pin", e("pin"), t(d)) + } + } + }(); + if (p) { + var k = new CKEDITOR.template('\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} ' + CKEDITOR.env.cssClass + '" dir\x3d"{langDir}" title\x3d"' + (CKEDITOR.env.gecko ? + " " : "") + '" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"' + (a.title ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : " ") + "\x3e" + (a.title ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : " ") + '\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e'), + b = CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(k.output({ + content: p, + id: a.id, + langDir: a.lang.dir, + langCode: a.langCode, + name: a.name, + style: "display:none;z-index:" + (l.baseFloatZIndex - 1), + topId: a.ui.spaceId("top"), + voiceLabel: a.title + }))), + u = CKEDITOR.tools.eventsBuffer(500, t), + e = CKEDITOR.tools.eventsBuffer(100, t); + b.unselectable(); + b.on("mousedown", function(a) { + a = a.data; + a.getTarget().hasAscendant("a", 1) || a.preventDefault() + }); + a.on("focus", function(b) { + t(b); + a.on("change", u.input); + g.on("scroll", e.input); + g.on("resize", e.input) + }); + a.on("blur", function() { + b.hide(); + a.removeListener("change", u.input); + g.removeListener("scroll", + e.input); + g.removeListener("resize", e.input) + }); + a.on("destroy", function() { + g.removeListener("scroll", e.input); + g.removeListener("resize", e.input); + b.clearCustomData(); + b.remove() + }); + a.focusManager.hasFocus && b.show(); + a.focusManager.add(b, 1) + } + } + var g = CKEDITOR.document.getWindow(), + w = CKEDITOR.tools.cssLength; + CKEDITOR.plugins.add("floatingspace", { + init: function(a) { + a.on("loaded", function() { + k(this) + }, null, null, 20) + } + }) + })(); + CKEDITOR.plugins.add("listblock", { + requires: "panel", + onLoad: function() { + var f = CKEDITOR.addTemplate("panel-list", '\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'), + g = CKEDITOR.addTemplate("panel-list-item", '\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" href\x3d"javascript:void(\'{val}\')" {onclick}\x3d"CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'), + h = CKEDITOR.addTemplate("panel-list-group", '\x3ch1 id\x3d"{id}" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'), + k = /\'/g; + CKEDITOR.ui.panel.prototype.addListBlock = function(a, b) { + return this.addBlock(a, new CKEDITOR.ui.listBlock(this.getHolderElement(), b)) + }; + CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass({ + base: CKEDITOR.ui.panel.block, + $: function(a, b) { + b = b || {}; + var c = b.attributes || (b.attributes = {}); + (this.multiSelect = !!b.multiSelect) && (c["aria-multiselectable"] = !0); + !c.role && + (c.role = "listbox"); + this.base.apply(this, arguments); + this.element.setAttribute("role", c.role); + c = this.keys; + c[40] = "next"; + c[9] = "next"; + c[38] = "prev"; + c[CKEDITOR.SHIFT + 9] = "prev"; + c[32] = CKEDITOR.env.ie ? "mouseup" : "click"; + CKEDITOR.env.ie && (c[13] = "mouseup"); + this._.pendingHtml = []; + this._.pendingList = []; + this._.items = {}; + this._.groups = {} + }, + _: { + close: function() { + if (this._.started) { + var a = f.output({ + items: this._.pendingList.join("") + }); + this._.pendingList = []; + this._.pendingHtml.push(a); + delete this._.started + } + }, + getClick: function() { + this._.click || + (this._.click = CKEDITOR.tools.addFunction(function(a) { + var b = this.toggle(a); + if (this.onClick) this.onClick(a, b) + }, this)); + return this._.click + } + }, + proto: { + add: function(a, b, c) { + var d = CKEDITOR.tools.getNextId(); + this._.started || (this._.started = 1, this._.size = this._.size || 0); + this._.items[a] = d; + var e; + e = CKEDITOR.tools.htmlEncodeAttr(a).replace(k, "\\'"); + a = { + id: d, + val: e, + onclick: CKEDITOR.env.ie ? 'onclick\x3d"return false;" onmouseup' : "onclick", + clickFn: this._.getClick(), + title: CKEDITOR.tools.htmlEncodeAttr(c || a), + text: b || a + }; + this._.pendingList.push(g.output(a)) + }, + startGroup: function(a) { + this._.close(); + var b = CKEDITOR.tools.getNextId(); + this._.groups[a] = b; + this._.pendingHtml.push(h.output({ + id: b, + label: a + })) + }, + commit: function() { + this._.close(); + this.element.appendHtml(this._.pendingHtml.join("")); + delete this._.size; + this._.pendingHtml = [] + }, + toggle: function(a) { + var b = this.isMarked(a); + b ? this.unmark(a) : this.mark(a); + return !b + }, + hideGroup: function(a) { + var b = (a = this.element.getDocument().getById(this._.groups[a])) && a.getNext(); + a && (a.setStyle("display", + "none"), b && "ul" == b.getName() && b.setStyle("display", "none")) + }, + hideItem: function(a) { + this.element.getDocument().getById(this._.items[a]).setStyle("display", "none") + }, + showAll: function() { + var a = this._.items, + b = this._.groups, + c = this.element.getDocument(), + d; + for (d in a) c.getById(a[d]).setStyle("display", ""); + for (var e in b) a = c.getById(b[e]), d = a.getNext(), a.setStyle("display", ""), d && "ul" == d.getName() && d.setStyle("display", "") + }, + mark: function(a) { + this.multiSelect || this.unmarkAll(); + a = this._.items[a]; + var b = this.element.getDocument().getById(a); + b.addClass("cke_selected"); + this.element.getDocument().getById(a + "_option").setAttribute("aria-selected", !0); + this.onMark && this.onMark(b) + }, + markFirstDisplayed: function() { + var a = this; + this._.markFirstDisplayed(function() { + a.multiSelect || a.unmarkAll() + }) + }, + unmark: function(a) { + var b = this.element.getDocument(); + a = this._.items[a]; + var c = b.getById(a); + c.removeClass("cke_selected"); + b.getById(a + "_option").removeAttribute("aria-selected"); + this.onUnmark && this.onUnmark(c) + }, + unmarkAll: function() { + var a = this._.items, + b = this.element.getDocument(), + c; + for (c in a) { + var d = a[c]; + b.getById(d).removeClass("cke_selected"); + b.getById(d + "_option").removeAttribute("aria-selected") + } + this.onUnmark && this.onUnmark() + }, + isMarked: function(a) { + return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected") + }, + focus: function(a) { + this._.focusIndex = -1; + var b = this.element.getElementsByTag("a"), + c, d = -1; + if (a) + for (c = this.element.getDocument().getById(this._.items[a]).getFirst(); a = b.getItem(++d);) { + if (a.equals(c)) { + this._.focusIndex = d; + break + } + } else this.element.focus(); + c && setTimeout(function() { + c.focus() + }, 0) + } + } + }) + } + }); + CKEDITOR.plugins.add("richcombo", { + requires: "floatpanel,listblock,button", + beforeInit: function(c) { + c.ui.addHandler(CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler) + } + }); + (function() { + var c = '\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"true"'; + CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"'); + CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"'); + var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" ' + (CKEDITOR.env.ie ? 'onclick\x3d"return false;" onmouseup' : "onclick") + '\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + + (CKEDITOR.env.hc ? "\x26#9660;" : CKEDITOR.env.air ? "\x26nbsp;" : "") + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"), + k = CKEDITOR.addTemplate("combo", c); + CKEDITOR.UI_RICHCOMBO = "richcombo"; + CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass({ + $: function(a) { + CKEDITOR.tools.extend(this, a, { + canGroup: !1, + title: a.label, + modes: { + wysiwyg: 1 + }, + editorFocus: 1 + }); + a = this.panel || {}; + delete this.panel; + this.id = CKEDITOR.tools.getNextNumber(); + this.document = a.parent && a.parent.getDocument() || CKEDITOR.document; + a.className = "cke_combopanel"; + a.block = { + multiSelect: a.multiSelect, + attributes: a.attributes + }; + a.toolbarRelated = !0; + this._ = { + panelDefinition: a, + items: {} + } + }, + proto: { + renderHtml: function(a) { + var b = []; + this.render(a, b); + return b.join("") + }, + render: function(a, b) { + function f() { + if (this.getState() != CKEDITOR.TRISTATE_ON) { + var b = this.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; + a.readOnly && !this.readOnly && (b = CKEDITOR.TRISTATE_DISABLED); + this.setState(b); + this.setValue(""); + b != CKEDITOR.TRISTATE_DISABLED && this.refresh && this.refresh() + } + } + var c = + CKEDITOR.env, + h = "cke_" + this.id, + e = CKEDITOR.tools.addFunction(function(b) { + l && (a.unlockSelection(1), l = 0); + g.execute(b) + }, this), + d = this, + g = { + id: h, + combo: this, + focus: function() { + CKEDITOR.document.getById(h).getChild(1).focus() + }, + execute: function(b) { + var c = d._; + if (c.state != CKEDITOR.TRISTATE_DISABLED) + if (d.createPanel(a), c.on) c.panel.hide(); + else { + d.commit(); + var f = d.getValue(); + f ? c.list.mark(f) : c.list.unmarkAll(); + c.panel.showBlock(d.id, new CKEDITOR.dom.element(b), 4) + } + }, + clickFn: e + }; + a.on("activeFilterChange", f, this); + a.on("mode", + f, this); + a.on("selectionChange", f, this); + !this.readOnly && a.on("readOnly", f, this); + var m = CKEDITOR.tools.addFunction(function(a, b) { + a = new CKEDITOR.dom.event(a); + var d = a.getKeystroke(); + switch (d) { + case 13: + case 32: + case 40: + CKEDITOR.tools.callFunction(e, b); + break; + default: + g.onkey(g, d) + } + a.preventDefault() + }), + n = CKEDITOR.tools.addFunction(function() { + g.onfocus && g.onfocus() + }), + l = 0; + g.keyDownFn = m; + c = { + id: h, + name: this.name || this.command, + label: this.label, + title: this.title, + cls: this.className || "", + titleJs: c.gecko && !c.hc ? "" : (this.title || + "").replace("'", ""), + keydownFn: m, + focusFn: n, + clickFn: e + }; + k.output(c, b); + if (this.onRender) this.onRender(); + return g + }, + createPanel: function(a) { + if (!this._.panel) { + var b = this._.panelDefinition, + c = this._.panelDefinition.block, + k = b.parent || CKEDITOR.document.getBody(), + h = "cke_combopanel__" + this.name, + e = new CKEDITOR.ui.floatPanel(a, k, b), + b = e.addListBlock(this.id, c), + d = this; + e.onShow = function() { + this.element.addClass(h); + d.setState(CKEDITOR.TRISTATE_ON); + d._.on = 1; + d.editorFocus && !a.focusManager.hasFocus && a.focus(); + if (d.onOpen) d.onOpen() + }; + e.onHide = function(b) { + this.element.removeClass(h); + d.setState(d.modes && d.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED); + d._.on = 0; + if (!b && d.onClose) d.onClose() + }; + e.onEscape = function() { + e.hide(1) + }; + b.onClick = function(a, b) { + d.onClick && d.onClick.call(d, a, b); + e.hide() + }; + this._.panel = e; + this._.list = b; + e.getBlock(this.id).onHide = function() { + d._.on = 0; + d.setState(CKEDITOR.TRISTATE_OFF) + }; + this.init && this.init() + } + }, + setValue: function(a, b) { + this._.value = a; + var c = this.document.getById("cke_" + this.id + "_text"); + c && + (a || b ? c.removeClass("cke_combo_inlinelabel") : (b = this.label, c.addClass("cke_combo_inlinelabel")), c.setText("undefined" != typeof b ? b : a)) + }, + getValue: function() { + return this._.value || "" + }, + unmarkAll: function() { + this._.list.unmarkAll() + }, + mark: function(a) { + this._.list.mark(a) + }, + hideItem: function(a) { + this._.list.hideItem(a) + }, + hideGroup: function(a) { + this._.list.hideGroup(a) + }, + showAll: function() { + this._.list.showAll() + }, + add: function(a, b, c) { + this._.items[a] = c || a; + this._.list.add(a, b, c) + }, + startGroup: function(a) { + this._.list.startGroup(a) + }, + commit: function() { + this._.committed || (this._.list.commit(), this._.committed = 1, CKEDITOR.ui.fire("ready", this)); + this._.committed = 1 + }, + setState: function(a) { + if (this._.state != a) { + var b = this.document.getById("cke_" + this.id); + b.setState(a, "cke_combo"); + a == CKEDITOR.TRISTATE_DISABLED ? b.setAttribute("aria-disabled", !0) : b.removeAttribute("aria-disabled"); + this._.state = a + } + }, + getState: function() { + return this._.state + }, + enable: function() { + this._.state == CKEDITOR.TRISTATE_DISABLED && this.setState(this._.lastState) + }, + disable: function() { + this._.state != + CKEDITOR.TRISTATE_DISABLED && (this._.lastState = this._.state, this.setState(CKEDITOR.TRISTATE_DISABLED)) + } + }, + statics: { + handler: { + create: function(a) { + return new CKEDITOR.ui.richCombo(a) + } + } + } + }); + CKEDITOR.ui.prototype.addRichCombo = function(a, b) { + this.add(a, CKEDITOR.UI_RICHCOMBO, b) + } + })(); + (function() { + function p(b, f, e, d, r, p, t, x) { + var y = b.config, + u = new CKEDITOR.style(t), + g = r.split(";"); + r = []; + for (var k = {}, l = 0; l < g.length; l++) { + var m = g[l]; + if (m) { + var m = m.split("/"), + w = {}, + q = g[l] = m[0]; + w[e] = r[l] = m[1] || q; + k[q] = new CKEDITOR.style(t, w); + k[q]._.definition.name = q + } else g.splice(l--, 1) + } + b.ui.addRichCombo(f, { + label: d.label, + title: d.panelTitle, + toolbar: "styles," + x, + defaultValue: "cke-default", + allowedContent: u, + requiredContent: u, + contentTransformations: "span" === t.element ? [ + [{ + element: "font", + check: "span", + left: function(a) { + return !!a.attributes.size || + !!a.attributes.align || !!a.attributes.face + }, + right: function(a) { + var b = " x-small small medium large x-large xx-large 48px".split(" "); + a.name = "span"; + a.attributes.size && (a.styles["font-size"] = b[a.attributes.size], delete a.attributes.size); + a.attributes.align && (a.styles["text-align"] = a.attributes.align, delete a.attributes.align); + a.attributes.face && (a.styles["font-family"] = a.attributes.face, delete a.attributes.face) + } + }] + ] : null, + panel: { + css: [CKEDITOR.skin.getPath("editor")].concat(y.contentsCss), + multiSelect: !1, + attributes: { + "aria-label": d.panelTitle + } + }, + init: function() { + var a; + a = "(" + b.lang.common.optionDefault + ")"; + this.startGroup(d.panelTitle); + this.add(this.defaultValue, a, a); + for (var c = 0; c < g.length; c++) a = g[c], this.add(a, k[a].buildPreview(), a) + }, + onClick: function(a) { + b.focus(); + b.fire("saveSnapshot"); + var c = this.getValue(), + f = k[a], + e, n, h, d, g; + if (c && a != c) + if (e = k[c], c = b.getSelection().getRanges()[0], c.collapsed) { + if (n = b.elementPath(), h = n.contains(function(a) { + return e.checkElementRemovable(a) + })) { + d = c.checkBoundaryOfElement(h, + CKEDITOR.START); + g = c.checkBoundaryOfElement(h, CKEDITOR.END); + if (d && g) { + for (d = c.createBookmark(); n = h.getFirst();) n.insertBefore(h); + h.remove(); + c.moveToBookmark(d) + } else d || g ? c.moveToPosition(h, d ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_END) : (c.splitElement(h), c.moveToPosition(h, CKEDITOR.POSITION_AFTER_END)), v(c, n.elements.slice(), h); + b.getSelection().selectRanges([c]) + } + } else b.removeStyle(e); + a === this.defaultValue ? e && b.removeStyle(e) : b.applyStyle(f); + b.fire("saveSnapshot") + }, + onRender: function() { + b.on("selectionChange", + function(a) { + var c = this.getValue(); + a = a.data.path.elements; + for (var d = 0, f; d < a.length; d++) { + f = a[d]; + for (var e in k) + if (k[e].checkElementMatch(f, !0, b)) { + e != c && this.setValue(e); + return + } + } + this.setValue("", p) + }, this) + }, + refresh: function() { + b.activeFilter.check(u) || this.setState(CKEDITOR.TRISTATE_DISABLED) + } + }) + } + + function v(b, f, e) { + var d = f.pop(); + if (d) { + if (e) return v(b, f, d.equals(e) ? null : e); + e = d.clone(); + b.insertNode(e); + b.moveToPosition(e, CKEDITOR.POSITION_AFTER_START); + v(b, f) + } + } + CKEDITOR.plugins.add("font", { + requires: "richcombo", + init: function(b) { + var f = b.config; + p(b, "Font", "family", b.lang.font, f.font_names, f.font_defaultLabel, f.font_style, 30); + p(b, "FontSize", "size", b.lang.font.fontSize, f.fontSize_sizes, f.fontSize_defaultLabel, f.fontSize_style, 40) + } + }) + })(); + CKEDITOR.config.font_names = "Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif"; + CKEDITOR.config.font_defaultLabel = ""; + CKEDITOR.config.font_style = { + element: "span", + styles: { + "font-family": "#(family)" + }, + overrides: [{ + element: "font", + attributes: { + face: null + } + }] + }; + CKEDITOR.config.fontSize_sizes = "8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px"; + CKEDITOR.config.fontSize_defaultLabel = ""; + CKEDITOR.config.fontSize_style = { + element: "span", + styles: { + "font-size": "#(size)" + }, + overrides: [{ + element: "font", + attributes: { + size: null + } + }] + }; + CKEDITOR.plugins.add("forms", { + requires: "dialog,fakeobjects", + onLoad: function() { + CKEDITOR.addCss(".cke_editable form{border: 1px dotted #FF0000;padding: 2px;}\n"); + CKEDITOR.addCss("img.cke_hidden{background-image: url(" + CKEDITOR.getUrl(this.path + "images/hiddenfield.gif") + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 16px !important;height: 16px !important;}") + }, + init: function(a) { + var b = a.lang, + g = 0, + h = { + email: 1, + password: 1, + search: 1, + tel: 1, + text: 1, + url: 1 + }, + l = { + checkbox: "input[type,name,checked,required]", + radio: "input[type,name,checked,required]", + textfield: "input[type,name,value,size,maxlength,required]", + textarea: "textarea[cols,rows,name,required]", + select: "select[name,size,multiple,required]; option[value,selected]", + button: "input[type,name,value]", + form: "form[action,name,id,enctype,target,method]", + hiddenfield: "input[type,name,value]", + imagebutton: "input[type,alt,src]{width,height,border,border-width,border-style,margin,float}" + }, + m = { + checkbox: "input", + radio: "input", + textfield: "input", + textarea: "textarea", + select: "select", + button: "input", + form: "form", + hiddenfield: "input", + imagebutton: "input" + }, + e = function(d, c, e) { + var h = { + allowedContent: l[c], + requiredContent: m[c] + }; + "form" == c && (h.context = "form"); + a.addCommand(c, new CKEDITOR.dialogCommand(c, h)); + a.ui.addButton && a.ui.addButton(d, { + label: b.common[d.charAt(0).toLowerCase() + d.slice(1)], + command: c, + toolbar: "forms," + (g += 10) + }); + CKEDITOR.dialog.add(c, e) + }, + f = this.path + "dialogs/"; + !a.blockless && e("Form", "form", f + "form.js"); + e("Checkbox", "checkbox", f + "checkbox.js"); + e("Radio", "radio", + f + "radio.js"); + e("TextField", "textfield", f + "textfield.js"); + e("Textarea", "textarea", f + "textarea.js"); + e("Select", "select", f + "select.js"); + e("Button", "button", f + "button.js"); + var k = a.plugins.image; + k && !a.plugins.image2 && e("ImageButton", "imagebutton", CKEDITOR.plugins.getPath("image") + "dialogs/image.js"); + e("HiddenField", "hiddenfield", f + "hiddenfield.js"); + a.addMenuItems && (e = { + checkbox: { + label: b.forms.checkboxAndRadio.checkboxTitle, + command: "checkbox", + group: "checkbox" + }, + radio: { + label: b.forms.checkboxAndRadio.radioTitle, + command: "radio", + group: "radio" + }, + textfield: { + label: b.forms.textfield.title, + command: "textfield", + group: "textfield" + }, + hiddenfield: { + label: b.forms.hidden.title, + command: "hiddenfield", + group: "hiddenfield" + }, + button: { + label: b.forms.button.title, + command: "button", + group: "button" + }, + select: { + label: b.forms.select.title, + command: "select", + group: "select" + }, + textarea: { + label: b.forms.textarea.title, + command: "textarea", + group: "textarea" + } + }, k && (e.imagebutton = { + label: b.image.titleButton, + command: "imagebutton", + group: "imagebutton" + }), !a.blockless && + (e.form = { + label: b.forms.form.menu, + command: "form", + group: "form" + }), a.addMenuItems(e)); + a.contextMenu && (!a.blockless && a.contextMenu.addListener(function(d, c, a) { + if ((d = a.contains("form", 1)) && !d.isReadOnly()) return { + form: CKEDITOR.TRISTATE_OFF + } + }), a.contextMenu.addListener(function(d) { + if (d && !d.isReadOnly()) { + var c = d.getName(); + if ("select" == c) return { + select: CKEDITOR.TRISTATE_OFF + }; + if ("textarea" == c) return { + textarea: CKEDITOR.TRISTATE_OFF + }; + if ("input" == c) { + var a = d.getAttribute("type") || "text"; + switch (a) { + case "button": + case "submit": + case "reset": + return { + button: CKEDITOR.TRISTATE_OFF + }; + case "checkbox": + return { + checkbox: CKEDITOR.TRISTATE_OFF + }; + case "radio": + return { + radio: CKEDITOR.TRISTATE_OFF + }; + case "image": + return k ? { + imagebutton: CKEDITOR.TRISTATE_OFF + } : null + } + if (h[a]) return { + textfield: CKEDITOR.TRISTATE_OFF + } + } + if ("img" == c && "hiddenfield" == d.data("cke-real-element-type")) return { + hiddenfield: CKEDITOR.TRISTATE_OFF + } + } + })); + a.on("doubleclick", function(d) { + var c = d.data.element; + if (!a.blockless && c.is("form")) d.data.dialog = "form"; + else if (c.is("select")) d.data.dialog = "select"; + else if (c.is("textarea")) d.data.dialog = + "textarea"; + else if (c.is("img") && "hiddenfield" == c.data("cke-real-element-type")) d.data.dialog = "hiddenfield"; + else if (c.is("input")) { + c = c.getAttribute("type") || "text"; + switch (c) { + case "button": + case "submit": + case "reset": + d.data.dialog = "button"; + break; + case "checkbox": + d.data.dialog = "checkbox"; + break; + case "radio": + d.data.dialog = "radio"; + break; + case "image": + d.data.dialog = "imagebutton" + } + h[c] && (d.data.dialog = "textfield") + } + }) + }, + afterInit: function(a) { + var b = a.dataProcessor, + g = b && b.htmlFilter, + b = b && b.dataFilter; + CKEDITOR.env.ie && + g && g.addRules({ + elements: { + input: function(a) { + a = a.attributes; + var b = a.type; + b || (a.type = "text"); + "checkbox" != b && "radio" != b || "on" != a.value || delete a.value + } + } + }, { + applyToAll: !0 + }); + b && b.addRules({ + elements: { + input: function(b) { + if ("hidden" == b.attributes.type) return a.createFakeParserElement(b, "cke_hidden", "hiddenfield") + } + } + }, { + applyToAll: !0 + }) + } + }); + CKEDITOR.plugins.add("format", { + requires: "richcombo", + init: function(a) { + if (!a.blockless) { + for (var f = a.config, c = a.lang.format, l = f.format_tags.split(";"), d = {}, m = 0, n = [], g = 0; g < l.length; g++) { + var h = l[g], + k = new CKEDITOR.style(f["format_" + h]); + if (!a.filter.customConfig || a.filter.check(k)) m++, d[h] = k, d[h]._.enterMode = a.config.enterMode, n.push(k) + } + 0 !== m && a.ui.addRichCombo("Format", { + label: c.label, + title: c.panelTitle, + toolbar: "styles,20", + allowedContent: n, + panel: { + css: [CKEDITOR.skin.getPath("editor")].concat(f.contentsCss), + multiSelect: !1, + attributes: { + "aria-label": c.panelTitle + } + }, + init: function() { + this.startGroup(c.panelTitle); + for (var a in d) { + var e = c["tag_" + a]; + this.add(a, d[a].buildPreview(e), e) + } + }, + onClick: function(b) { + a.focus(); + a.fire("saveSnapshot"); + b = d[b]; + var e = a.elementPath(); + b.checkActive(e, a) || a.applyStyle(b); + setTimeout(function() { + a.fire("saveSnapshot") + }, 0) + }, + onRender: function() { + a.on("selectionChange", function(b) { + var e = this.getValue(); + b = b.data.path; + this.refresh(); + for (var c in d) + if (d[c].checkActive(b, a)) { + c != e && this.setValue(c, + a.lang.format["tag_" + c]); + return + } this.setValue("") + }, this) + }, + onOpen: function() { + this.showAll(); + for (var b in d) a.activeFilter.check(d[b]) || this.hideItem(b) + }, + refresh: function() { + var b = a.elementPath(); + if (b) { + if (b.isContextFor("p")) + for (var c in d) + if (a.activeFilter.check(d[c])) return; + this.setState(CKEDITOR.TRISTATE_DISABLED) + } + } + }) + } + } + }); + CKEDITOR.config.format_tags = "p;h1;h2;h3;h4;h5;h6;pre;address;div"; + CKEDITOR.config.format_p = { + element: "p" + }; + CKEDITOR.config.format_div = { + element: "div" + }; + CKEDITOR.config.format_pre = { + element: "pre" + }; + CKEDITOR.config.format_address = { + element: "address" + }; + CKEDITOR.config.format_h1 = { + element: "h1" + }; + CKEDITOR.config.format_h2 = { + element: "h2" + }; + CKEDITOR.config.format_h3 = { + element: "h3" + }; + CKEDITOR.config.format_h4 = { + element: "h4" + }; + CKEDITOR.config.format_h5 = { + element: "h5" + }; + CKEDITOR.config.format_h6 = { + element: "h6" + }; + (function() { + var b = { + canUndo: !1, + exec: function(a) { + var b = a.document.createElement("hr"); + a.insertElement(b) + }, + allowedContent: "hr", + requiredContent: "hr" + }; + CKEDITOR.plugins.add("horizontalrule", { + init: function(a) { + a.blockless || (a.addCommand("horizontalrule", b), a.ui.addButton && a.ui.addButton("HorizontalRule", { + label: a.lang.horizontalrule.toolbar, + command: "horizontalrule", + toolbar: "insert,40" + })) + } + }) + })(); + CKEDITOR.plugins.add("htmlwriter", { + init: function(b) { + var a = new CKEDITOR.htmlWriter; + a.forceSimpleAmpersand = b.config.forceSimpleAmpersand; + a.indentationChars = b.config.dataIndentationChars || "\t"; + b.dataProcessor.writer = a + } + }); + CKEDITOR.htmlWriter = CKEDITOR.tools.createClass({ + base: CKEDITOR.htmlParser.basicWriter, + $: function() { + this.base(); + this.indentationChars = "\t"; + this.selfClosingEnd = " /\x3e"; + this.lineBreakChars = "\n"; + this.sortAttributes = 1; + this._.indent = 0; + this._.indentation = ""; + this._.inPre = 0; + this._.rules = {}; + var b = CKEDITOR.dtd, + a; + for (a in CKEDITOR.tools.extend({}, b.$nonBodyContent, b.$block, b.$listItem, b.$tableContent)) this.setRules(a, { + indent: !b[a]["#"], + breakBeforeOpen: 1, + breakBeforeClose: !b[a]["#"], + breakAfterClose: 1, + needsSpace: a in + b.$block && !(a in { + li: 1, + dt: 1, + dd: 1 + }) + }); + this.setRules("br", { + breakAfterOpen: 1 + }); + this.setRules("title", { + indent: 0, + breakAfterOpen: 0 + }); + this.setRules("style", { + indent: 0, + breakBeforeClose: 1 + }); + this.setRules("pre", { + breakAfterOpen: 1, + indent: 0 + }) + }, + proto: { + openTag: function(b) { + var a = this._.rules[b]; + this._.afterCloser && a && a.needsSpace && this._.needsSpace && this._.output.push("\n"); + this._.indent ? this.indentation() : a && a.breakBeforeOpen && (this.lineBreak(), this.indentation()); + this._.output.push("\x3c", b); + this._.afterCloser = 0 + }, + openTagClose: function(b, a) { + var c = this._.rules[b]; + a ? (this._.output.push(this.selfClosingEnd), c && c.breakAfterClose && (this._.needsSpace = c.needsSpace)) : (this._.output.push("\x3e"), c && c.indent && (this._.indentation += this.indentationChars)); + c && c.breakAfterOpen && this.lineBreak(); + "pre" == b && (this._.inPre = 1) + }, + attribute: function(b, a) { + "string" == typeof a && (this.forceSimpleAmpersand && (a = a.replace(/&/g, "\x26")), a = CKEDITOR.tools.htmlEncodeAttr(a)); + this._.output.push(" ", b, '\x3d"', a, '"') + }, + closeTag: function(b) { + var a = + this._.rules[b]; + a && a.indent && (this._.indentation = this._.indentation.substr(this.indentationChars.length)); + this._.indent ? this.indentation() : a && a.breakBeforeClose && (this.lineBreak(), this.indentation()); + this._.output.push("\x3c/", b, "\x3e"); + "pre" == b && (this._.inPre = 0); + a && a.breakAfterClose && (this.lineBreak(), this._.needsSpace = a.needsSpace); + this._.afterCloser = 1 + }, + text: function(b) { + this._.indent && (this.indentation(), !this._.inPre && (b = CKEDITOR.tools.ltrim(b))); + this._.output.push(b) + }, + comment: function(b) { + this._.indent && + this.indentation(); + this._.output.push("\x3c!--", b, "--\x3e") + }, + lineBreak: function() { + !this._.inPre && 0 < this._.output.length && this._.output.push(this.lineBreakChars); + this._.indent = 1 + }, + indentation: function() { + !this._.inPre && this._.indentation && this._.output.push(this._.indentation); + this._.indent = 0 + }, + reset: function() { + this._.output = []; + this._.indent = 0; + this._.indentation = ""; + this._.afterCloser = 0; + this._.inPre = 0; + this._.needsSpace = 0 + }, + setRules: function(b, a) { + var c = this._.rules[b]; + c ? CKEDITOR.tools.extend(c, a, !0) : this._.rules[b] = + a + } + } + }); + (function() { + CKEDITOR.plugins.add("iframe", { + requires: "dialog,fakeobjects", + onLoad: function() { + CKEDITOR.addCss("img.cke_iframe{background-image: url(" + CKEDITOR.getUrl(this.path + "images/placeholder.png") + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}") + }, + init: function(a) { + var b = a.lang.iframe, + c = "iframe[align,longdesc,frameborder,height,name,scrolling,src,title,width]"; + a.plugins.dialogadvtab && (c += ";iframe" + a.plugins.dialogadvtab.allowedContent({ + id: 1, + classes: 1, + styles: 1 + })); + CKEDITOR.dialog.add("iframe", this.path + "dialogs/iframe.js"); + a.addCommand("iframe", new CKEDITOR.dialogCommand("iframe", { + allowedContent: c, + requiredContent: "iframe" + })); + a.ui.addButton && a.ui.addButton("Iframe", { + label: b.toolbar, + command: "iframe", + toolbar: "insert,80" + }); + a.on("doubleclick", function(a) { + var b = a.data.element; + b.is("img") && "iframe" == b.data("cke-real-element-type") && (a.data.dialog = "iframe") + }); + a.addMenuItems && a.addMenuItems({ + iframe: { + label: b.title, + command: "iframe", + group: "image" + } + }); + a.contextMenu && a.contextMenu.addListener(function(a) { + if (a && a.is("img") && "iframe" == a.data("cke-real-element-type")) return { + iframe: CKEDITOR.TRISTATE_OFF + } + }) + }, + afterInit: function(a) { + var b = a.dataProcessor; + (b = b && b.dataFilter) && b.addRules({ + elements: { + iframe: function(b) { + return a.createFakeParserElement(b, "cke_iframe", "iframe", !0) + } + } + }) + } + }) + })(); + (function() { + function m(a) { + function f(a) { + var b = !1; + g.attachListener(g, "keydown", function() { + var d = c.getBody().getElementsByTag(a); + if (!b) { + for (var e = 0; e < d.count(); e++) d.getItem(e).setCustomData("retain", !0); + b = !0 + } + }, null, null, 1); + g.attachListener(g, "keyup", function() { + var d = c.getElementsByTag(a); + b && (1 == d.count() && !d.getItem(0).getCustomData("retain") && CKEDITOR.tools.isEmpty(d.getItem(0).getAttributes()) && d.getItem(0).remove(1), b = !1) + }) + } + var b = this.editor, + c = a.document, + d = c.body, + e = c.getElementById("cke_actscrpt"); + e && e.parentNode.removeChild(e); + (e = c.getElementById("cke_shimscrpt")) && e.parentNode.removeChild(e); + (e = c.getElementById("cke_basetagscrpt")) && e.parentNode.removeChild(e); + d.contentEditable = !0; + CKEDITOR.env.ie && (d.hideFocus = !0, d.disabled = !0, d.removeAttribute("disabled")); + delete this._.isLoadingData; + this.$ = d; + c = new CKEDITOR.dom.document(c); + this.setup(); + this.fixInitialSelection(); + var g = this; + CKEDITOR.env.ie && !CKEDITOR.env.edge && c.getDocumentElement().addClass(c.$.compatMode); + CKEDITOR.env.ie && !CKEDITOR.env.edge && + b.enterMode != CKEDITOR.ENTER_P ? f("p") : CKEDITOR.env.edge && 15 > CKEDITOR.env.version && b.enterMode != CKEDITOR.ENTER_DIV && f("div"); + if (CKEDITOR.env.webkit || CKEDITOR.env.ie && 10 < CKEDITOR.env.version) c.getDocumentElement().on("mousedown", function(a) { + a.data.getTarget().is("html") && setTimeout(function() { + b.editable().focus() + }) + }); + n(b); + try { + b.document.$.execCommand("2D-position", !1, !0) + } catch (h) {}(CKEDITOR.env.gecko || CKEDITOR.env.ie && "CSS1Compat" == b.document.$.compatMode) && this.attachListener(this, "keydown", function(a) { + var c = + a.data.getKeystroke(); + if (33 == c || 34 == c) + if (CKEDITOR.env.ie) setTimeout(function() { + b.getSelection().scrollIntoView() + }, 0); + else if (b.window.$.innerHeight > this.$.offsetHeight) { + var d = b.createRange(); + d[33 == c ? "moveToElementEditStart" : "moveToElementEditEnd"](this); + d.select(); + a.data.preventDefault() + } + }); + CKEDITOR.env.ie && this.attachListener(c, "blur", function() { + try { + c.$.selection.empty() + } catch (a) {} + }); + CKEDITOR.env.iOS && this.attachListener(c, "touchend", function() { + a.focus() + }); + d = b.document.getElementsByTag("title").getItem(0); + d.data("cke-title", d.getText()); + CKEDITOR.env.ie && (b.document.$.title = this._.docTitle); + CKEDITOR.tools.setTimeout(function() { + "unloaded" == this.status && (this.status = "ready"); + b.fire("contentDom"); + this._.isPendingFocus && (b.focus(), this._.isPendingFocus = !1); + setTimeout(function() { + b.fire("dataReady") + }, 0) + }, 0, this) + } + + function n(a) { + function f() { + var c; + a.editable().attachListener(a, "selectionChange", function() { + var d = a.getSelection().getSelectedElement(); + d && (c && (c.detachEvent("onresizestart", b), c = null), d.$.attachEvent("onresizestart", + b), c = d.$) + }) + } + + function b(a) { + a.returnValue = !1 + } + if (CKEDITOR.env.gecko) try { + var c = a.document.$; + c.execCommand("enableObjectResizing", !1, !a.config.disableObjectResizing); + c.execCommand("enableInlineTableEditing", !1, !a.config.disableNativeTableHandles) + } catch (d) {} else CKEDITOR.env.ie && 11 > CKEDITOR.env.version && a.config.disableObjectResizing && f(a) + } + + function p() { + var a = []; + if (8 <= CKEDITOR.document.$.documentMode) { + a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}"); + var f = [], + b; + for (b in CKEDITOR.dtd.$removeEmpty) f.push("html.CSS1Compat " + + b + "[contenteditable\x3dfalse]"); + a.push(f.join(",") + "{display:inline-block}") + } else CKEDITOR.env.gecko && (a.push("html{height:100% !important}"), a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")); + a.push("html{cursor:text;*cursor:auto}"); + a.push("img,input,textarea{cursor:default}"); + return a.join("\n") + } + var l; + CKEDITOR.plugins.add("wysiwygarea", { + init: function(a) { + a.config.fullPage && a.addFeature({ + allowedContent: "html head title; style [media,type]; body (*)[id]; meta link [*]", + requiredContent: "body" + }); + a.addMode("wysiwyg", function(f) { + function b(b) { + b && b.removeListener(); + a.editable(new l(a, d.$.contentWindow.document.body)); + a.setData(a.getData(1), f) + } + var c = "document.open();" + (CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "") + "document.close();", + c = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent(c) + "}())" : "", + d = CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"' + c + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e'); + d.setStyles({ + width: "100%", + height: "100%" + }); + d.addClass("cke_wysiwyg_frame").addClass("cke_reset"); + c = a.ui.space("contents"); + c.append(d); + var e = CKEDITOR.env.ie && !CKEDITOR.env.edge || CKEDITOR.env.gecko; + if (e) d.on("load", b); + var g = a.title, + h = a.fire("ariaEditorHelpLabel", {}).label; + g && (CKEDITOR.env.ie && h && (g += ", " + h), d.setAttribute("title", g)); + if (h) { + var g = CKEDITOR.tools.getNextId(), + k = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + g + '" class\x3d"cke_voice_label"\x3e' + h + "\x3c/span\x3e"); + c.append(k, 1); + d.setAttribute("aria-describedby", + g) + } + a.on("beforeModeUnload", function(a) { + a.removeListener(); + k && k.remove() + }); + d.setAttributes({ + tabIndex: a.tabIndex, + allowTransparency: "true" + }); + !e && b(); + a.fire("ariaWidget", d) + }) + } + }); + CKEDITOR.editor.prototype.addContentsCss = function(a) { + var f = this.config, + b = f.contentsCss; + CKEDITOR.tools.isArray(b) || (f.contentsCss = b ? [b] : []); + f.contentsCss.push(a) + }; + l = CKEDITOR.tools.createClass({ + $: function() { + this.base.apply(this, arguments); + this._.frameLoadedHandler = CKEDITOR.tools.addFunction(function(a) { + CKEDITOR.tools.setTimeout(m, + 0, this, a) + }, this); + this._.docTitle = this.getWindow().getFrame().getAttribute("title") + }, + base: CKEDITOR.editable, + proto: { + setData: function(a, f) { + var b = this.editor; + if (f) this.setHtml(a), this.fixInitialSelection(), b.fire("dataReady"); + else { + this._.isLoadingData = !0; + b._.dataStore = { + id: 1 + }; + var c = b.config, + d = c.fullPage, + e = c.docType, + g = CKEDITOR.tools.buildStyleHtml(p()).replace(/