Lines Matching refs:b

20                     var b = window.CKEDITOR_BASEPATH || "";
21 if (!b)
25 b = g[1];
28 …} - 1 == b.indexOf(":/") && "//" != b.slice(0, 2) && (b = 0 === b.indexOf("/") ? location.href.mat…
29 b : location.href.match(/^[^\?]*\/(?:)/)[0] + b);
30 …if (!b) throw 'The CKEditor installation path could not be automatically detected. Please set the …
31 return b
42 …a, !1), b()) : document.attachEvent && "complete" === document.readyState && (document.detachEvent…
46 function b() {
50 return function(b) {
60 c.push(b);
68 b = !1;
70 b = !window.frameElement
72 document.documentElement.doScroll && b && n()
77 b = window.CKEDITOR_GETURL;
78 if (b) {
81 return b.call(d, a) || c.call(d, a)
88 b;
89 for (b in d) null == a[b] && (a[b] = d[b])
93 return f[a] || (f[a] = new b(a))
99 b = function(a) {
103 b.prototype = {
105 for (var b = 0, d = this.listeners; b < d.length; b++)
106 if (d[b].fn == a) return b;
111 define: function(b, d) {
112 var h = a.call(this, b);
115 on: function(b, d, h, k, g) {
118 name: b,
131 y.removeListener(b, d)
133 var e = a.call(this, b);
153 b = a[1];
156 return b.apply(this, arguments)
168 b = function() {
186 v[D].call(this, r, n, b, k)
187 } catch (x) {} else B = v[D].call(this, r, n, b, k);
198 fireOnce: function(a, b, h) {
199 b = this.fire(a, b, h);
201 return b
203 removeListener: function(a, b) {
206 var k = h.getListenerIndex(b);
212 b;
213 for (b in a) delete a[b]
239 b = -1 < a.indexOf("trident/"),
240 b = !(!d && !b),
241 b = {
242 ie: b,
244 webkit: !b && -1 < a.indexOf(" applewebkit/"),
253 b = window.location.hostname;
254 return a != b && a != "[" + b + "]"
258 b.gecko = "Gecko" == navigator.product && !b.webkit && !b.ie;
259 b.webkit && (-1 < a.indexOf("chrome") ? b.chrome = !0 : b.safari = !0);
261b.ie && (c = d ? parseFloat(d[1]) : b.quirks || !document.documentMode ? parseFloat(a.match(/msie …
262b.gecko && (d = a.match(/rv:([\d\.]+)/)) && (d = d[1].split("."), c = 1E4 * d[0] + 100 * (d[1] || …
263 b.air && (c = parseFloat(a.match(/ adobeair\/(\d+)/)[1]));
264 b.webkit && (c = parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));
265 b.version = c;
266 b.isCompatible = !(b.ie && 7 > c) && !(b.gecko && 4E4 > c) && !(b.webkit && 534 > c);
267 b.hidpi = 2 <= window.devicePixelRatio;
268 b.needsBrFiller = b.gecko || b.webkit || b.ie && 10 < c;
269 b.needsNbspFiller = b.ie && 11 > c;
270b.cssClass = "cke_browser_" + (b.ie ? "ie" : b.gecko ? "gecko" : b.webkit ? "webkit" : "unknown");
271 b.quirks && (b.cssClass += " cke_browser_quirks");
272b.ie && (b.cssClass += " cke_browser_ie" + (b.quirks ? "6 cke_browser_iequirks" : b.version));
273 b.air && (b.cssClass += " cke_browser_air");
274 b.iOS && (b.cssClass += " cke_browser_ios");
275 b.hidpi && (b.cssClass += " cke_hidpi");
276 return b
327 b = a.data.errorCode;
328 if (a = a.data.additionalData) console[d]("[CKEDITOR] Error code: " + b + ".", a);
329 else console[d]("[CKEDITOR] Error code: " + b + ".");
330 …tion about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#" + b)
337 b = /&/g,
360 for (var b = 0; b < a.length; b++)
361 if (a[b] != e[b]) return !1;
365 for (var b = 0; b < a.length; ++b)
366 if (e(a[b])) return b;
373 for (var b = 0; b < a.length; b++) e[b] = CKEDITOR.tools.clone(a[b]);
378 for (b in a) e[b] = CKEDITOR.tools.clone(a[b]);
387 b, v;
388 …"boolean" == typeof(b = arguments[e - 1]) ? e-- : "boolean" == typeof(b = arguments[e - 2]) && (v …
393 if (!0 === b || null == a[d])
405 b;
406 for (b in a) e[b] = a[b];
417 cssVendorPrefix: function(a, e, b) {
418 if (b) return d + a + ":" + e + ";" + a + ":" + e;
419 b = {};
420 b[a] = e;
421 b[d + a] = e;
422 return b
436 b = [], v = 0; v < a.length; v++)
437 …if (e = a[v]) /@import|[{}]/.test(e) ? b.push("\x3cstyle\x3e" + e + "\x3c/style\x3e") : b.push('\x…
438 return b.join("")
441 …return void 0 === a || null === a ? "" : String(a).replace(b, "\x26amp;").replace(c, "\x26gt;").re…
453 var b = e == CKEDITOR.ENTER_BR,
457 if (!b) {
466 b || (v = v.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/" + c + "\x3e)"), function(a) {
489 var b = e(a);
490 b.prototype = a.prototype;
491 return b
493 setTimeout: function(a, e, b, c, g) {
495 b || (b = g);
497 c ? a.apply(b, [].concat(c)) : a.apply(b)
501 throttle: function(a, e, b) {
503 b = b || {};
509 e.apply(b, n)
542 for (var b = 0, c = a.length; b < c; b++) {
543 if (e(a[b])) return b
546 b = 0;
547 for (c = a.length; b < c; b++)
548 if (a[b] === e) return b
553 var b = CKEDITOR.tools.indexOf(a, e);
554 return 0 <= b ? a[b] : null
563 b = a.base,
568 b &&
576 var b = c[e];
577 a[e] = "function" == typeof b ? CKEDITOR.tools.bind(b, this) : b
581b && (e.prototype = this.prototypedCopy(b.prototype), e.prototype.constructor = e, e.base = b, e.b…
582 this.base = b.prototype.base;
583 b.apply(this, arguments);
590 addFunction: function(b, e) {
592 return b.apply(e ||
596 removeFunction: function(b) {
597 a[b] = null
599 callFunction: function(b) {
600 var e = a[b];
606 return function(b) {
607 e = CKEDITOR.tools.trim(b + "") + "px";
608 return a.test(e) ? e : b || ""
623 for (var a, e = 0, b = arguments.length; e < b; e++) {
638 b = this;
640 a.apply(b, e)
645 var b = [],
648 for (c in g) b.push(c + ":" + g[c]);
649 b.sort();
650 return b.length ? b.join(";") + ";" : ""
653 … return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function(a, b, c, g) {
654 a = [b, c, g];
655 … for (b = 0; 3 > b; b++) a[b] = ("0" + parseInt(a[b], 10).toString(16)).slice(-2);
660 return a.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function(a, b, c, g) {
661 a = b.toLowerCase();
667 e, b) {
669b && (a = (new CKEDITOR.dom.element("span")).setAttribute("style", a).getAttribute("style") || "");
672 … a.replace(/&quot;/g, '"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function(a, b, g) {
673 …e && (b = b.toLowerCase(), "font-family" == b && (g = g.replace(/\s*,\s*/g, ",")), g = CKEDITOR.to…
674 c[b] = g
679 var b, c = [];
680 for (b in a) c.push(b + ":" + a[b]);
684 objectCompare: function(a, e, b) {
690 if (!b)
697 b;
698 for (b in a) e.push(b);
702 var b = {};
704 for (var c = 0, g = a.length; c < g; ++c) b[a[c]] = e;
705 return b
719 eventsBuffer: function(a, e, b) {
723 b ? e.call(b) : e()
740b = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgr…
744 for (var b = 0, c = a.length; b < c; ++b)
745 if (a[b].match(e)) return !0;
749 for (var b in a)
750 if (b.match(e)) return !0;
754 var b = this.keystrokeToArray(a, e);
755 b.display = b.display.join("+");
756 b.aria = b.aria.join("+");
757 return b
760 var b = e & 16711680,
765 b & CKEDITOR.CTRL && (d.push(g ? "⌘" : a[17]), n.push(g ? a[224] : a[17]));
766 b & CKEDITOR.ALT && (d.push(g ? "⌥" : a[18]), n.push(a[18]));
767 b & CKEDITOR.SHIFT && (d.push(g ? "⇧" : a[16]), n.push(a[16]));
777 for (var e = document.cookie.split(";"), b, c, g = 0; g < e.length; g++)
778 … if (b = e[g].split("\x3d"), c = decodeURIComponent(CKEDITOR.tools.trim(b[0]).toLowerCase()),
779 c === a) return decodeURIComponent(1 < b.length ? b[1] : "");
792 for (var b = 0; 40 > b; b++) a.push(Math.floor(256 * Math.random()));
793 … for (b = 0; b < a.length; b++) var c = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(a[b] %
805 var b = (a = a.data) && a.$;
806b ? CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? 4 === b.button ? CKEDITOR.MOUSE_BUTTON_MIDDLE : …
809 var b = [],
812 for (g = 0; g < c; g++) b.push(parseInt(a.substr(2 * g, 2), 16));
813 return b
816 var b = "",
830 …for (m = 0; 4 > m; m++) b = m <= n ? b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123…
832 return b
991 var b = {},
993 c.length && (b.color = c[0], CKEDITOR.tools.array.forEach(c, function(b) {
994 a = a.replace(b, "")
996 if (a = CKEDITOR.tools.trim(a)) b.unprocessed = a;
997 return b
1000 function b(a) {
1010 b([0, 0, 0, 0]);
1013 b([0, 1, 0, 1]);
1016 b([0, 1, 2, 1]);
1019 b([0, 1, 2, 3])
1024 var b = {},
1027 a.length && (b.color = a[0]);
1029b.style || -1 === CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle, a) ? !b.width &&…
1031 return b
1034 var b = [],
1036 b = b.concat(a.match(this._rgbaRegExp) || []),
1037 b = b.concat(a.match(this._hslaRegExp) || []);
1038 return b = b.concat(c.filter(a.split(/\s+/), function(a) {
1045 filter: function(a, b, c) {
1048 b.call(c, d, n, a) && g.push(d)
1052 forEach: function(a, b, c) {
1055 for (d = 0; d < g; d++) b.call(c, a[d], d, a)
1057 map: function(a, b, c) {
1058 for (var g = [], d = 0; d < a.length; d++) g.push(b.call(c,
1062 reduce: function(a, b, c, g) {
1063 for (var d = 0; d < a.length; d++) c = b.call(g, c, a[d], d, a);
1066 every: function(a, b, c) {
1068 b = this.filter(a, b, c);
1069 return a.length === b.length
1073 findKey: function(a, b) {
1076 if (a[c] === b) return c;
1079 merge: function(a, b) {
1082 d = c.clone(b);
1090 getAbsoluteRectPosition: function(a, b) {
1093 var b = a.getClientRect();
1094 g.top += b.top;
1095 g.left += b.left;
1096 "x" in g && "y" in g && (g.x += b.x, g.y += b.y);
1100 var g = CKEDITOR.tools.copy(b);
1119 d = function(a, b) {
1121 b = arguments[g];
1122 for (var d in b) delete c[d]
1126 b = {},
1176 a(b, {
1181 b: 1,
1238 a(c, f, b, n);
1240 a: d(b, {
1244 abbr: b,
1253 b: b,
1255 bdi: b,
1256 bdo: b,
1260 button: d(b, {
1264 canvas: b,
1266 cite: b,
1267 code: b,
1275 }, b),
1277 del: b,
1281 dfn: b,
1288 em: b,
1299 h1: b,
1300 h2: b,
1301 h3: b,
1302 h4: b,
1303 h5: b,
1304 h6: b,
1323 i: b,
1327 ins: b,
1328 kbd: b,
1330 label: b,
1331 legend: b,
1336 mark: b,
1341 meter: d(b, {
1349 }, b),
1352 }, b),
1360 output: b,
1361 p: b,
1363 pre: b,
1364 progress: d(b, {
1367 q: b,
1368 rp: b,
1369 rt: b,
1373 }, b),
1374 s: b,
1375 samp: b,
1382 small: b,
1384 span: b,
1385 strong: b,
1387 sub: b,
1395 }, b),
1396 sup: b,
1417 time: d(b, {
1426 u: b,
1430 "var": b,
1436 acronym: b,
1441 big: b,
1447 font: b,
1450 strike: b,
1451 tt: b
1542 $inline: b,
1589 b: 1,
1724 var a = function(a, b) {
1726 "undefined" != typeof CKEDITOR && a.fire(b, new CKEDITOR.dom.event(c))
1736 var b = this.getCustomData("_cke_nativeListeners");
1737 b || (b = {}, this.setCustomData("_cke_nativeListeners", b));
1738b[d] || (b = b[d] = a(this, d), this.$.addEventListener ? this.$.addEventListener(d, b, !!CKEDITOR…
1739 d, b));
1745 var b = this.getCustomData("_cke_nativeListeners"),
1746 c = b && b[a];
1747 …removeEventListener(a, c, !1) : this.$.detachEvent && this.$.detachEvent("on" + a, c), delete b[a])
1752 b;
1753 for (b in a) {
1754 var c = a[b];
1756 b, c) : this.$.removeEventListener && this.$.removeEventListener(b, c, !1);
1757 delete a[b]
1823 function b(c) {
1828 for (var f = 0; f < c.length; f++) b(c[f])
1832 function c(b) {
1833 if (b.type == CKEDITOR.NODE_ELEMENT || b.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
1834 if (b.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
1836 b.getName();
1837 ":" == d[0] && b.renameNode(d.substring(1))
1840 for (d = 0; d < b.getChildCount(); d++) c(b.getChild(d))
1844 b(f);
1869 for (var d = [], b = this.getDocument().$.documentElement, c = this.$; c && c != b;) {
1884 return n && n.nodeType == CKEDITOR.NODE_TEXT ? b(n) ? d(n,
1888 function b(a) {
1894 …if (!this.$.parentNode || a && c.nodeType == CKEDITOR.NODE_TEXT && b(c) && !d(c) && !d(c, !0)) ret…
1895 …do a && c != this.$ && c.nodeType == CKEDITOR.NODE_TEXT && (h || b(c)) || (f++, h = c.nodeType == …
1898 getNextSourceNode: function(a, d, b) {
1899 if (b && !b.call) {
1900 var c = b;
1901 b = function(a) {
1909 CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null;
1913 if (b && !1 === b(f, !0)) return null;
1916 … return !a || b && !1 === b(a) ? null : d && d != a.type ? a.getNextSourceNode(!1, d, b) : a
1918 getPreviousSourceNode: function(a, d, b) {
1919 if (b && !b.call) {
1920 var c = b;
1921 b = function(a) {
1928 if (this.type == CKEDITOR.NODE_ELEMENT && b && !1 === b(this, !0)) return null;
1932 if (b && !1 ===
1933 b(f, !0)) return null;
1936 … return !a || b && !1 === b(a) ? null : d && a.type != d ? a.getPreviousSourceNode(!1, d, b) : a
1940 b;
1941 …do b = (d = d.previousSibling) && 10 != d.nodeType && new CKEDITOR.dom.node(d); while (b && a && !…
1942 return b
1946 b;
1947 do b = (d = d.nextSibling) && new CKEDITOR.dom.node(d); while (b && a && !a(b));
1948 return b
1957 b = [];
1958 do b[a ? "push" : "unshift"](d); while (d = d.getParent());
1959 return b
1971 b = a.$;
1972 if (d.compareDocumentPosition) return d.compareDocumentPosition(b);
1973 if (d == b) return CKEDITOR.POSITION_IDENTICAL;
1977 … if (d.contains(b)) return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING;
1978 … if (b.contains(d)) return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING
1980 …dex" in d) return 0 > d.sourceIndex || 0 > b.sourceIndex ? CKEDITOR.POSITION_DISCONNECTED : d.sour…
1984 for (var b = Math.min(d.length, a.length), c = 0; c < b; c++)
1990 var b = this.$,
1992 d || (b = b.parentNode);
1993 "function" == typeof a ? (f = !0, c = a) : (f = !1, c = function(b) {
1994 b = "string" == typeof b.nodeName ? b.nodeName.toLowerCase() : "";
1995 return "string" == typeof a ? b == a : b in a
1997 for (; b;) {
1998 if (c(f ? new CKEDITOR.dom.node(b) : b)) return new CKEDITOR.dom.node(b);
2000 b = b.parentNode
2002 b = null
2008 var b = this.$;
2009 d || (b = b.parentNode);
2010 for (; b;) {
2011 if (b.nodeName && b.nodeName.toLowerCase() == a) return !0;
2012 b = b.parentNode
2021 b = d.parentNode;
2022 if (b) {
2024 for (; a = d.firstChild;) b.insertBefore(d.removeChild(a), d);
2025 b.removeChild(d)
2042 b = a.getLength();
2043 … if (d) d.length < b && (a.split(b - d.length), this.$.removeChild(this.$.firstChild));
2056 b = a.getLength();
2057 …if (d) d.length < b && (a.split(d.length), this.$.lastChild.parentNode.removeChild(this.$.lastChil…
2138 var b = new CKEDITOR.dom.element("style", this);
2139 b.append(new CKEDITOR.dom.text(a, this));
2140 this.getHead().append(b)
2143 b.$.sheet
2146 var b = new CKEDITOR.dom.element(a, this);
2147 d && (d.attributes && b.setAttributes(d.attributes), d.styles && b.setStyles(d.styles));
2148 return b
2169 for (var b =
2170 this.$.documentElement, c = 0; b && c < a.length; c++) {
2173 for (var h = -1, k = 0; k < b.childNodes.length; k++) {
2174 var g = b.childNodes[k];
2177 b = g;
2180 } else b = b.childNodes[f]
2182 return b ? new CKEDITOR.dom.node(b) : null
2245 var b = new CKEDITOR.dom.element("div", d);
2246 b.setHtml(a);
2247 return b.getFirst().remove()
2249 CKEDITOR.dom.element.setMarker = function(a, d, b, c) {
2253 h[b] = 1;
2254 return d.setCustomData(b, c)
2259 CKEDITOR.dom.element.clearMarkers = function(a, d, b) {
2265 b && (d.removeCustomData("list_marker_id"), delete a[f])
2268 function a(a, b) {
2269 return -1 < (" " + a + " ").replace(h, " ").indexOf(" " + b + " ")
2273 var b = !0;
2274 a.$.id || (a.$.id = "cke_tmp_" + CKEDITOR.tools.getNextNumber(), b = !1);
2276 b || a.removeAttribute("id")
2280 function b(a, b) {
2282 return "#" + c + " " + b.split(/,\s*/).join(", #" + c + " ")
2286 …for (var b = 0, c = 0, e = k[a].length; c < e; c++) b += parseFloat(this.getComputedStyle(k[a][c])…
2287 return b
2298 } : function(b) {
2300 c && (a(c, b) || (c += " " + b));
2301 this.$.className = c || b;
2305 var b = this.$;
2306 b.classList.remove(a);
2307 b.className || b.removeAttribute("class");
2309 } : function(b) {
2311 c && a(c, b) && ((c = c.replace(new RegExp("(?:^|\\s+)" +
2312b + "(?\x3d\\s|$)"), "").replace(/^\s+/, "")) ? this.setAttribute("class", c) : this.removeAttribu…
2315 hasClass: function(b) {
2316 return a(this.$.className, b)
2318 append: function(a, b) {
2320 b ? this.$.insertBefore(a.$, this.$.firstChild) : this.$.appendChild(a.$);
2325 var b = new CKEDITOR.dom.element("div", this.getDocument());
2326 b.setHtml(a);
2327 b.moveChildren(this)
2340 breakParent: function(a, b) {
2344 var e = c.extractContents(!1, b || !1),
2356 var b = this.$;
2357 return a.type != CKEDITOR.NODE_ELEMENT ? b.contains(a.getParent().$) :
2358 b != a.$ && b.contains(a.$)
2364 } catch (b) {}
2366 return function(b) {
2367 b ? CKEDITOR.tools.setTimeout(a, 100, this) : a.call(this)
2381 var b = CKEDITOR.tools.extend({},
2383 !b.width && (b.width = b.right - b.left);
2384 !b.height && (b.height = b.bottom - b.top);
2385 return a ? CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(), b) : b
2389 var b = this.$;
2390 if (this.getParent()) return b.innerHTML = a;
2392 c.appendChild(b);
2393 b.innerHTML = a;
2394 c.removeChild(b);
2398 b = new CKEDITOR.dom.element("body", this.getDocument());
2399 b.$.innerHTML = a;
2400 for (b = b.getChildren(); b.count();) this.append(b.getItem(0));
2410 return function(b) {
2411 this.$[a ? "textContent" : "innerText"] = b
2446 var b = {},
2451 …for (e = 0; e < c.length; e++) - 1 === CKEDITOR.tools.indexOf(a, c[e].name) && (b[c[e].name] = c[e…
2452 return b
2458 var b = this.getWindow().$.getComputedStyle(this.$, null);
2459 return b ? b.getPropertyValue(a) : ""
2491 var b = this.$.scopeName;
2492 "HTML" != b && (a = b.toLowerCase() + ":" + a)
2503 var b = this.$.firstChild;
2504 (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getNext(a));
2505 return b
2508 var b = this.$.lastChild;
2509 (b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getPrevious(a));
2510 return b
2518 for (var b = 0; b < arguments.length; b++)
2519 if (arguments[b] == a) return !0;
2523 var b = this.getName();
2524b] || CKEDITOR.dtd.$empty[b] || this.is("a") && (this.data("cke-saved-name") || this.hasAttribute(…
2528 var b = this.clone(0, 1);
2530b.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"…
2532b.$.isEqualNode) return b.$.style.cssText = CKEDITOR.tools.normalizeCssText(b.$.style.cssText), a.…
2533 b = b.getOuterHtml();
2538 …c.type == CKEDITOR.NODE_ELEMENT && (c = c.clone(), c.setHtml(b), b = c.getHtml(), c.setHtml(a), a …
2540 return b == a
2544 b, c;
2545 …a && CKEDITOR.env.webkit && (b = this.getWindow(), !b.equals(CKEDITOR.document.getWindow()) && (c …
2550 for (var a = this.getChildren(), b = 0, c = a.count(); b < c; b++) {
2551 var e = a.getItem(b);
2558 for (var a = this.$.attributes, b = 0; b < a.length; b++) {
2559 var c = a[b];
2572 b = a.length,
2577 return 0 < b && (2 < b || !c[a[0].nodeName] || 2 == b && !c[a[1].nodeName])
2580 function a(b) {
2581 var c = this.$.attributes.getNamedItem(b);
2582 if ("input" == this.getName()) switch (b) {
2588 …return b = this.getAttribute("type"), "checkbox" == b || "radio" == b ? "on" != this.$.value : !!t…
2593 return CKEDITOR.env.ie ? 8 > CKEDITOR.env.version ? function(b) {
2594 return "name" == b ? !!this.$.name : a.call(this, b)
2602 moveChildren: function(a, b) {
2607 if (b)
2614 function a(b, c, e) {
2618 if (b.isIdentical(c)) {
2619 … for (var g = e ? b.getLast() : b.getFirst(); d.length;) d.shift().move(b, !e);
2620 c.moveChildren(b, !e);
2626 return function(b) {
2627 …if (!1 === b || CKEDITOR.dtd.$removeEmpty[this.getName()] || this.is("a")) a(this, this.getNext(),…
2637 var a = function(a, b) {
2638 this.$.setAttribute(a, b);
2641 … return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function(b, c) {
2642b ? this.$.className = c : "style" == b ? this.$.style.cssText = c : "tabindex" == b ? this.$.tabI…
2644 } : CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ? function(b, c) {
2645 if ("src" == b && c.match(/^http:\/\//)) try {
2653 for (var b in a) this.setAttribute(b, a[b]);
2671 for (var b =
2672 0; b < a.length; b++) this.removeAttribute(a[b]);
2674 … for (b in a = a || this.getAttributes(), a) a.hasOwnProperty(b) && this.removeAttribute(b)
2677 var b = this.$.style;
2678 …if (b.removeProperty || "border" != a && "margin" != a && "padding" != a) b.removeProperty ? b.rem…
2683 for (var b = [], d = 0; d < c.length; d++)
2686 0; v < e.length; v++) b.push([a, c[d], e[v]].join("-"));
2687 else b.push([a, c[d]].join("-"));
2688 for (a = 0; a < b.length; a++) this.removeStyle(b[a])
2691 setStyle: function(a, b) {
2692 this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] = b;
2696 for (var b in a) this.setStyle(b, a[b]);
2707 …for (var a, b = this.getElementsByTag("*"), c = 0, e = b.count(); c < e; c++) a = b.getItem(c), a.…
2719 var b = 0,
2732 …on ? (b = d.$.scrollLeft || h.scrollLeft, c = d.$.scrollTop || h.scrollTop) : (c = v ? d.$ : h, b
2736 b += x.$.offsetLeft - x.$.scrollLeft;
2738 x.equals(this) || (b += x.$.clientLeft || 0, c += x.$.clientTop || 0);
2739 … for (; m && !m.equals(x);) b -= m.$.scrollLeft, c -= m.$.scrollTop, m = m.getParent();
2743 … && (a = (new CKEDITOR.dom.element(f.$.frameElement)).getDocumentPosition(a), b += a.x, c += a.y));
2745 v || (b += this.$.clientLeft ? 1 : 0, c += this.$.clientTop ? 1 : 0);
2747 x: b,
2752 var b = this.getParent();
2753 if (b) {
2755b.$.clientWidth && b.$.clientWidth < b.$.scrollWidth || b.$.clientHeight && b.$.clientHeight < b.$…
2756 var c = b.getWindow();
2759 e && (b = new CKEDITOR.dom.element(e))
2761 } while (b = b.getParent())
2764 scrollIntoParent: function(a, b, c) {
2767 function h(b, c) {
2769 a.getWindow().$.scrollBy(b, c) : (a.$.scrollLeft += b, a.$.scrollTop += c)
2772 function x(a, b) {
2783 … e.equals(b) || (e = x(CKEDITOR.dom.element.get(e.$.frameElement), b), c.x += e.x, c.y += e.y);
2787 function m(a, b) {
2788 return parseInt(a.getComputedStyle("margin-" + b) || 0, 10) || 0
2805 (0 > f || 0 < d) && h(0, !0 === b ? f : !1 === b ? d : 0 > f ? f : d);
2808 setState: function(a, b, c) {
2809 b = b || "cke";
2812 this.addClass(b + "_on");
2813 this.removeClass(b +
2815 this.removeClass(b + "_disabled");
2820 this.addClass(b + "_disabled");
2821 this.removeClass(b + "_off");
2822 this.removeClass(b + "_on");
2827 …this.addClass(b + "_off"), this.removeClass(b + "_on"), this.removeClass(b + "_disabled"), c && th…
2834 } catch (b) {
2839 copyAttributes: function(a, b) {
2841 b = b || {};
2846 if (!(v in b))
2855 var b = this.getDocument();
2856 a = new CKEDITOR.dom.element(a, b);
2866 function a(b, c) {
2867 var e = b.childNodes;
2870 return function(b) {
2872 if (b.slice)
2873 for (b = b.slice(); 0 < b.length && c;) c = a(c,
2874 b.shift());
2875 else c = a(c, b);
2883 function a(b) {
2884 return b.type == CKEDITOR.NODE_ELEMENT && b.hasClass("cke_enable_context_menu")
2886 this.on("contextmenu", function(b) {
2887 b.data.getTarget().getAscendant(a, !0) || b.data.preventDefault()
2894 data: function(a, b) {
2896 if (void 0 === b) return this.getAttribute(a);
2897 !1 === b ? this.removeAttribute(a) : this.setAttribute(a, b);
2901 var b = CKEDITOR.instances,
2904 for (c in b)
2905 …if (e = b[c], e.element.equals(this) && e.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || !a && (…
2910 a = new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b(this,
2917 a = this.$.querySelector(b(this, a));
2921 forEach: function(a, b, c) {
2922 if (!(c || b && this.type != b)) var e = a(this);
2925 …d++) e = c.getItem(d), e.type == CKEDITOR.NODE_ELEMENT ? e.forEach(a, b) : b && e.type != b || a(e)
2933 CKEDITOR.dom.element.prototype.setSize = function(a, b, d) {
2934 …"number" == typeof b && (!d || CKEDITOR.env.ie && CKEDITOR.env.quirks || (b -= c.call(this, a)), t…
2936 CKEDITOR.dom.element.prototype.getSize = function(a, b) {
2938 b && (d -= c.call(this, a));
2982 function a(a, b) {
3000 this._.guardLTR = function(a, b) {
3001 return (!b || !L.equals(a)) && (!C ||
3002 … !a.equals(C)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !a.equals(c.root))
3008 this._.guardRTL = function(a, b) {
3009 …return (!b || !k.equals(a)) && (!q || !a.equals(q)) && (a.type != CKEDITOR.NODE_ELEMENT || !b || !…
3013 h = l ? function(a, b) {
3014 return !1 === E(a, b) ? !1 : l(a, b)
3021 if (!b) return e
3022 } else if (b && this.evaluator) return !1;
3029 function d(b) {
3030 for (var c, e = null; c = a.call(this, b);) e = c;
3067 var b = {
3085 …his.getComputedStyle("float") || this.getComputedStyle("position") in c || !b[this.getComputedStyl…
3088 return function(b) {
3089 return !(b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary(a))
3097 CKEDITOR.dom.walker.bookmark = function(a, b) {
3105 return !!(b ^ d)
3109 return function(b) {
3111b && b.type == CKEDITOR.NODE_TEXT && (c = !CKEDITOR.tools.trim(b.getText()) || CKEDITOR.env.webkit…
3117 var b = CKEDITOR.dom.walker.whitespaces(),
3120b(e) ? e = 1 : (e.type == CKEDITOR.NODE_TEXT && (e = e.getParent()), e = e.$.offsetWidth <= c);
3124 CKEDITOR.dom.walker.nodeType = function(a, b) {
3126 return !!(b ^ c.type == a)
3130 function b(a) {
3135 e && (e = c.getParent(), c = c.getNext(b), e = e.isBlockBoundary() &&
3141 return function(b) {
3142 b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent());
3143 b = b && b.hasAttribute("data-cke-temp");
3144 return !!(a ^ b)
3156 return function(b) {
3157 b = h(b) || k(b) || g(b);
3158 return !!(a ^ b)
3163 return function(b) {
3164 for (var c = 0, e = b.getChildCount(); c < e; ++c)
3165 if (!r(b.getChild(c))) return !!a;
3171 var b = {},
3173 for (c in a) CKEDITOR.dtd[c]["#"] && (b[c] = 1);
3174 return b
3181 return function(b) {
3182 b =
3183b) ? !1 : b.type == CKEDITOR.NODE_TEXT || b.type == CKEDITOR.NODE_ELEMENT && (b.is(CKEDITOR.dtd.$i…
3184 return !!(a ^ b)
3205 function d(a, b, c, d, f) {
3206 function h(a, b, c, e) {
3209 l || e ? b.append(a.clone(!0, f), c) : (a.remove(), r && b.append(a, c));
3214 var a, b, c, e = Math.min(O.length, p.length);
3216 if (b = O[a], c = p[a], !b.equals(c)) return a;
3221 var b = N - 1,
3223 b < w - 1 || b < A - 1 || c ? (c ? a.moveToPosition(F,
3224b + 1 && q ? a.moveToPosition(p[b], CKEDITOR.POSITION_BEFORE_END) : a.moveToPosition(p[b + 1], CKE…
3229 var k = 0 === b,
3230 r = 1 == b,
3231 l = 2 == b;
3232 b = l || r;
3246 …for (Q != w || X.equals(p[Q]) && w < A ? b && (I = G.append(X.clone(0, f))) : M ? h(X, G, !1, E) :…
3257 if (c = p[Q], V = c.getPrevious(), c.equals(O[Q])) b && (G = G.getChild(0));
3259 …Q != A || c.equals(O[Q]) && A < w ? b && (I = G.append(c.clone(0, f))) : q ? h(c, G, !1, z) : P &&…
3267 function b() {
3269 b = CKEDITOR.dom.walker.whitespaces(),
3273 …return c(f) || b(f) ? !0 : d(f) && !a ? a = !0 : f.type == CKEDITOR.NODE_TEXT && (f.hasAscendant("…
3278 var b = CKEDITOR.dom.walker.whitespaces(),
3281 …return c(d) || b(d) ? !0 : !a && k(d) || d.type == CKEDITOR.NODE_ELEMENT && d.is(CKEDITOR.dtd.$rem…
3287 var b;
3289 !b && r(a) && (b = a);
3290 return n(a) && !(k(a) && a.equals(b))
3297 b: 1,
3342 var b = new CKEDITOR.dom.documentFragment(this.document);
3344 d(this, 2, b, !1, "undefined" == typeof a ? !0 : a);
3345 return b
3350 extractContents: function(a, b) {
3352 this.collapsed || d(this, 1, c, a, "undefined" == typeof b ? !0 : b);
3356 var b, c, d, f, h = this.collapsed;
3357 b = this.document.createElement("span");
3358 b.data("cke-bookmark", 1);
3359 b.setStyle("display", "none");
3360 b.setHtml("\x26nbsp;");
3361 a && (d = "cke_bm_" + CKEDITOR.tools.getNextNumber(), b.setAttribute("id",
3363 …h || (c = b.clone(), c.setHtml("\x26nbsp;"), a && c.setAttribute("id", d + "E"), f = this.clone(),…
3366 f.insertNode(b);
3367 …c ? (this.setStartAfter(b), this.setEndBefore(c)) : this.moveToPosition(b, CKEDITOR.POSITION_AFTER…
3369 startNode: a ? d + (h ? "C" : "S") : b,
3376 function a(b) {
3377 var e = b.container,
3378 d = b.offset,
3403 b.container = e;
3404 b.offset = d
3407 function b(a, c) {
3426 b(f, this.root), d || (a(m), b(m, this.root)));
3440 var b = this.document.getByAddress(a.start, a.normalized),
3444 this.setStart(b, c);
3446 } else b = (c = a.serializable) ? this.document.getById(a.startNode) : a.startNode,
3447 …a = c ? this.document.getById(a.endNode) : a.endNode, this.setStartBefore(b), b.remove(), a ? (thi…
3451 b = this.endContainer,
3463 if (b.type == CKEDITOR.NODE_ELEMENT)
3464 if (f = b.getChildCount(),
3465 f > d) b = b.getChild(d).getPreviousSourceNode(!0);
3466 else if (1 > f) b = b.getPreviousSourceNode();
3468 for (b = b.$; b.lastChild;) b = b.lastChild;
3469 b = new CKEDITOR.dom.node(b)
3471 a.getPosition(b) & CKEDITOR.POSITION_FOLLOWING && (a = b);
3474 endNode: b
3477 getCommonAncestor: function(a, b) {
3481 return b && !c.is ? c.getParent() : c
3486 b = this.startOffset;
3487 …a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setStartAfter(a) : this.setStar…
3489 b = this.endOffset;
3490 …a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setEndAfter(a) : this.setEndBef…
3494 b = this.endContainer;
3496b && b.is && b.is("span") && b.data("cke-bookmark") && this.setEndAt(b, CKEDITOR.POSITION_AFTER_EN…
3498 trim: function(a, b) {
3520b || f || !c || c.type != CKEDITOR.NODE_TEXT || (d ? (d >= c.getLength() || c.split(d), d = c.getI…
3522 enlarge: function(a, b) {
3531 var h = function(a, b) {
3533 c.setStart(a, b);
3541 M = e != a ? e.getText() : e.substring(b);
3566 …else if ((t.$.offsetWidth > (CKEDITOR.env.webkit ? 1 : 0) || b && t.is("br")) && !t.data("cke-book…
3607 … if ((0 < t.$.offsetWidth || b && t.is("br")) && !t.data("cke-bookmark"))
3655 var b = O(a);
3656 b || (H = a);
3657 return b
3660 var b = N(a);
3661 !b && a.is && a.is("br") && (P = a);
3662 return b
3690 shrink: function(a, b, c) {
3706 h.evaluator = function(b) {
3707 … return b.type == (a == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT)
3710 h.guard = function(b, c) {
3711 if (f && F(b) || t(b)) return !0;
3712b.type == CKEDITOR.NODE_TEXT || c && b.equals(L) || !1 === d && b.type == CKEDITOR.NODE_ELEMENT &&…
3713 c || b.type != CKEDITOR.NODE_ELEMENT || (L = b);
3716 … CKEDITOR.SHRINK_ELEMENT ? "lastForward" : "next"]()) && this.setStartAt(m, b ? CKEDITOR.POSITION_…
3717 …EDITOR.SHRINK_ELEMENT ? "lastBackward" : "previous"]()) && this.setEndAt(h, b ? CKEDITOR.POSITION_…
3725 var b = this.startContainer,
3726 c = b.getChild(this.startOffset);
3727 c ? a.insertBefore(c) : b.append(a);
3731 moveToPosition: function(a, b) {
3732 this.setStartAt(a, b);
3744 setStart: function(b, c) {
3745b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && (c = b.getIndex(), b = b.ge…
3746 this._setStartContainer(b);
3748 this.endContainer || (this._setEndContainer(b), this.endOffset = c);
3751 setEnd: function(b, c) {
3752b.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[b.getName()] && (c = b.getIndex() + 1, b =
3753 this._setEndContainer(b);
3756 (this._setStartContainer(b), this.startOffset = c);
3771 setStartAt: function(b, c) {
3774 this.setStart(b, 0);
3777 b.type == CKEDITOR.NODE_TEXT ? this.setStart(b,
3778 b.getLength()) : this.setStart(b, b.getChildCount());
3781 this.setStartBefore(b);
3784 this.setStartAfter(b)
3788 setEndAt: function(b, c) {
3791 this.setEnd(b, 0);
3794b.type == CKEDITOR.NODE_TEXT ? this.setEnd(b, b.getLength()) : this.setEnd(b, b.getChildCount());
3797 this.setEndBefore(b);
3800 this.setEndAfter(b)
3804 fixBlock: function(a, b) {
3806 d = this.document.createElement(b);
3818 splitBlock: function(a, b) {
3830 b || !1), f.is("ul", "ol") || f.appendBogus()));
3839 splitElement: function(a, b) {
3842 var c = this.extractContents(!1, b || !1),
3843 d = a.clone(!1, b || !1);
3852 … return b(a) || c(a) || a.type == CKEDITOR.NODE_ELEMENT && a.isEmptyInlineRemoveable() ||
3856 var b = CKEDITOR.dom.walker.whitespaces(),
3858 return function(b) {
3859 …d = this[b ? "endPath" : "startPath"](), f = d.block || d.blockLimit, h; f && !f.equals(d.root) &&…
3870 checkBoundaryOfElement: function(a, b) {
3871 var d = b == CKEDITOR.START,
3890 a.evaluator = b();
3903 a.evaluator = b();
3906 getPreviousNode: function(a, b, c) {
3912 c.guard = b;
3915 getNextNode: function(a, b, c) {
3921 c.guard = b;
3925 function a(b, c) {
3926 for (; b;) {
3927 if (b.type ==
3929 … if ("false" == b.getAttribute("contentEditable") && !b.data("cke-editable")) return 0;
3930 …if (b.is("html") || "true" == b.getAttribute("contentEditable") && (b.contains(c) || b.equals(c)))…
3932 b = b.getParent()
3937 var b = this.startContainer,
3939 return !(a(b, c) && a(c, b))
3942 moveToElementEditablePosition: function(a, b) {
3943 …= CKEDITOR.NODE_ELEMENT && !a.isEditable(!1)) return this.moveToPosition(a, b ? CKEDITOR.POSITION_…
3947b && this.endContainer && this.checkEndOfBlock() && g.test(a.getText()) ? this.moveToPosition(a, C…
3952 …if (a.isEditable()) this.moveToPosition(a, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AF…
3953 …else if (b && a.is("br") && this.endContainer && this.checkEndOfBlock()) this.moveToPosition(a, CK…
3958 … d.type == CKEDITOR.NODE_ELEMENT && d.isEditable(!1) && (h = d[b ? "getLast" : "getFirst"](r));
3959 f || h || (h = d[b ? "getPrevious" : "getNext"](r));
3964 moveToClosestEditablePosition: function(a, b) {
3967 … a ? (c = new CKEDITOR.dom.range(this.root), c.moveToPosition(a, m[b ? 0 : 1])) : c = this.clone();
3970b ? "getNextEditableNode" : "getPreviousEditableNode"]()) d = 1, (h = f.type == CKEDITOR.NODE_ELEM…
3985 b = CKEDITOR.dom.walker.bookmark(!1, !0),
3988 return c(a) && b(a)
4014 var b = this.startContainer,
4016 d = b.getAscendant("table", !0),
4019b.getAscendant(a, !0) : this.getEnclosedNode() ? this.getEnclosedNode().getAscendant(a, !0) : d &&…
4023 b, c, d, f = this.clone();
4025 …artContainer.type == CKEDITOR.NODE_TEXT) ? (c = f.startContainer.getText(), b = f.startContainer.s…
4027 d && (f.startContainer.setText(c), b.remove());
4031 function a(b, c) {
4032 var d = CKEDITOR.tools.array.map(b, function(a) {
4045 var b = c.root.editor;
4047 return b.widgets.instances[a].element
4049 var b;
4050 b = a.getParent().hasClass("cke_widget_wrapper") ? a.getParent() :
4053 f.setStart(b.getParent().$, b.getIndex());
4054 f.setEnd(b.getParent().$, b.getIndex() + 1);
4055 b = f.getClientRects();
4056 b.widgetRect = a.getClientRect();
4057 return b
4059 function b(e) {
4060 CKEDITOR.tools.array.forEach(d, function(b, f) {
4061 var l = CKEDITOR.tools.objectCompare(a[e], b);
4062 l || (l = CKEDITOR.tools.objectCompare(a.widgetRect, b));
4065 c || (e < d.length - 1 ? b(e + 1) : d.push(a.widgetRect))
4068 b(0)
4072 function b(a, c, e) {
4079 function c(a, b, d) {
4081 b && (a = CKEDITOR.tools.getAbsoluteRectPosition(d.document.getWindow(), a));
4088 var b = a.startNode;
4091 b.setText("​");
4092 b.removeStyle("display");
4093 …"​"), a.removeStyle("display"), c = [b.getClientRect(), a.getClientRect()], a.remove()) : c = [b.g…
4094 b.remove();
4111 m.length || (m = b(m, f, this));
4125 _find: function(a, b) {
4132 …if (c = m.getItem(h), b || !c.isReadOnly()) g = c.getPosition(d.startNode) & CKEDITOR.POSITION_FOL…
4138 return CKEDITOR.tools.array.reduce(a, function(a, b) {
4141 b = b.clone();
4142 b.enlarge(CKEDITOR.ENLARGE_ELEMENT);
4144 var e = new CKEDITOR.dom.range(b.root),
4148 e.setEnd(b.startContainer, b.startOffset);
4149 for (e = d.next(); f(e) || b.endContainer.equals(e);) e = d.next();
4152 d ? c.setEnd(b.endContainer, b.endOffset) : a.push(b);
4176 var b = [];
4178 if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1
4180 return b
4183 function b(a, c, f, h) {
4196 … if ((g = CKEDITOR.filter.instances[h.element.data("cke-filter")]) && !g.check(c)) return b(a,
4206 function c(a, b, c) {
4207 if (!b) return !1;
4210 return a.checkBoundaryOfElement(b, c ? CKEDITOR.START : CKEDITOR.END)
4230 …if (b(this, a, this._.nestedEditable.container, this._.nestedEditable.remaining)) return this.acti…
4263 b(this, a, d);
4326 _getNextSourceNode: function(a, b, c) {
4332 … for (a = a.getNextSourceNode(b, null, d); !h(a);) a = a.getNextSourceNode(b, null, d);
4342 this.exec = function(b) {
4345 return !1 === this.fire("exec") ? !0 : !1 !== d.exec.call(this, a, b)
4347 this.refresh = function(a, b) {
4349 …if (this.context && !b.isContextFor(this.context) || !this.checkAllowed(!0)) return this.disable()…
4354 path: b
4357 var b;
4359 return c || "boolean" != typeof b ? b = a.activeFilter.checkFeature(this) : b
4418 function a(a, b, c, d, f) {
4421 for (e in b) {
4422 w = b[e];
4452 b = f.elements;
4478 if (b[F]) b[F][w ? "unshift" : "push"](e);
4479 else b[F] = [e]
4486 …llAttributes || (d.allAttributes = b(a.attributes, c.attributes, d.validAttributes)), d.allStyles …
4502 function b(a, b, c) {
4505 for (var d in b) c[d] || (c[d] = a(d));
4509 function c(a, b, c) {
4510 if (!a.match || a.match(b)) {
4512 c.hadInvalidAttribute = f(a.attributes, b.attributes) || c.hadInvalidAttribute;
4513 c.hadInvalidStyle = f(a.styles, b.styles) || c.hadInvalidStyle;
4515 b = b.classes;
4517 for (var d = !1, e = !0 === a, l = b.length; l--;)
4518 if (e || a(b[l])) b.splice(l, 1), d = !0;
4526 b) {
4531 for (f in b)
4532 if (d || a(f)) delete b[f], c = !0;
4536 function h(a, b, c) {
4537 if (a.disabled || a.customConfig && !c || !b) return !1;
4542 function k(a, b) {
4545 …ing" == typeof a) return a = z(a), "*" == a ? !0 : CKEDITOR.tools.convertArrayToObject(a.split(b));
4554 function g(a, b) {
4558 for (e = b.classes, c = 0; c < f.length; ++c)
4562 return n(b.styles, a.requiredStyles) && n(b.attributes, a.requiredAttributes)
4565 function n(a, b) {
4566 if (!b) return !0;
4567 for (var c = 0, d; c < b.length; ++c)
4568 if (d = b[c], "string" == typeof d) {
4577 for (var b = {}; a.length;) b[a.shift()] = "cke-test";
4578 return b
4582 var b, c, d, f, e = {},
4584 …for (a = z(a); b = a.match(p);)(c = b[2]) ? (d = y(c, "styles"), f = y(c, "attrs"), c = y(c, "clas…
4585 elements: b[1],
4589 }, a = a.slice(b[0].length);
4593 function y(a, b) {
4594 var c = a.match(N[b]);
4599 var b = a.styleBackup = a.attributes.style,
4601 a.styles || (a.styles = CKEDITOR.tools.parseCssText(b ||
4606 function B(a, b, f, e) {
4609 e.toHtml && (b.name = b.name.replace(w, "$1"));
4614 if (E = p[h](b)) {
4621 if (e.doTransform && (p = a._.transformations[b.name])) {
4622 v(b);
4623 for (h = 0; h < p.length; ++h) t(a, b, p[h]);
4624 x(b)
4628 …h = b.name;q = a._;a = q.allowedRules.elements[h];p = q.allowedRules.generic;h = q.disallowedRules…
4644 v(b);
4647 if (!1 === c(h[g], b, z)) {
4651 for (g = 0, k = q.length; g < k; ++g) c(q[g], b, z);
4653 for (g = 0, k = a.length; g < k; ++g) d(a[g], b, z, E);
4655 for (g = 0, k = p.length; g < k; ++g) d(p[g], b, z, E);
4659 if (!a || !a.valid) return f.push(b),
4663 var h = b.attributes,
4664 F = b.styles,
4665 q = b.classes;E = b.classBackup;
4666 var L = b.styleBackup,
4669 …O = /^data-cke-/;g = !1;delete h.style;delete h["class"];delete b.classBackup;delete b.styleBackup;
4682 if (!e.skipFinalValidation && !m(b)) return f.push(b),
4685 e.toHtml && (b.name = b.name.replace(A, "cke:$1"));
4690 var b = [],
4692 for (c in a) - 1 < c.indexOf("*") && b.push(c.replace(/\*/g, ".*"));
4693 return b.length ? new RegExp("^(?:" + b.join("|") + ")$") : null
4697 var b = a.attributes,
4699 delete b.style;
4700 delete b["class"];
4701 if (c = CKEDITOR.tools.writeCssText(a.styles, !0)) b.style = c;
4702 a.classes.length && (b["class"] = a.classes.sort().join(" "))
4719 var b = D(a);
4721 return c in a || b && c.match(b)
4734 function l(a, b, c) {
4736 …if (q.$empty[d] || !a.children.length) "hr" == d && "br" == b ? a.replaceWith(u()) : (a.parent && …
4741 …if ("br" == b) a.previous && !K(a.previous) && (b = u(), b.insertBefore(a)), a.next && !K(a.next) …
4745 b: {
4746 f = q[b];
4750 break b
4753 if (f) a.name = b, a.attributes = {}, c.push({
4759 …_ELEMENT && q.$inline[w.name]) ? (p || (p = new CKEDITOR.htmlParser.element(b), p.insertAfter(a), …
4778 function t(a, b, c) {
4781 if (f = c[d], !(f.check && !a.check(f.check, !1) || f.left && !f.left(b))) {
4782 f.right(b, G);
4787 function F(a, b) {
4788 var c = b.getDefinition(),
4804 function L(a, b) {
4811 c.transform(a, b)
4817 return function(b) {
4818 return F(b, a)
4823 return function(b, c) {
4824 c[a](b)
4856 var b = a.config.allowedContent;
4857 …!0 === b ? this.disabled = !0 : (b || (this.customConfig = !1), this.allow(b, "config", 1), this.a…
4863 allow: function(b, c, d) {
4864 if (!h(this, b, d)) return !1;
4866 if ("string" == typeof b) b = e(b);
4867 else if (b instanceof CKEDITOR.style) {
4868 … if (b.toAllowedContentRules) return this.allow(b.toAllowedContentRules(this.editor), c, d);
4869 f = b.getDefinition();
4870 b = {};
4872 b[f.element] = f = {
4877 } else if (CKEDITOR.tools.isArray(b)) {
4878 for (f = 0; f < b.length; ++f) l = this.allow(b[f], c, d);
4881 a(this, b, c, this.allowedContent, this._.allowedRules);
4884 applyTo: function(a, b, c, d) {
4894 toHtml: b
4899 …if (!b || "span" != a.name || !~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-ck…
4944 disallow: function(b) {
4945 if (!h(this, b, !0)) return !1;
4946 "string" == typeof b && (b = e(b));
4947 a(this, b, null, this.disallowedContent, this._.disallowedRules);
4952 var b, c, d = [],
4954 …for (b = 0; b < a.length && !f; ++b) c = a[b], ("string" == typeof c || c instanceof CKEDITOR.styl…
4956 for (b = 0; b < a.length; ++b) d.push(L(a[b], f));
4974 var b, c;
4979 b = a[f];
4987 …for (l = 0; l < b.length; ++l) w = b[l], "string" == typeof w ? (w = w.split(/\s*:\s*/), p = w[0],…
4993 b = e;
4994 d[b] || (d[b] = []);
4995 d[b].push(c)
4999 check: function(a, b, c) {
5003 if (this.check(a[d], b, c)) return !0;
5008 w = a + "\x3c" + (!1 === b ? "0" : "1") + (c ? "1" : "0") + "\x3e";
5030 if (!1 !== b && (h = this._.transformations[f.name])) {
5037 doTransform: !1 !== b,
5041b = f.attributes["class"]) && (f.attributes["class"] = f.attributes["class"].split(" ").sort().joi…
5047 b = {
5057 if (this.check(e)) return b[e];
5063 b = CKEDITOR.tools.clone;
5064 a.allowedContent = b(this.allowedContent);
5065 a._.allowedRules = b(this._.allowedRules);
5066 a.disallowedContent = b(this.disallowedContent);
5067 a._.disallowedRules = b(this._.disallowedRules);
5068 a._.transformations = b(this._.transformations);
5109 lengthToStyle: function(a, b, c) {
5110 c = c || b;
5112 var d = a.attributes[b];
5115 delete a.attributes[b]
5117 lengthToAttribute: function(a, b, c) {
5118 c = c || b;
5120 var d = a.styles[b],
5124 delete a.styles[b]
5129 var b = a.attributes.align;
5130 if ("left" == b || "right" == b) a.styles["float"] = b
5136 var b = a.styles["float"];
5137 if ("left" == b || "right" == b) a.attributes.align = b
5143 var b = CKEDITOR.tools.style.parse.border(a.styles.border);
5144 b.color && (a.styles["border-color"] = b.color);
5145 b.style && (a.styles["border-style"] = b.style);
5146 b.width && (a.styles["border-width"] = b.width);
5172 function b(d) {
5183 b([0, 0, 0, 0]);
5186 b([0, 1, 0, 1]);
5189 b([0, 1, 2, 1]);
5192 b([0, 1, 2, 3])
5198 transform: function(a, b) {
5199 if ("string" == typeof b) a.name = b;
5201 var c = b.getDefinition(),
5253 var b = CKEDITOR.focusManager._.blurDelay;
5254 a || !b ? d.call(this) : this._.timer = CKEDITOR.tools.setTimeout(function() {
5257 }, b, this)
5261 var b = a.getCustomData("focusmanager");
5262 if (!b || b != this) {
5263 b && b.remove(a);
5264 var b =
5267 … d && (CKEDITOR.env.ie ? (b = "focusin", c = "focusout") : CKEDITOR.event.useCapture = 1);
5276 a.on(b, f.focus, this);
5302 var a, d = function(b) {
5303 b = b.data;
5304 var d = b.getKeystroke(),
5309 domEvent: b
5314 a && b.preventDefault(!0);
5317 b = function(b) {
5318 a && (a = !1, b.data.preventDefault(!0))
5323 if (CKEDITOR.env.gecko && CKEDITOR.env.mac) a.on("keypress", b, this)
5408 load: function(a, d, b) {
5414 b(a, c[a])
5419 var b = this.languages;
5424 b[f + "-" + c] ? f = f + "-" + c : b[f] || (f = null);
5438 load: function(b, c, f, h) {
5439 var k = "string" == typeof b;
5440 k && (b = [b]);
5442 var g = b.length,
5450 var y = function(a, b) {
5451 (b ? n : r).push(a);
5452 … 0 >= --g && (h && CKEDITOR.document.getDocumentElement().removeStyle("cursor"), e(b))
5454 v = function(b, c) {
5455 a[b] = 1;
5456 var f = d[b];
5457 delete d[b];
5458 for (var e = 0; e < f.length; e++) f[e](b, c)
5460 B = function(b) {
5461 if (a[b]) y(b, !0);
5463 var f = d[b] || (d[b] = []);
5470 src: b
5473 …"loaded" == e.$.readyState || "complete" == e.$.readyState) e.$.onreadystatechange = null, v(b, !0)
5476 v(b, !0)
5479 v(b, !1)
5486 for (var D = 0; D < g; D++) B(b[D])
5491 var b;
5492 (b = c[0]) && this.load(b.scriptUrl, b.callback, CKEDITOR, 0)
5523 var b = this.registered[a] = d || {};
5524 b.name = a;
5525 b.path = this.getPath(a);
5526 CKEDITOR.fire(a + CKEDITOR.tools.capitalize(this.fileName) + "Ready", b);
5540 addExternal: function(a, d, b) {
5544 b || (d = d.replace(/[^\/]+$/, function(a) {
5545 b = a;
5550 file: b || this.fileName + ".js"
5554 load: function(a, d, b) {
5575 d.call(b, g)
5582 return function(b, c, f) {
5584 k = function(b) {
5585 a.call(this, b, function(a) {
5587 var b = [],
5598 … for (v.split && (v = v.split(",")), g = 0; g < v.length; g++) h[v[g]] || b.push(v[g])
5600 if (b.length) k.call(this,
5601 b);
5608 k.call(this, b)
5611 CKEDITOR.plugins.setLang = function(a, d, b) {
5616 a[d] = b
5629 add: function(a, d, b) {
5630 b.name = a.toLowerCase();
5633 command: b.command || null,
5636 CKEDITOR.tools.extend(c, b)
5643 b = d && this._.handlers[d.type],
5645 b = b && b.create.apply(this, d.args);
5646 this.instances[a] = b;
5647 c && c.uiItems.push(b);
5648 b && !b.type && (b.type = d.type);
5649 return b
5671 …if (!b(f, e)) throw Error('The specified element mode is not supported on element: "' + f.getName(…
5720 function b(a, b) {
5721 …return b == CKEDITOR.ELEMENT_MODE_INLINE ? a.is(CKEDITOR.dtd.$editable) || a.is("textarea") : b ==…
5726 b;
5727 for (b in a) f(this, a[b])
5730 function f(a, b) {
5731b[b.startDisabled ? "disable" : a.readOnly && !b.readOnly ? "disable" : b.modes[a.mode] ? "enable"…
5735 b, c) {
5736 if (b) {
5738 for (f in e) d = e[f], (c || d.contextSensitive) && d.refresh(a, b)
5743 var b = a.config.customConfig;
5744 if (!b) return !1;
5745 var b = CKEDITOR.getUrl(b),
5746 c = x[b] || (x[b] = {});
5747 …TOR.getUrl(a.config.customConfig) != b && k(a) || a.fireOnce("customConfigLoaded")) : CKEDITOR.scr…
5754 function g(a, b) {
5756 if (b) {
5757 if (b.on)
5758 for (var c in b.on) a.on(c,
5759 b.on[c]);
5760 CKEDITOR.tools.extend(a.config, b, !0);
5776 b && null != b.customConfig && (a.config.customConfig = b.customConfig);
5787 CKEDITOR.lang.load(a.config.language, a.config.defaultLanguage, function(b, c) {
5789 a.langCode = b;
5799 a.getStylesSet(function(b) {
5803 styles: b
5811 function b(a) {
5817 d = b(c.plugins),
5818 f = b(c.extraPlugins),
5819 e = b(c.removePlugins);
5827 function(b) {
5831 a.plugins = CKEDITOR.tools.extend({}, a.plugins, b);
5832 for (var l in b) {
5833 var h = b[l],
5850 for (var b = ["beforeInit", "init", "afterInit"], e = 0; e < b.length; e++)
5854 if (p[b[e]]) p[b[e]](a)
5870 var b = this.getData();
5871 this.config.htmlEncodeOutput && (b = CKEDITOR.tools.htmlEncode(b));
5872 a.is("textarea") ? a.setValue(b) : a.setHtml(b);
5878 function B(a, b) {
5880 var b = a.startContainer,
5882 …return b.is && (b.is("tr") || b.is("td") && b.equals(d) && a.endOffset === b.getChildCount()) ? !0…
5886 var b = a.startContainer;
5887 return b.is("tr") ? a.cloneContents() : b.clone(!0)
5898 return e ? f : b.getHtmlFromRange(a[0])
5907 detectConflict: function(a, b) {
5908 for (var c = 0; c < b.length; c++) {
5909 var d = b[c];
5918 addCommand: function(a, b) {
5919 b.name = a.toLowerCase();
5920 var c = b instanceof CKEDITOR.command ? b : new CKEDITOR.command(this, b);
5925 function a(b) {
5928 b.data.preventDefault()
5931 function b(a) {
5937 …extarea") && f && (f.on("submit", a), b(f.$.submit) && (f.$.submit = CKEDITOR.tools.override(f.$.s…
5940 b.apply ? b.apply(this) : b()
5970 execCommand: function(a, b) {
5974 commandData: b || {},
5985 var b = this._.data;
5986 …tring" != typeof b && (b = (b = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE…
5987 b = {
5988 dataValue: b
5990 !a && this.fire("getData", b);
5991 return b.dataValue
6001 setData: function(a, b, c) {
6003 f = b;
6004 b && "object" == typeof b && (c = b.internal, f = b.callback, d = !b.noSnapshot);
6021 insertHtml: function(a, b, c) {
6024 mode: b,
6035 var b = this.editable(),
6038 if (!b || !c || 0 === c.length) return null;
6039 b = B(c, b);
6040 return a ? b.getHtml() : b
6042 extractSelectedHtml: function(a, b) {
6048 for (e = 0; e < d.length; e++) f.append(c.extractHtmlFromRange(d[e], b));
6049 b || this.getSelection().selectRanges([d[0]]);
6066 …for (var a = this.keystrokeHandler.keystrokes, b = CKEDITOR.tools.isArray(arguments[0]) ? argument…
6068 …], c, d, f = b.length; f--;) c = b[f], d = 0, CKEDITOR.tools.isArray(c) && (d = c[1], c = c[0]), d…
6072 var b = CKEDITOR.tools.object.findKey(this.commands, a),
6077 if (c.hasOwnProperty(d) && c[d] == b) return d
6088 setActiveEnterMode: function(a, b) {
6090 b = b ? this.blockless ?
6091 CKEDITOR.ENTER_BR : b : this.shiftEnterMode;
6092 …EnterMode != a || this.activeShiftEnterMode != b) this.activeEnterMode = a, this.activeShiftEnterM…
6131 parse: function(b) {
6132 for (var c, f, h = 0, k; c = this._.htmlPartsRegex.exec(b);) {
6135 if (h = b.substring(h, f), k) k.push(h);
6159 if (b.length > h) this.onText(b.substring(h,
6160 b.length))
6212 b = this.previous,
6214 b && (b.next = c);
6215 c && (c.previous = b);
6221 b = CKEDITOR.tools.indexOf(d, this),
6226 d[b] = a;
6232 b = CKEDITOR.tools.indexOf(d, a),
6234 d.splice(b + 1, 0, this);
6243 b = CKEDITOR.tools.indexOf(d, a);
6244 d.splice(b, 0, this);
6251 var d = "function" == typeof a ? a : "string" == typeof a ? function(b) {
6252 return b.name == a
6253 } : function(b) {
6254 return b.name in a
6256 b = this.parent;
6257 for (; b &&
6258 b.type == CKEDITOR.NODE_ELEMENT;) {
6259 if (d(b)) return b;
6260 b = b.parent
6287 var b = this.value;
6288 if (!(b = a.onComment(d, b, this))) return this.remove(), !1;
6289 if ("string" != typeof b) return this.replaceWith(b), !1;
6290 this.value = b;
6349 b = {
6372 var b;
6379 …!e[a] && CKEDITOR.dtd[a] ? f == u.name && (y(u, u.parent, 1), c--) : (b || (r(), b = 1), d = d.clo…
6389 var b = a.children.length,
6390 c = a.children[b - 1],
6393 c.value = d : a.children.length = b - 1)
6397 function y(b, c, d) {
6400b.previous && (v(c, b) && (u = c, D.onTagOpen(g, {}), b.returnPoint = c = u), e(b), a(b) && !b.chi…
6401 b.returnPoint ? (u = b.returnPoint, delete b.returnPoint) : u = d ? c : f
6404 function v(a, b) {
6407 …return (c = b.attributes && (d = b.attributes["data-cke-real-element-type"]) ? d : b.name) && c in…
6408 !b.isOrphan || b.type == CKEDITOR.NODE_TEXT
6412 function B(a, b) {
6413 …istItem || a in CKEDITOR.dtd.$tableContent ? a == b || "dt" == a && "dd" == b || "dd" == a && "dt"…
6440 …else if (f in b && h in b) h = u.children, (h = h[h.length - 1]) && "li" == h.name || y(h = new CK…
6457 for (var b = m.length - 1; 0 <= b; b--)
6458 if (a == m[b].name) {
6459 m.splice(b, 1);
6463 for (b = 0; b < c.length; b++) {
6464 var e = c[b];
6478 var b = u.name,
6479 … e = b ? CKEDITOR.dtd[b] || (u._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : c;
6480 if (!K && !e["#"] && b in d) D.onTagOpen(f[b] || ""), D.onText(a);
6506 add: function(a, b) {
6507 isNaN(b) && (b = this.children.length);
6508 var c = 0 < b ? this.children[b - 1] : null;
6520 this.children.splice(b, 0, a);
6523 filter: function(a, b) {
6524 b = this.getFilterContext(b);
6525 a.onRoot(b, this);
6526 this.filterChildren(a, !1, b)
6528 filterChildren: function(a, b, c) {
6531 if (b && !this.parent) a.onRoot(c, this);
6533 for (b = 0; b < this.children.length; b++) !1 === this.children[b].filter(a,
6534 c) && b--
6537 writeHtml: function(a, b) {
6538 b && this.filter(b);
6541 writeChildrenHtml: function(a, b, c) {
6543 if (c && !this.parent && b) b.onRoot(d, this);
6544 b && this.filterChildren(b, !1, d);
6545 b = 0;
6547 for (d = c.length; b < d; b++) c[b].writeHtml(a)
6549 forEach: function(a, b, c) {
6550 if (!(c || b && this.type != b)) var d = a(this);
6553 …length; f++) d = c[f], d.type == CKEDITOR.NODE_ELEMENT ? d.forEach(a, b) : b && d.type != b || a(d)
6567 function d(b, c, d, h) {
6569 for (k in c)(g = b[k]) || (g = b[k] = new a), g.add(c[k], d, h)
6572 $: function(b) {
6581 b && this.addRules(b, 10)
6689 w = b(f),
6695 …de || f.name in CKEDITOR.dtd.tr || f.name in CKEDITOR.dtd.$listItem) ? (l = b(f), l = !l || "form"…
6701 function q(a, b) {
6705 …a.value = c[0]), !CKEDITOR.env.needsBrFiller && z && (!b || a.parent.name in g) || !z && ((c = a.p…
6717 return function(b) {
6718 if (b.parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
6719 var d = b.attributes;
6722 for (d = b.next; d && f(d);) d =
6724 var l = c(b);
6725 … !d && h(b.parent) ? k(b.parent, e(a)) : h(d) && l && !h(l) && e(a).insertBefore(d)
6733 function d(a, b) {
6734 return a != CKEDITOR.ENTER_BR && !1 !== b ? a == CKEDITOR.ENTER_DIV ? "div" : "p" : !1
6737 function b(a) {
6756 function k(a, b) {
6758 a.children.push(b);
6759 b.parent = a;
6760 c && (c.next = b, b.previous = c)
6782 function(a, b, c) {
6783 return "\x3c" + b + c.replace(q, function(a, b) {
6784 …return E.test(b) && -1 == c.indexOf("data-cke-saved-" + b) ? " data-cke-saved-" + a + " data-cke-"…
6789 function e(a, b) {
6790 return a.replace(b, function(a, b, c) {
6791 …0 === a.indexOf("\x3ctextarea") && (a = b + B(c).replace(/</g, "\x26lt;").replace(/>/g, "\x26gt;")…
6797 return a.replace(P, function(a, b) {
6798 return decodeURIComponent(b)
6810 return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g, function(a, b) {
6811 return decodeURIComponent(b)
6815 function D(a, b) {
6816 var c = b._.dataStore;
6817 return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g, function(a, b) {
6818 return decodeURIComponent(b)
6819 }).replace(/\{cke_protected_(\d+)\}/g, function(a, b) {
6820 return c && c[b] || ""
6824 function x(a, b) {
6826 d = b.config.protectedSource,
6827 f = b._.dataStore || (b._.dataStore = {
6836 a = a.replace(e, function(a, b, d) {
6841 a = a.replace(e, function(a, b, d) {
6842 return "\x3c!--" + J + (b ? "{C}" :
6846 return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g, function(a, b) {
6847 f[f.id] = decodeURIComponent(b);
6852 return "\x3c" + c + d + "\x3e" + D(B(f), b) + "\x3c/" + c + "\x3e"
6855 CKEDITOR.htmlDataProcessor = function(b) {
6858 this.editor = b;
6866 c.addRules(a(b, "data"), {
6873 f.addRules(a(b, "html"), {
6876 b.on("toHtml", function(a) {
6879 f, c = x(c, b),
6885 c = c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g, "$1$2$2"),
6887 f = a.context || b.editable().getName();
6890 f = b.document.createElement(f);
6899 d(a.enterMode, b.config.autoParagraph);
6904 b.on("toHtml", function(a) {
6905 …filter.applyTo(a.data.dataValue, !0, a.data.dontFilter, a.data.enterMode) && b.fire("dataFiltered")
6907 b.on("toHtml", function(a) {
6910 b.on("toHtml", function(a) {
6912 var b = a.dataValue,
6914 b.writeChildrenHtml(c);
6915 b = c.getHtml(!0);
6916 a.dataValue = v(b)
6918 b.on("toDataFormat", function(a) {
6921 …KEDITOR.htmlParser.fragment.fromHtml(c, a.data.context, d(a.data.enterMode, b.config.autoParagraph…
6923 b.on("toDataFormat", function(a) {
6926 b.on("toDataFormat", function(a) {
6930 b.on("toDataFormat", function(a) {
6937 c = D(c, b);
6942 toHtml: function(a, b, c, d) {
6945b && "object" == typeof b ? (e = b.context, c = b.fixForBody, d = b.dontFilter, l = b.filter, p =
6957 toDataFormat: function(a, b) {
6959 b && (c = b.context, d = b.filter, f = b.enterMode);
6990 var b = a.attributes.src.toLowerCase().replace(/[^a-z]/gi, "");
6991 …if (0 === b.indexOf("javascript") || 0 === b.indexOf("data")) a.attributes["data-cke-pa-src"] = a.…
6999 var b = a.parent;
7000 if (b && "object" == b.name) {
7001 var c = b.attributes.width,
7002 b = b.attributes.height;
7004 b && (a.attributes.height = b)
7008 var b = a.attributes;
7009 … if (!(a.children.length || b.name || b.id || a.attributes["data-cke-saved-name"])) return !1
7025 var b = a.attributes;
7026 if (b) {
7027 if (b["data-cke-temp"]) return !1;
7028 …"href", "src"], d, f = 0; f < c.length; f++) d = "data-cke-saved-" + c[f], d in b && delete b[c[f]]
7033 a.children.slice(0).sort(function(a, b) {
7035b.type == a.type && (c = CKEDITOR.tools.indexOf(K, a.name), d = CKEDITOR.tools.indexOf(K, b.name))…
7056 var b = a.children[0];
7057 b && b.value && (b.value = CKEDITOR.tools.trim(b.value));
7061 var b = a.children[0];
7062 !b && k(a, b = new CKEDITOR.htmlParser.text);
7063 b.value = a.attributes["data-cke-title"] || ""
7080 var M = /<(a|area|img|input|source)\b([^>]*)>/gi,
7095 var b = a || "",
7096 c = b.match(/^cke:(.*)/);
7097 c && (b = c[1]);
7098b = !!(CKEDITOR.dtd.$nonBodyContent[b] || CKEDITOR.dtd.$block[b] || CKEDITOR.dtd.$listItem[b] || C…
7102 isBlockLike: b,
7103 hasInlineStarted: this.isEmpty || !b
7128 return function(b) {
7129 … return b.type == CKEDITOR.NODE_ELEMENT && ("string" == typeof a ? b.name == a : b.name in a)
7132 var d = function(a, b) {
7134 b = b[0];
7135 return a < b ? -1 : a > b ? 1 : 0
7137 b = CKEDITOR.htmlParser.fragment.prototype;
7140 add: b.add,
7144 filter: function(a, b) {
7147 b = d.getFilterContext(b);
7148 if (b.off) return !0;
7149 if (!d.parent) a.onRoot(b, d);
7152 if (!(g = a.onElementName(b, k))) return this.remove(), !1;
7154 if (!(d = a.onElement(b, d))) return this.remove(), !1;
7164 if (r = a.onAttributeName(b, n))
7171 r && (!1 === (g = a.onAttribute(b, d, r, g)) ? delete k[r] :
7174 d.isEmpty || this.filterChildren(a, !1, b);
7177 filterChildren: b.filterChildren,
7178 writeHtml: function(a, b) {
7179 b && this.filter(b);
7193 writeChildrenHtml: b.writeChildrenHtml,
7195 for (var a = this.children, b = a.length; b;) a[--b].insertAfter(this);
7198 forEach: b.forEach,
7199 getFirst: function(b) {
7200 if (!b) return this.children.length ? this.children[0] : null;
7201 "function" != typeof b && (b = a(b));
7203 if (b(this.children[d])) return this.children[d];
7213 for (var b = 0, d = a.length; b < d; ++b) a[b].parent = this
7222 …for (var b = this.children.splice(a, this.children.length - a), d = this.clone(), k = 0; k < b.len…
7223 d.children = b;
7224 b[0] && (b[0].previous = null);
7229 find: function(a, b) {
7230 void 0 === b && (b = !1);
7236 b && g.find && (d = d.concat(g.find(a, b)))
7242 var b = this.attributes["class"] || "";
7243 this.attributes["class"] = b + (b ? " " : "") + a
7247 var b = this.attributes["class"];
7248b && ((b = CKEDITOR.tools.trim(b.replace(new RegExp("(?:\\s+|^)" + a + "(?:\\s+|$)"), " "))) ? thi…
7251 var b = this.attributes["class"];
7252 return b ? (new RegExp("(?:^|\\s)" + a + "(?\x3d\\s|$)")).test(b) : !1
7255 var b = [];
7261 a.off || "off" != this.attributes["data-cke-processor"] || b.push("off", !0);
7262 …tedEditable && "true" == this.attributes.contenteditable && b.push("nestedEditable", !0) : b.push(…
7263 if (b.length) {
7265 for (var d = 0; d < b.length; d += 2) a[b[d]] = b[d + 1]
7276 CKEDITOR.template.prototype.output = function(d, b) {
7277 var c = this.source.replace(a, function(a, b) {
7278 return void 0 !== d[b] ? d[b] : a
7280 return b ? b.push(c) : c
7301 CKEDITOR.addTemplate = function(d, b) {
7306 source: b
7335 var b = new CKEDITOR.editor(d, a, CKEDITOR.ELEMENT_MODE_INLINE),
7337 …c ? (b.setData(c.getValue(), null, !0), a = CKEDITOR.dom.element.createFromHtml('\x3cdiv contented…
7338 … a.insertAfter(c), c.hide(), c.$.form && b._attachToForm()) : b.setData(a.getHtml(), null, !0);
7339 b.on("loaded", function() {
7340 b.fire("uiReady");
7341 b.editable(a);
7342 b.container = a;
7343 b.ui.contentsElement = a;
7344 b.setData(b.getData(1));
7345 b.resetDirty();
7346 b.fire("contentDom");
7347 b.mode = "wysiwyg";
7348 b.fire("mode");
7349 b.status = "ready";
7350 b.fireOnce("instanceReady");
7351 CKEDITOR.fire("instanceReady", null, b)
7353 b.on("destroy", function() {
7354 c && (b.container.clearCustomData(), b.container.remove(), c.show());
7355 b.element.clearCustomData();
7356 delete b.element
7358 return b
7361 var a, d, b;
7362 for (b in CKEDITOR.dtd.$editable)
7363 …for (var c = CKEDITOR.document.getElementsByTag(b), f = 0, h = c.count(); f < h; f++) a = c.getIte…
7382 b(g);
7398 b = this.element;
7400b && (b.clearCustomData(), this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (b.show(), this._.…
7403 function b(a) {
7404 var b = a.name,
7417 b = CKEDITOR.dom.element.createFromHtml(r.output({
7419 name: b,
7429 (d.hide(), b.insertAfter(d)) : d.append(b);
7430 a.container = b;
7436 d && b.setStyle("width", CKEDITOR.tools.cssLength(d));
7438 b.disableContextMenu();
7439 CKEDITOR.env.webkit && b.on("focus", function() {
7444 CKEDITOR.replace = function(b, d) {
7445 return a(b, d, null, CKEDITOR.ELEMENT_MODE_REPLACE)
7447 CKEDITOR.appendTo = function(b, d, h) {
7448 return a(b, d, h, CKEDITOR.ELEMENT_MODE_APPENDTO)
7451 for (var a = document.getElementsByTagName("textarea"), b = 0; b < a.length; b++) {
7453 k = a[b];
7462 CKEDITOR.editor.prototype.addMode = function(a, b) {
7463 (this._.modes || (this._.modes = {}))[a] = b
7465 CKEDITOR.editor.prototype.setMode = function(a, b) {
7491 b && b.call(d)
7496 CKEDITOR.editor.prototype.resize = function(a, b, d, k) {
7507 g = Math.max(b - (d ? 0 : e), 0);
7508 b = d ? b + e : b;
7512 outerHeight: b,
7527 var b = a.editor,
7535 …k(b, e.block, f) && h.collapsed && !h.getCommonAncestor().isReadOnly() && (e = h.clone(), e.enlarg…
7538b = h.fixBlock(!0, b.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p"), CKEDITOR.env.needsBrFil…
7542 function d(a, b) {
7544 var d = b.block || b.blockLimit,
7549 function b(a) {
7550 var b = a.data.getTarget();
7551 b.is("input") &&
7552 … (b = b.getAttribute("type"), "submit" != b && "reset" != b || a.data.preventDefault())
7559 function f(a, b) {
7562 … == CKEDITOR.NODE_ELEMENT ? new CKEDITOR.dom.element(d) : null) && (b.equals(d) || b.contains(d)) …
7567 function b(a) {
7568 return function(b, e) {
7569 e && b.type == CKEDITOR.NODE_ELEMENT && b.is(f) && (d = b);
7570 if (!(e || !c(b) || a && B(b))) return !1
7586 a.guard = b();
7588 …(d, CKEDITOR.POSITION_AFTER_END), a = new CKEDITOR.dom.walker(g), a.guard = b(!0), d = !1, a.check…
7593 function k(a, b, c) {
7594 …tiveEnterMode != CKEDITOR.ENTER_BR && (a.editable().equals(c) && !b || b && "true" == b.getAttribu…
7602 var b = a.editor;
7603 b.getSelection().scrollIntoView();
7605 b.fire("saveSnapshot")
7609 function r(a, b, c) {
7610 var d = a.getCommonAncestor(b);
7611 for (b = a = c ? b : a;
7612 (a = a.getParent()) && !d.equals(a) && 1 == a.getChildCount();) b = a;
7613 b.remove()
7618 $: function(a, b) {
7619 this.base(b.$ ||
7620 b);
7637 var b =
7640 this.$.scrollTop = b
7648 on: function(a, b) {
7650 …|blur$/.exec(a) && (a = "focus" == a ? "focusin" : "focusout", b = f(b, this), c[0] = a, c[1] = b);
7656 var b = Array.prototype.slice.call(arguments, 1),
7657 b = a.on.apply(a, b);
7658 this._.listeners.push(b);
7659 return b
7665 } catch (b) {}
7669 b, c;
7670 …for (c in a) a.hasOwnProperty(c) && (b = a[c], null !== b ? this.setAttribute(c, b) : this.removeA…
7673 var b = this.getCustomData("classes");
7674 this.hasClass(a) || (!b && (b = []), b.push(a), this.setCustomData("classes",
7675 b), this.addClass(a))
7677 changeAttr: function(a, b) {
7679b !== c && (!this._.attrChanges && (this._.attrChanges = {}), a in this._.attrChanges || (this._.a…
7686 …var b = this.editor.getSelection().getStartElement().hasAscendant("pre", !0) ? CKEDITOR.ENTER_BR :…
7688 b)
7690 insertHtml: function(a, b, c) {
7695 x(this, b || "html", a, c);
7700 insertHtmlIntoRange: function(a, b, c) {
7701 x(this, c || "html", a, b);
7703 intoRange: b
7706 insertElement: function(a, b) {
7714 b || (b = d.getRanges()[0]);
7716b) && (b.moveToPosition(a, CKEDITOR.POSITION_AFTER_END), f && ((f = a.getNext(function(a) {
7718b.moveToElementEditStart(f) : b.moveToElementEditEnd(a) : f || e == CKEDITOR.ENTER_BR || (f = b.f…
7719 d.selectRanges([b]);
7725 insertElementIntoRange: function(a, b) {
7730 if (b.checkReadOnly()) return !1;
7731 b.deleteContents(1);
7732 b.startContainer.type == CKEDITOR.NODE_ELEMENT && (b.startContainer.is({
7738 }) ? m(b) : b.startContainer.is(CKEDITOR.dtd.$list) && J(b));
7742b.getCommonAncestor(0, 1)) && (g = CKEDITOR.dtd[q.getName()]) && (!g || !g[e]);) q.getName() in CK…
7744 b.insertNode(a);
7747 setData: function(a, b) {
7748 b || (a = this.editor.dataProcessor.toHtml(a));
7755 var b = this.getHtml();
7756 a || (b = this.editor.dataProcessor.toDataFormat(b));
7757 return b
7775 var b = c.getDocument().$,
7776 d = b.getSelection(),
7785 …om.range(c), e.moveToElementEditStart(c), b = b.createRange(), b.setStart(e.startContainer.$, e.st…
7786 d.addRange(b))
7789 function b() {
7796 ….env.ie && (9 > CKEDITOR.env.version || CKEDITOR.env.quirks)) this.hasFocus && (this.focus(), b());
7817 extractHtmlFromRange: function(a, b) {
7843 if (b) {
7867 var b = this.getData();
7868 … this.is("textarea") || !1 !== a.config.ignoreEmptyParagraph && (b = b.replace(D, function(a, b) {
7869 return b
7871 a.setData(b, null, 1)
7885 var b = a.getSelection();
7886 (b = b && b.getNative()) && "Control" == b.type || this.focus()
7916 var b = a.editable();
7917 …null != a._.previousScrollTop && b.getDocument().equals(CKEDITOR.document) && (b.$.scrollTop = a._…
7946 … var b = (new CKEDITOR.dom.elementPath(a.getTarget(), this)).contains("a");
7947 b && 2 != a.$.button && b.isReadOnly() && a.preventDefault()
7953 this.attachListener(a, "key", function(b) {
7955 var c = b.data.domEvent.getKey(),
7957 b = a.getSelection();
7958 if (0 !== b.getRanges().length) {
7961 var f, g = b.getRanges()[0],
7964 …CKEDITOR.env.ie && 11 > CKEDITOR.env.version && (f = b.getSelectedElement()) || (f = h(b)) ? (a.fi…
7970 …& CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller && this.attachListener(this, "keyup", function(b) {
7971b.data.getKeystroke() in q && !this.getFirst(c) && (this.appendBogus(), b = a.createRange(), b.mov…
7973 this.attachListener(this, "dblclick", function(b) {
7975 b = {
7976 element: b.data.getTarget()
7978 a.fire("doubleclick", b)
7980 CKEDITOR.env.ie && this.attachListener(this, "click", b);
7982 function(b) {
7983 var c = b.data.getTarget();
7984 … (a.getSelection().selectElement(c), c.is("input", "textarea", "select") && b.data.preventDefault(…
7986 CKEDITOR.env.edge && this.attachListener(this, "mouseup", function(b) {
7987 … (b = b.data.getTarget()) && b.is("img") && !b.isReadOnly() && a.getSelection().selectElement(b)
7989 CKEDITOR.env.gecko && this.attachListener(this, "mouseup", function(b) {
7990 …if (2 == b.data.$.button && (b = b.data.getTarget(), !b.getAscendant("table") && !b.getOuterHtml()…
7993 c.moveToElementEditStart(b);
8002 CKEDITOR.env.webkit && this.attachListener(a, "key", function(b) {
8004 var c = b.data.domEvent.getKey();
8005 if (c in q && (b = a.getSelection(), 0 !== b.getRanges().length)) {
8008 d = b.getRanges()[0];
8009 b = d.startPath();
8011 var e = b.block;
8018 b = !0;
8023 if (!d || d && d.contains(e)) b = void 0;
8031 b.lastElement.mergeSiblings();
8034 b = !0
8036 } else b = !1
8038b.block, d = c.endPath().block, p && d && !p.equals(d) ? (a.fire("saveSnapshot"), (e = p.getBogus(…
8039 c.select(), b = !0) : b = !1;
8040 if (!b) return;
8059 var b = a.getHead();
8060 if (b.getCustomData("stylesheet")) {
8063 b.removeCustomData("stylesheet").remove())
8072 var b = this._.editable;
8073 if (b && a) return 0;
8074 …arguments.length && (b = this._.editable = a ? a instanceof CKEDITOR.editable ? a : new CKEDITOR.e…
8075 return b
8077 CKEDITOR.on("instanceLoaded", function(b) {
8078 var c = b.editor;
8084 c.on("selectionChange", function(b) {
8087 …d && !d.isLocked && (d = c.checkDirty(), c.fire("lockSnapshot"), a(b), c.fire("unlockSnapshot"), !…
8092 var b = a.editor;
8093 b.on("mode", function() {
8094 var a = b.editable();
8096 var c = b.title;
8102 var d = b.fire("ariaEditorHelpLabel", {}).label;
8117 …D = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;…
8119 function a(b) {
8120 return b.type == CKEDITOR.NODE_ELEMENT
8123 function b(c, d) {
8128 …e.getName(), P && g in CKEDITOR.dtd.$list ? h = h.concat(b(e, d)) : (q = !!z[g], "br" != g || !e.d…
8144 function d(b, c) {
8146 f = b.getChildren(),
8150 k = !b.is(E.$inline) || b.is("br");
8156 function e(b) {
8157 return a(b.startContainer) && b.startContainer.getChild(b.startOffset - 1)
8160 function f(b) {
8161 return b && a(b) && (b.is(E.$removeEmpty) || b.is("a") && !b.isBlockBoundary())
8164 function h(b, c, d, e) {
8165 var f = b.clone(),
8168 …g) && z[g.getName()] && (q = g.getPrevious()) && a(q) && !q.getParent().equals(b.startContainer) &&
8169 ….contains(q) && e.contains(g) && g.isIdentical(q) && (g.moveChildren(q), g.remove(), h(b, c, d, e))
8172 function q(b, c) {
8173 function d(b, c) {
8174 … if (c.isBlock && c.isElement && !c.node.is("br") && a(b) && b.is("br")) return b.remove(), 1
8178 e && d(e, b[b.length - 1]);
8179 f && d(f, b[0]) && (c.setEnd(c.endContainer, c.endOffset - 1), c.collapse())
8305 p = b(z.dataWrapper, z);
8391 function a(b) {
8392 b = new CKEDITOR.dom.walker(b);
8393 b.guard = function(a, b) {
8394 if (b) return !1;
8397 b.evaluator = function(a) {
8400 return b
8403 function b(a, c, d) {
8410 var b = a.count(),
8412 …for (b; 0 < b--;) d = a.getItem(b), CKEDITOR.tools.trim(d.getHtml()) || (d.appendBogus(), CKEDITOR…
8430 …}) && (f = b(f, "tr", g)), f.is("tr") && (f = b(f, f.getParent().is("thead") ? "th" : "td", g)), (…
8434 function a(b) {
8435 b = new CKEDITOR.dom.walker(b);
8436 b.guard = function(a, b) {
8437 if (b) return !1;
8440 b.evaluator = function(a) {
8444 return b
8446 return function(b) {
8447 var c = b.startContainer,
8450 e = b.clone();
8453 … e || (e = b.clone(), e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END), e = a(e).lastForward(), d = !0);
8455b.setStartAt(e, CKEDITOR.POSITION_BEFORE_START), b.collapse(!0), e.remove()) : ((c = e.getBogus())…
8460 detect: function(a, b) {
8464 f = new CKEDITOR.dom.elementPath(c.startContainer, b),
8465 g = new CKEDITOR.dom.elementPath(c.endContainer, b);
8471 fix: function(a, b) {
8472 var c = b.getDocument(),
8488 var b = a.range.getBoundaryNodes(),
8489 c = b.startNode,
8490 b = b.endNode;
8491 !b || !B(b) || c && c.equals(b) || a.range.setEndBefore(b)
8495 rebuild: function(a, b) {
8498 e = new CKEDITOR.dom.elementPath(d, b),
8499 f = new CKEDITOR.dom.elementPath(c.startContainer, b),
8500 c = new CKEDITOR.dom.elementPath(c.endContainer, b),
8520 this.rebuildFragment(a, b, d, g)
8522 rebuildFragment: function(a, b, c, d) {
8523 … for (var e; c && !c.equals(b) && d(c);) e = c.clone(0, 1), a.fragment.appendTo(e),
8530 var b = a.startContainer,
8534b.type == CKEDITOR.NODE_ELEMENT && b.equals(c) && b.is("tr") && ++d == e && a.shrink(CKEDITOR.SHRI…
8539 function a(b, c) {
8540 var d = b.getParent();
8541 if (d.is(CKEDITOR.dtd.$inline)) b[c ? "insertBefore" : "insertAfter"](d)
8544 function b(c, d, e) {
8551 function c(a, b) {
8553 d.setStartAfter(b.startNode);
8554 d.setEndBefore(b.endNode);
8559 detectMerge: function(a, b) {
8560 var d = c(b, a.bookmark),
8581 …ntains(CKEDITOR.dtd.$listItem), g = g.contains(CKEDITOR.dtd.$listItem), f.equals(g) || b(g, d, e));
8589 b) {
8591 var c = new CKEDITOR.dom.range(b);
8605 f && g && !f.equals(g) && b(g, d, e);
8627 … if (A = !g) A = a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && (!h || b(a, h)) && (!k ||
8628 b(a, k));
8643 function b(a, c) {
8655 var b =
8657 c = b.clone();
8666 var c = b.startPath().contains("table"),
8667 f = b.endPath().contains("table");
8668b.checkBoundaryOfElement(c, CKEDITOR.START) && b.checkBoundaryOfElement(f, CKEDITOR.END) && (b = a…
8681 …if (p || l) p && l && b(p, l) ? (e.tableSurroundingRange = h, h.setStartAt(p, CKEDITOR.POSITION_AF…
8685 …for (var b; b = a.tableContentsRanges.pop();) b.extractContents(), v(b.startContainer) && b.startC…
8690 var b =
8693 b = b.createElement("p");
8694 b.insertBefore(a.purgeTableBookmark.startNode);
8697 a.range.moveToPosition(b, CKEDITOR.POSITION_AFTER_START)
8708 autoParagraph: function(a, b) {
8710 b.startPath(),
8712 ….block, c.blockLimit) && (d = g(a)) && (d = b.document.createElement(d), d.appendBogus(), b.insert…
8722 function d(b, c) {
8723 if (0 === b.length || a(b[0].getEnclosedNode())) return !1;
8725 if ((d = !c && 1 === b.length) && !(d = b[0].collapsed)) {
8726 var f = b[0];
8739 for (e = 0; e < b.length; e++)
8740 if (d = b[e]._getTableElement(), !d) return !1;
8744 function b(a) {
8745 function b(a) {
8757 }) ? c.push(d) : c = c.concat(b(d));
8762 a = b(a);
8771 var b = this.root.editor,
8772 d = b.getSelection(1);
8787 b._.fakeSelection = this;
8793 var b = this._.fakeSelection,
8795 if (b) {
8799 e = b;
8816 e && (b.reset(), b = 0)
8818 … if (!b && (b = c || this.getSelection(1), !b || b.getType() == CKEDITOR.SELECTION_NONE)) return;
8819 this.fire("selectionCheck", b);
8822 selection: b,
8842 function b(c, d) {
8850 …return b(d) || b(e, 1) || !(d || e || c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary() && c.…
8855 var b = a.getDocument().createText(u);
8856 a.setCustomData("cke-fillingChar", b);
8857 return b
8860 function y(a, b) {
8863 if (!1 !== b) {
8884 function v(a, b) {
8885 return b ? a.replace(K, function(a, b) {
8886 return b ? " " : ""
8890 function B(a, b) {
8891 var c = b && CKEDITOR.tools.htmlEncode(b) || "\x26nbsp;",
8910 var b = {
8918 if (b[d]) {
8927 for (var b = 0; b < a.length; b++) {
8928 var c = a[b];
8929 c.getCommonAncestor().isReadOnly() && a.splice(b, 1);
8947 c.collapsed && a.splice(b--, 1);
8948 …tainer) & CKEDITOR.POSITION_CONTAINS || (e.setStartAfter(d), e.collapsed || a.splice(b + 1, 0, e));
8964 function a(b) {
8967 … c.moveToClosestEditablePosition(a.selected, b) && a.editor.getSelection().selectRanges([c]);
8972 function b(a) {
8973 return function(b) {
8974 var c = b.editor,
8977 …ition(b.selected, a)) || (e = d.moveToClosestEditablePosition(b.selected, !a)), e && c.getSelectio…
8987 8: b(),
8988 46: b(1)
8992 function b() {
9004 function b() {
9005 f.removeListener("mouseup", b);
9006 q.removeListener("mouseup", b);
9059 function b(a) {
9073 q.removeListener("mousemove", b);
9085 q.on("mousemove", b);
9093 … a.data.getTarget().is("html") && (f.on("mouseup", b), q.on("mouseup", b))
9100 var b = this.getSelection(1),
9101 c = d(b);
9102 c && !c.equals(g) && (b.selectElement(c), a.data.preventDefault())
9138 CKEDITOR.env.webkit && b()
9143 if (CKEDITOR.env.ie9Compat) c.on("beforeDestroy", b, null, null, 9);
9151 b = c.editable().getLast(a);
9152 b && b.hasAttribute("data-cke-hidden-sel") && (b.remove(),
9157 var b = c.getSelection();
9158 if (b.isFake) {
9162 selected: b.getSelectedElement(),
9163 selection: b,
9171 var b = a.editor;
9172 b.on("selectionChange", function() {
9173 var a = b.editable(),
9178 b.on("beforeSetMode", function() {
9179 y(b.editable())
9181 b.on("getSnapshot", function(a) {
9183 }, b, null, 20);
9184 b.on("toDataFormat", function(a) {
9200 var b = this._.savedSelection;
9201 return b ? (b.unlock(a), delete this._.savedSelection, !0) : !1
9219 var b = a;
9223 this.rev = b ? b.rev : J++;
9230 …if (b) return CKEDITOR.tools.extend(this._.cache, b._.cache), this.isFake = b.isFake, this.isLocke…
9278 var b = CKEDITOR.SELECTION_NONE;
9282 "Text" == d && (b = CKEDITOR.SELECTION_TEXT);
9283 "Control" == d && (b = CKEDITOR.SELECTION_ELEMENT);
9285 (b = CKEDITOR.SELECTION_TEXT)
9287 return a.type = b
9291 var b = CKEDITOR.SELECTION_TEXT,
9293 if (!c || !c.rangeCount) b = CKEDITOR.SELECTION_NONE;
9297 … c.startOffset && M[d.childNodes[c.startOffset].nodeName.toLowerCase()] && (b = CKEDITOR.SELECTION…
9299 return a.type = b
9303 function a(b) {
9304 return (new CKEDITOR.dom.node(b)).getIndex()
9306 var b = function(b, c) {
9307 b = b.duplicate();
9308 b.collapse(c);
9309 var d = b.parentElement();
9314 … for (var e = d.children, f, g, h = b.duplicate(), k = 0, l = e.length - 1, q = -1, m, n; k <= l;)
9315 … 2), f = e[q], h.moveToElementText(f), m = h.compareEndPoints("StartToStart", b), 0 < m) l = q - 1;
9323 h.setEndPoint("StartToStart", b);
9341 h.setEndPoint(0 < m ? "StartToStart" : "EndToStart", b);
9366 … new CKEDITOR.dom.range(this.root), d = b(c, !0), a.setStart(new CKEDITOR.dom.node(d.container), d…
9381 b, c = this.getNative();
9385 b = new CKEDITOR.dom.range(this.root);
9386 b.setStart(new CKEDITOR.dom.node(e.startContainer),
9388 b.setEnd(new CKEDITOR.dom.node(e.endContainer), e.endOffset);
9389 a.push(b)
9393 return function(b) {
9397 return b ? x(new CKEDITOR.dom.rangeList(d.slice())) : d
9403 var b;
9410 … if (c.collapsed) b = c.startContainer, b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent());
9412 …mize(); b = c.startContainer, c.startOffset == (b.getChildCount ? b.getChildCount() : b.getLength(…
9413 b = c.startContainer;
9414 if (b.type != CKEDITOR.NODE_ELEMENT) return b.getParent();
9415 … if ((b = b.getChild(c.startOffset)) && b.type == CKEDITOR.NODE_ELEMENT)
9416 … for (c = b.getFirst(); c && c.type == CKEDITOR.NODE_ELEMENT;) b = c, c = c.getFirst();
9417 else b = c.startContainer
9419 b = b.$
9422 return a.startElement = b ?
9423 new CKEDITOR.dom.element(b) : null
9428 var b = this,
9430 return b.getNative().createRange().item(0)
9432 …for (var a = b.getRanges()[0].clone(), c, d, e = 2; e && !((c = a.getEnclosedNode()) && c.type == …
9441 var b = this.getNative(),
9442 b = m ? "Control" == b.type ? "" : b.createRange().text : b.toString();
9443 return a.selectedText = b
9455 if (a) var b = this.getSelectedElement(),
9460 a && (a = b || c[0] && c[0].getCommonAncestor()) && a.getAscendant("body",
9461 …1) && (d(c) ? f.call(this, c) : e ? this.fake(b) : b ? this.selectElement(b) : this.selectRanges(c…
9471 var b = a._.hiddenSelectionContainer;
9472 if (b) {
9475 b.remove();
9484 var b =
9486 b.setStartBefore(a);
9487 b.setEndAfter(a);
9488 this.selectRanges([b])
9491 var b = this.root.editor,
9492 c = b && b._.hiddenSelectionContainer;
9511 …else if (b && b.plugins.tableselection && CKEDITOR.plugins.tableselection.isSupportedEnvironment &…
9521 1 < a.length && (b = a[a.length -
9522 1], a[0].setEnd(b.endContainer, b.endOffset));
9523 b = a[0];
9524 a = b.collapsed;
9526 …if ((c = b.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && c.getName() in M && (!c.is("a"…
9532b.startContainer.type == CKEDITOR.NODE_ELEMENT && b.startContainer.getName() in w || b.endContaine…
9533 I = b.createBookmark();
9536 I = b.document.$.body.createTextRange();
9539b.document.$.body.createTextRange(), p.moveToElementText(k.$), I.setEndPoint("EndToEnd", p), I.mov…
9540 b.setStartBefore(w);
9542 …, -1), I.select(), b.document.$.selection.clear()) : I.select(), b.moveToPosition(G, CKEDITOR.POSI…
9548 …iner, G.startOffset), !p.collapsed && (p.shrink(CKEDITOR.NODE_ELEMENT, !0), b = p.getCommonAncesto…
9549 b.isReadOnly() || p && p.isReadOnly()))) {
9554 b = a[I];
9556b.collapsed && CKEDITOR.env.webkit && r(b) && (p = e(this.root), b.insertNode(p), (A = p.getNext()…
9557 G.setStart(b.startContainer.$, b.startOffset);
9559 G.setEnd(b.endContainer.$, b.endOffset)
9562 …t.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")) b.collapse(1), G.setEnd(b.endContainer.$, b.endOff…
9573 fake: function(a, b) {
9575 void 0 === b && a.hasAttribute("aria-label") && (b = a.getAttribute("aria-label"));
9577 B(c, b);
9615 for (var b = [], c, e = 0; e < a.length; e++) {
9618 b.push(f)
9620 …a.isFake && (c = d(b) ? b[0]._getTableElement() : b[0].getEnclosedNode(), c && c.type == CKEDITOR.…
9621 a.isFake && !d(b) ? this.fake(c) : this.selectRanges(b);
9637 } catch (b) {}
9648 function a(a, b) {
9650 (a = a.getParent()) && !a.equals(b);)
9659 function d(a, b, c, d) {
9660 return (a.getPosition(b) | d) == d && (!c.childRule || c.childRule(a))
9663 function b(c) {
9705 if (L ? L.check(this) : 1) C.selectNodeContents(F), b.call(this, C)
9744 function b() {
9784 b();
9785 …l(this)[f.getName()]), g.type == CKEDITOR.NODE_ELEMENT && g.contains(d) && (b(), g = d.getNext()))…
9792 var b = [];
9794 if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1
9796 return b
9800 var b = a.getEnclosedNode() || a.getCommonAncestor(!1, !0);
9801 …(a = (new CKEDITOR.dom.elementPath(b, a.root)).contains(this.element, 1)) && !a.isReadOnly() && u(…
9805 var b = a.getCommonAncestor(!0, !0);
9806 if (a = (new CKEDITOR.dom.elementPath(b, a.root)).contains(this.element, 1)) {
9807 var b = this._.definition,
9808 c = b.attributes;
9811 if (b.styles)
9812 for (var e in b.styles) b.styles.hasOwnProperty(e) &&
9818 var b = a.createBookmark(!0),
9823 a.moveToBookmark(b)
9827 var b = a.createBookmark(1),
9833 a.moveToBookmark(b)
9836 function r(a, b) {
9837 var c = !b;
9838 c && (b = a.getDocument().createElement("div"), a.copyAttributes(b));
9839 var d = b && b.is("pre"),
9843 f = b;
9850 g = g.replace(/<br\b[^>]*>/gi, "\n");
9858 b = f
9859 } else g ? b = v(c ? [a.getHtml()] : e(a), b) : a.moveChildren(b);
9860 b.replace(a);
9862 var c = b,
9866 } else c && m(b)
9870 var b = [];
9871 …terHtml(), /(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, function(a, b, c) {
9872 return b + "\x3c/pre\x3e" + c + "\x3cpre\x3e"
9873 }).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi, function(a, c) {
9874 b.push(c)
9876 return b
9879 function y(a, b, c) {
9882 …n[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi, function(a, b, c) {
9883 b && (d = b);
9887 return d + a.replace(b, c) + e
9890 function v(a, b) {
9892 1 < a.length && (c = new CKEDITOR.dom.documentFragment(b.getDocument()));
9898 e = y(e, /^[ \t]+|[ \t]+$/g, function(a, b) {
9899 …return 1 == a.length ? "\x26nbsp;" : b ? " " + CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) : …
9906 var f = b.clone();
9909 } else b.setHtml(e)
9911 return c || b
9914 function B(a, b) {
9922 …s" != g && !this._.definition.fullMatch || a.getAttribute(g) == t(g, d[g])) b && "data-" == g.slic…
9930 …for (var b = l(this), c = a.getElementsByTag(this.element), d, e = c.count(); 0 <= --e;) d = c.get…
9931 for (var f in b)
9933 …getElementsByTag(f), e = c.count() - 1; 0 <= e; e--) d = c.getItem(e), d.isReadOnly() || x(d, b[f])
9936 function x(a, b, c) {
9937 if (b = b && b.attributes)
9938 for (var d = 0; d < b.length; d++) {
9939 var e = b[d][0],
9942 var g = b[d][1];
9949 function m(a, b) {
9950 if (!a.hasAttributes() || b)
9965 function J(a, b, c) {
9969 d = new CKEDITOR.dom.element(d, b);
9972b.getCustomData("doc_processing_style") && d.hasAttribute("id") ? d.removeAttribute("id") : b.setC…
9976 function u(a, b) {
9977 var c = b._.definition,
9987 function K(a, b) {
9989 return b[c]
9995 var b = a._.overrides = {},
10003 e = b[f] || (b[f] = {});
10011 return b
10015 b, c) {
10017 d[c ? "setStyle" : "setAttribute"](a, b);
10021 function F(a, b) {
10022 function c(a, b) {
10023 return "font-family" == b.toLowerCase() ? a.replace(/["']/g, "") : a
10026 "string" == typeof b && (b = CKEDITOR.tools.parseCssText(b, !0));
10028 … if (!(d in b) || c(b[d], d) != c(a[d], d) && "inherit" != a[d] && "inherit" != b[d]) return !1;
10032 function L(a, b, c) {
10034 b = b ? this.removeFromRange : this.applyToRange;
10038 for (var g = d.createIterator(); f = g.getNextRange();) b.call(this, f, c);
10097 CKEDITOR.style = function(a, b) {
10101 b && (a = CKEDITOR.tools.clone(a), K(a.attributes, b), K(a.styles, b));
10114 var b = this._.enterMode;
10115 b || (this._.enterMode = a.activeEnterMode);
10117 this._.enterMode = b
10123 var b = this._.enterMode;
10124 b || (this._.enterMode = a.activeEnterMode);
10126 this._.enterMode = b
10130 …this.applyToRange = this.type == CKEDITOR.STYLE_INLINE ? b : this.type == CKEDITOR.STYLE_BLOCK ? g…
10141 checkActive: function(a, b) {
10144 return this.checkElementRemovable(a.block || a.blockLimit, !0, b);
10154 if (this.checkElementRemovable(e, !0, b)) return !0
10159 checkApplicable: function(a, b, c) {
10160 b && b instanceof CKEDITOR.filter && (c = b);
10170 checkElementMatch: function(a, b) {
10176 if (!b && !a.hasAttributes()) return !0;
10192 if (!b) return !0
10193 } else if (b) return !1;
10194 if (b) return !0
10199 checkElementRemovable: function(a, b, c) {
10200 if (this.checkElementMatch(a, b, c)) return !0;
10201 if (b = l(this)[a.getName()]) {
10203 if (!(b = b.attributes)) return !0;
10204 for (c = 0; c < b.length; c++)
10205 if (d = b[c][0], d = a.getAttribute(d)) {
10206 var e = b[c][1];
10216 var b = this._.definition,
10218 d = b.element;
10221 e = b.attributes;
10224 (e = CKEDITOR.style.getStyleText(b)) && c.push(' style\x3d"', e, '"');
10225 c.push("\x3e", a || b.name, "\x3c/", d, "\x3e");
10233 var b = a._ST;
10234 if (b) return b;
10235 var b = a.styles,
10239 for (var e in b) {
10240 var f = b[e],
10249 var b = function(a) {
10255b.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), {
10258 return this.customHandlers[a.type] = b
10273 CKEDITOR.loadStylesSet = function(a, d, b) {
10275 CKEDITOR.stylesSet.load(a, b)
10279 var b = this._.styleStateChangeCallbacks;
10280b || (b = this._.styleStateChangeCallbacks = [], this.on("selectionChange", function(a) {
10281 for (var d = 0; d < b.length; d++) {
10282 var h = b[d],
10287 b.push({
10302 b = d.config.stylesCombo_stylesSet || d.config.stylesSet;
10303 if (!1 === b) a(null);
10304 else if (b instanceof Array) d._.stylesDefinitions = b, a(b);
10306 b || (b = "default");
10307 var b = b.split(":"),
10308 c = b[0];
10309 … CKEDITOR.stylesSet.addExternal(c, b[1] ? b.slice(1).join(":") : CKEDITOR.getUrl("styles.js"), "");
10310 CKEDITOR.stylesSet.load(c, function(b) {
10311 d._.stylesDefinitions = b[c];
10333 b;
10334 for (b in CKEDITOR.dtd.$blockLimit) b in CKEDITOR.dtd.$list || (a[b] = 1);
10335 …for (b in CKEDITOR.dtd.$block) b in CKEDITOR.dtd.$blockLimit || b in CKEDITOR.dtd.$empty || (d[b] …
10336 CKEDITOR.dom.elementPath = function(b, f) {
10340 n = b,
10342 f = f || b.getDocument().getBody();
10380 for (var b = 0; b < d.length; b++)
10381 if (!d[b].equals(a[b])) return !1;
10384 contains: function(a, d, b) {
10387 "string" == typeof a && (f = function(b) {
10388 return b.getName() == a
10390 a instanceof CKEDITOR.dom.element ? f = function(b) {
10391 return b.equals(a)
10392 } : CKEDITOR.tools.isArray(a) ? f = function(b) {
10393 return -1 < CKEDITOR.tools.indexOf(a, b.getName())
10394 } : "function" == typeof a ? f = a : "object" == typeof a && (f = function(b) {
10395 return b.getName() in
10400 d && (b ? c += 1 : --k);
10401 b && (h = Array.prototype.slice.call(h, 0), h.reverse());
10432 b = d.childNodes.length,
10436 …d.childNodes.length == b && (a >= c ? (h = f.createText(""), h.insertAfter(this)) : (a = f.createT…
10496 createBookmarks: function(b) {
10498 c.push(d = this[h].createBookmark(b, !0));
10518 function d(b) {
10519 var c = CKEDITOR.skin["ua_" + b],
10522 for (var c = c.split(",").sort(function(a, b) {
10523 return a > b ? -1 : 1
10526 b += "_" + c[f];
10528 } return CKEDITOR.getUrl(a() + b + ".css")
10531 function b(a, b) {
10533 b && b()
10537 var b =
10539b || (b = a.getHead().append("style"), b.setAttribute("id", k), b.setAttribute("type", "text/css")…
10540 return b
10543 function f(a, b, c) {
10546 … for (b = b.split("}").slice(0, -1), f = 0; f < b.length; f++) b[f] = b[f].split("{");
10549 for (f = 0; f < b.length; f++) {
10550 g = b[f][1];
10552 a[h].$.sheet.addRule(b[f][0], g)
10554 g = b;
10565 b(c, d)
10566 }) : b(c, d)
10572 addIcon: function(a, b, c, d) {
10575 path: b,
10580 getIconStyle: function(a, b, c, d, f) {
10582 a && (a = a.toLowerCase(), b && (g = this.icons[a + "-rtl"]),
10596 var b = c(CKEDITOR.document);
10607 f([b], d, a);
10617 var b = a.editor;
10623 var d = b.getUiColor();
10624 d && f([a], CKEDITOR.skin.chameleon(b, "panel"), [
10629 b.on("panelShow", a);
10630 b.on("menuShow", a);
10631 b.config.uiColor && b.setUiColor(b.config.uiColor)
10642 b = a.getComputedStyle("border-right-color");
10643 CKEDITOR.env.hc = !(!d || d != b)
10664 var b = function() {
10665 return function(b, d) {
10666 for (var a = b.match(/[^#]./g), e = 0; 3 > e; e++) {
10681 var a = b(g.uiColor, .4),
10684 defaultBorder: b(a, -.2),
10685 toolbarElementsBorder: b(a, -.25),
10687 lightBackground: b(a, .8),
10688 darkBackground: b(a, -.15),
10689 ckeButtonOn: b(a, .4),
10690 ckeResizer: b(a, -.4),
10691 ckeColorauto: b(a, .8),
10692 dialogBody: b(a, .7),
10693 dialogTab: b(a, .65),
10696 elementsPathColor: b(a, -.6),
10697 menubuttonHover: b(a, .1),
10698 menubuttonIcon: b(a, .5),
10699 menubuttonIconHover: b(a, .3)
10706 var h = function(b) {
10708 this._["default"] = this._.initValue = b["default"] || "";
10709 this._.required = b.required || !1;
10716 build: function(b, a, d) {
10717 return new CKEDITOR.ui.dialog.textInput(b, a, d)
10721 build: function(b, a, d) {
10722 return new CKEDITOR.ui.dialog[a.type](b, a, d)
10730 reset: function(b) {
10731 this.setValue(this.getInitValue(), b)
10744 onChange: function(b, a) {
10745 this._.domOnChangeRegistered || (b.on("load", function() {
10747 b.parts.dialog.isVisible() && this.fire("change", {
10757 t = function(b) {
10758 for (var a in b)(x.test(a) || "title" == a || "type" == a) && delete b[a];
10759 return b
10761 w = function(b) {
10762 b = b.data.getKeystroke();
10763b == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ? this.setDirectionMarker("ltr") : b == CKEDITOR.SHIFT + C…
10766 labeledElement: function(b, a, d, f) {
10776 … CKEDITOR.ui.dialog.uiElement.call(this, b, a, d, "div", null, e, function() {
10780 …"' + a.controlStyle + '"' : "", ' role\x3d"presentation"\x3e', f.call(this, b, a), "\x3c/div\x3e")…
10790 '"' : "") + "\x3e" + f.call(this, b, a) + "\x3c/span\x3e"
10792 }, CKEDITOR.dialog._.uiElementBuilders.hbox.build(b, g, e));
10797 textInput: function(b, a, d) {
10812 b.on("load", function() {
10818 … 13 == a.data.getKeystroke() && m && (b.getButton("ok") && setTimeout(function() {
10819 b.getButton("ok").click()
10824 CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() {
10825 … var b = ['\x3cdiv class\x3d"cke_dialog_ui_input_', a.type, '" role\x3d"presentation"'];
10826 a.width && b.push('style\x3d"width:' + a.width + '" ');
10827 b.push("\x3e\x3cinput ");
10831 for (var e in c) b.push(e + '\x3d"' + c[e] + '" ');
10832 b.push(" /\x3e\x3c/div\x3e");
10833 return b.join("")
10837 textarea: function(b, a, d) {
10849 if (f.bidi) b.on("load",
10853 CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() {
10857 b;
10858 … for (b in e) a.push(b + '\x3d"' + CKEDITOR.tools.htmlEncode(e[b]) + '" ');
10864 checkbox: function(b,
10871 … CKEDITOR.ui.dialog.uiElement.call(this, b, a, d, "span", null, null, function() {
10885 … f.checkbox = new CKEDITOR.ui.dialog.uiElement(b, c, e, "input", null, g);
10891 radio: function(b, a, d) {
10901 b, a, d,
10931 … f.push(new CKEDITOR.ui.dialog.uiElement(b, p, u, "input", null, r));
10933 new CKEDITOR.ui.dialog.uiElement(b, h, u, "label", null, {
10939 new CKEDITOR.ui.dialog.hbox(b, f, e, d);
10945 button: function(b, a, d) {
10947 "function" == typeof a && (a = a(b.getParentEditor()));
10953 b.on("load", function() {
10971 CKEDITOR.ui.dialog.uiElement.call(this, b, c, d, "a", null, {
10983 select: function(b, a, d) {
10988 CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() {
11008 f.select = new CKEDITOR.ui.dialog.uiElement(b, c, e, "select", null,
11015 file: function(b, a, d) {
11023 b.on("load", function() {
11026 CKEDITOR.ui.dialog.labeledElement.call(this, b, a, d, function() {
11028 …var b = ['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_fil…
11031b.push(CKEDITOR.env.ie ? "(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.…
11032 b.push(')"\x3e\x3c/iframe\x3e');
11033 return b.join("")
11037 fileButton: function(b, a, d) {
11049 … !1 !== c && ("xhr" !== c && b.getContentElement(d[0], d[1]).submit(), this.disable())
11051 b.on("load", function() {
11052 b.getContentElement(a["for"][0], a["for"][1])._.buttons.push(f)
11054 CKEDITOR.ui.dialog.button.call(this, b, c, d)
11058 var b = /^\s*<[\w:]+\s+([^>]*)?>/,
11077 m = m.join("").match(b);
11084 fieldset: function(b, a, d, f, c) {
11089 … CKEDITOR.ui.dialog.uiElement.call(this, b, c, f, "fieldset", null, null, function() {
11092 for (var b = 0; b < d.length; b++) a.push(d[b]);
11099 setLabel: function(b) {
11101 …1 > a.getChildCount() ? (new CKEDITOR.dom.text(b, CKEDITOR.document)).appendTo(a) : a.getChild(0).…
11102 b;
11106 var b = CKEDITOR.document.getById(this._.labelId);
11107 return !b || 1 > b.getChildCount() ? "" : b.getChild(0).getText()
11119 var b = this.getElement();
11120 b && b.removeClass("cke_disabled")
11133 onClick: function(b, a) {
11152 var b = this.selectParentTab();
11154 var a = b.getInputElement();
11159 var b = this.selectParentTab();
11161 var a = b.getInputElement();
11168 setValue: function(b) {
11170 var a = b && b.charAt(0);
11171 (a = "‪" == a ? "ltr" : "‫" == a ? "rtl" : null) && (b = b.slice(1));
11174 b || (b = "");
11178 var b = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);
11179 if (this.bidi && b) {
11181 a && (b = ("ltr" == a ? "‪" : "‫") + b)
11183 return b
11185 setDirectionMarker: function(b) {
11187 b ? a.setAttributes({
11188 dir: b,
11189 "data-cke-dir-marker": b
11203 add: function(b, a, d) {
11206 f.$.text = b;
11207 f.$.value = void 0 === a || null === a ? b : a;
11211 remove: function(b) {
11212 this.getInputElement().$.remove(b);
11216 for (var b = this.getInputElement().$; 0 < b.length;) b.remove(0);
11225 setValue: function(b, a) {
11226 this.getInputElement().$.checked = b;
11228 value: b
11238 onChange: function(b,
11241 b.on("load", function() {
11243 a.on("propertychange", function(b) {
11244 b = b.data.$;
11245 "checked" == b.propertyName && this.fire("change", {
11257 setValue: function(b, a) {
11259 f.getValue() == b;
11261 value: b
11265 for (var b = this._.children, a = 0; a < b.length; a++)
11266 if (b[a].getElement().$.checked) return b[a].getValue();
11270 var b = this._.children,
11272 for (a = 0; a < b.length; a++)
11273 if (b[a].getElement().$.checked) {
11274 b[a].getElement().focus();
11276 } b[0].getElement().focus()
11279 onChange: function(b, a) {
11281 b.on("load", function() {
11283 …this._.children, b = this, c = 0; c < a.length; c++) a[c].getElement().on("propertychange", functi…
11285 "checked" == a.propertyName && this.$.checked && b.fire("change", {
11297 var b = CKEDITOR.document.getById(this._.frameId).getFrameDocument();
11298 … return 0 < b.$.forms.length ? new CKEDITOR.dom.element(b.$.forms[0].elements[0]) :
11308 registerEvents: function(b) {
11310 d, f = function(a, b, c, d) {
11316 for (c in b)
11317 …this.eventProcessors[c].call(this, this._.dialog, b[c]) : f(this, this._.dialog, d[1].toLowerCase(…
11321 function b() {
11323 var b = "";
11324 f.size && (b = f.size - (CKEDITOR.env.ie ? 7 : 0));
11327 …ncode(f.id || "cke_upload"), '" size\x3d"', CKEDITOR.tools.htmlEncode(0 < b ? b : ""), '" /\x3e\x3…
11330 for (b = 0; b < c.length; b++) c[b].enable()
11348 CKEDITOR.env.gecko ? setTimeout(b, 500) : b()
11357 onChange: function(b, a) {
11385 build: function(b, a, d) {
11389 h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b, c, k))
11391 return new CKEDITOR.ui.dialog[a.type](b, h, e, d, a)
11404 …var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId)…
11410 … (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabI…
11415 function K(a, b) {
11419 …"text" == f.getAttribute("type").toLowerCase() && (b ? (f.setAttribute("value", f.getCustomData("f…
11423 function T(a, b) {
11427 b && alert(b);
11430 msg: b
11440 var b = CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog", W).output({
11449 c = b.getChild([0, 0, 0, 0, 0]),
11457 element: b,
11459 dialog: b.getChild(0),
11469 function L(a, b, c) {
11470 this.element = b;
11474 return !b.getAttribute("disabled") && b.isVisible()
11480 b.on("keydown", function(a) {
11486 b.on("focus", function() {
11489 b.on("blur", function() {
11495 function b() {
11499 c.on("resize", b);
11501 c.removeListener("resize", b)
11505 function M(a, b) {
11509 CKEDITOR.tools.extend(this, b)
11513 function b(b) {
11516 q = b.data.$.screenX,
11517 n = b.data.$.screenY,
11527 b.data.preventDefault()
11531 CKEDITOR.document.removeListener("mousemove", b);
11535 a.removeListener("mousemove", b);
11550 CKEDITOR.document.on("mousemove", b);
11556 f.on("mousemove", b);
11564 function b(b) {
11568 G = n + (b.data.$.screenX - m.x) * (c ? -1 : 1) * (a._.moved ? 1 : 2),
11569 H = q + (b.data.$.screenY - m.y) * (a._.moved ? 1 : 2),
11580 b.data.preventDefault()
11585 CKEDITOR.document.removeListener("mousemove", b);
11590 a.removeListener("mousemove", b)
11609 CKEDITOR.document.on("mousemove", b);
11611 …R.env.ie6Compat && (e = u.getChild(0).getFrameDocument(), e.on("mousemove", b), e.on("mouseup", c)…
11615 var b = "";
11616 …d == CKEDITOR.DIALOG_RESIZE_WIDTH ? b = " cke_resizer_horizontal" : d == CKEDITOR.DIALOG_RESIZE_HE…
11617 b = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer' +
11618b + " cke_resizer_" + f.lang.dir + '" title\x3d"' + CKEDITOR.tools.htmlEncode(f.lang.common.resize…
11619 a.parts.footer.append(b, 1)
11632 var b = CKEDITOR.document.getWindow(),
11646 var a = b.getViewPaneSize();
11653 var a = b.getScrollPosition(),
11664 b.on("resize", a);
11672 b.$.setTimeout(function() {
11689 CKEDITOR.dialog = function(a, b) {
11692 a.sort(function(a, b) {
11693 … return a.tabIndex != b.tabIndex ? b.tabIndex - a.tabIndex : a.focusIndex - b.focusIndex
11695 for (var b = a.length, c = 0; c < b; c++) a[c].focusIndex = c
11699 var b = l._.focusList;
11701 if (!(1 > b.length)) {
11705 b[c].getInputElement().$.blur()
11711 if (g && !l._.tabBarMode && (e == b.length || -1 == e)) {
11717 e = (e + b.length) % b.length;
11719 } while (a && !b[e].isFocusable());
11720 b[e].focus();
11721 "text" == b[e].type && b[e].select()
11725 function d(b) {
11727 var c = b.data.getKeystroke(),
11736 …if (13 == c) c = b.data.getTarget(), c.is("a", "button", "select", "textarea") || c.is("input") &&…
11743 f(b)
11750 var g = CKEDITOR.dialog._.dialogDefinitions[b],
11764 name: b,
11800 name: b,
11812 if (a._.removeDialogTabs && (k = a._.removeDialogTabs[b]))
11817 if (g.onOk) this.on("ok", function(b) {
11822 !1 === g.onOk.call(this, b) && (b.data.hide = !1)
11830 var b = l._.contents,
11833 for (d in b)
11834 for (var e in b[d])
11835 if (c = a.call(this, b[d][e])) return
11838 t(function(b) {
11839 if (b.validate) {
11840 var c = b.validate(this),
11843 T.call(b, !d, "string" == typeof c ?
11849 this.on("cancel", function(b) {
11851 …n a.config.dialog_noConfirmCancel || confirm(a.lang.common.confirmCancel) || (b.data.hide = !1), !0
11880 var b = 1 < l._.pageCount;
11881 …b && b ? (l._.tabBarMode = !0, l._.tabs[l._.currentTabId][0].focus(), l._.currentFocusIndex = -1) …
11882 (b = g.onFocus.call(this)) && b.focus() : e(1))
11886 b = a.getFirst();
11887 b.remove();
11888 b.appendTo(a)
11895 var b = a.data.getTarget();
11896b.hasClass("cke_dialog_tab") && (b = b.$.id, this.selectPage(b.substring(4, b.lastIndexOf("_"))),
11915 return function(a, b) {
11917 a && this._.contentSize.height == b || (CKEDITOR.dialog.fire("resize", {
11920 height: b
11923 height: b
11926 height: b + "px"
11929 height: b
11940 move: function(a, b, c) {
11945 … f && this._.position && this._.position.x == a && this._.position.y == b || (this._.position = {
11947 y: b
11948 …sition(), a += f.x, b += f.y), d && (f = this.getSize(), a = CKEDITOR.document.getWindow().getView…
11949 top: (0 < b ? b : 0) + "px"
11951b[d ? "right" : "left"] = (0 < a ? a : 0) + "px", e.setStyles(b), c && (this._.moved = 1))
11958 b = this.definition;
11960 …e && this._.contentSize.width || b.width || b.minWidth, this._.contentSize && this._.contentSize.h…
11971 for (var c in b.contents)
11972 if (b.contents[c]) {
11973 var a = b.contents[c],
12000 b = this.getSize(),
12003 (c.width - b.width) / 2,
12004 d = (c.height - b.height) / 2;
12005 …CKEDITOR.env.ie6Compat || (b.height + (0 < d ? d : 0) > c.height || b.width + (0 < e ? e : 0) > c.…
12009 for (var b in this._.contents)
12010 for (var c in this._.contents[b]) a.call(this, this._.contents[b][c]);
12024 this.foreach(function(b) {
12025 b.setup && b.setup.apply(b, a)
12030 this.foreach(function(b) {
12031 … CKEDITOR.env.ie && this._.currentFocusIndex == b.focusIndex && b.getInputElement().$.blur();
12032 b.commit && b.commit.apply(b, a)
12046 var b = this._.parentDialog.getElement().getFirst();
12047b.setStyle("z-index", parseInt(b.$.style.zIndex, 10) + Math.floor(this._.editor.config.baseFloatZI…
12070 …for (var b = [], c = a.label ? ' title\x3d"' + CKEDITOR.tools.htmlEncode(a.label) + '"' : "", e = …
12077 …}, b), d = this._.contents[a.id] = {}, f = e.getChild(), g = 0; e = f.shift();) e.notAllowed || "h…
12079 b = CKEDITOR.dom.element.createFromHtml(b.join(""));
12080 b.setAttribute("role", "tabpanel");
12086 b.setAttribute("aria-labelledby", d);
12087 this._.tabs[a.id] = [c, b];
12092 b.setAttribute("name", a.id);
12093 b.appendTo(this.parts.contents);
12105 for (var b in this._.tabs) {
12106 var c = this._.tabs[b][0],
12107 e = this._.tabs[b][1];
12108 b != a && (c.removeClass("cke_dialog_tab_selected"), e.hide());
12109 e.setAttribute("aria-hidden", b != a)
12125 var b = this._.tabs[a] && this._.tabs[a][0];
12126b && 1 != this._.pageCount && b.isVisible() && (a == this._.currentTabId && this.selectPage(x.call…
12138 getContentElement: function(a, b) {
12140 return c && c[b]
12142 getValueOf: function(a, b) {
12143 return this.getContentElement(a, b).getValue()
12145 setValueOf: function(a, b, c) {
12146 return this.getContentElement(a, b).setValue(c)
12169 addFocusable: function(a, b) {
12170 …if ("undefined" == typeof b) b = this._.focusList.length, this._.focusList.push(new L(this, a, b));
12172 this._.focusList.splice(b, 0, new L(this, a, b));
12173 … for (var c = b + 1; c < this._.focusList.length; c++) this._.focusList[c].focusIndex++
12181 var b = this.getParentEditor().lang.dir,
12187 "float": "rtl" == b ? "right" : "left"
12190 c.styles["margin-" + ("rtl" == b ? "left" : "right")] = "8px";
12204 add: function(a, b) {
12205 … this._.dialogDefinitions[a] && "function" != typeof b || (this._.dialogDefinitions[a] = b)
12213 isTabEnabled: function(a, b, c) {
12215 return !(a && a.match(new RegExp("(?:^|;)" + b + ":" + c + "(?:$|;)",
12235 a.override = function(b) {
12237 return a(c, b)
12261 a.override = function(b) {
12263 return a(c, b)
12270 addUIElement: function(a, b) {
12271 this._.uiElementBuilders[a] = b
12288 D = function(a, b, c) {
12290 if (d.id == b || c && d[c] && (d = D(d[c], b, c))) return d;
12293 E = function(a, b, c, e, d) {
12296 if (g.id == c) return a.splice(f, 0, b), b;
12297 if (e && g[e] && (g = E(g[e], b, c, e, !0))) return g
12301 a.push(b);
12302 return b
12304 F = function(a, b, c) {
12306 if (d.id == b) return a.splice(e, 1);
12308 b, c))) return d
12312 P = function(a, b) {
12314 for (var c = b.contents, e = 0, d; d = c[e]; e++) c[e] = d && new M(a, d);
12315 CKEDITOR.tools.extend(this, b)
12324 addContents: function(a, b) {
12325 return E(this.contents, a, b)
12327 addButton: function(a, b) {
12328 return E(this.buttons, a, b)
12342 add: function(a, b) {
12343 return E(this.elements, a, b, "children")
12352 var b = a.data.$.ctrlKey || a.data.$.metaKey,
12356b = w[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && (b = b[b.l…
12359 var b = a.data.$.ctrlKey || a.data.$.metaKey,
12363b = w[(b ? "CTRL+" : "") + (c ? "ALT+" : "") + (e ? "SHIFT+" : "") + d]) && b.length && (b = b[b.l…
12365 S = function(a, b, c, e, d) {
12368 dialog: b,
12375 for (var b in w) {
12376 …for (var c = w[b], e = c.length - 1; 0 <= e; e--) c[e].dialog != a && c[e].uiElement != a || c.spl…
12377 0 === c.length && delete w[b]
12381 b) {
12382 a._.accessKeyMap[b] && a.selectPage(a._.accessKeyMap[b])
12387 uiElement: function(a, b, c, e, d, f, g) {
12389 var h = (e.call ? e(b) : e) || "div",
12391 m = (d && d.call ? d(b) : d) || {},
12392 k = (f && f.call ? f(b) : f) || {},
12393 q = (g && g.call ? g.call(this, a, b) : g) || "",
12395b.requiredContent && !a.getParentEditor().filter.check(b.requiredContent) && (m.display = "none", …
12398 b.type && (r["cke_dialog_ui_" +
12399 b.type] = 1);
12400 b.className && (r[b.className] = 1);
12401 b.disabled && (r.cke_disabled = 1);
12406 b.title && (k.title = b.title);
12407 r = (b.style || "").split(";");
12408b.align && (l = b.align, m["margin-left"] = "left" == l ? 0 : "auto", m["margin-right"] = "right" …
12410 b.hidden && r.push("display:none");
12418 "boolean" == typeof b.isChanged && (this.isChanged = function() {
12419 return b.isChanged
12421 "function" == typeof b.isChanged && (this.isChanged = b.isChanged);
12422 …"function" == typeof b.setValue && (this.setValue = CKEDITOR.tools.override(this.setValue, functio…
12424 a.call(this, b.setValue.call(this, c))
12427 "function" == typeof b.getValue &&
12430 return b.getValue.call(this, a.call(this))
12434 this.registerEvents(b);
12435 … this.accessKeyUp && this.accessKeyDown && b.accessKey && S(this, a, "CTRL+" + b.accessKey);
12438 var b = t.getInputElement();
12439 if (b) {
12444 b.on("focus", function() {
12450 b.on("blur", function() {
12456 CKEDITOR.tools.extend(this, b);
12457 …this.keyboardFocusable && (this.tabIndex = b.tabIndex || 0, this.focusIndex = a._.focusList.push(t…
12462 hbox: function(a, b, c, e, d) {
12465 var f = this._.children = b,
12479 var b = "cke_dialog_ui_hbox_child",
12481 0 === p && (b = "cke_dialog_ui_hbox_first");
12482 p == c.length - 1 && (b = "cke_dialog_ui_hbox_last");
12483 a.push('\x3ctd class\x3d"', b, '" role\x3d"presentation" ');
12497 vbox: function(a, b, c, e, d) {
12500 var f = this._.children = b,
12508 … var b = ['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];
12509 b.push('style\x3d"');
12510 d && d.expand && b.push("height:100%;");
12511 b.push("width:" + v(g || "100%"), ";");
12512 CKEDITOR.env.webkit && b.push("float:none;");
12513 b.push('"');
12514b.push('align\x3d"', CKEDITOR.tools.htmlEncode(d && d.align || ("ltr" == a.getParentEditor().lang.…
12515 b.push("\x3e\x3ctbody\x3e");
12518 b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');
12523 0 < k.length && b.push('style\x3d"', k.join("; "), '" ');
12524b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e', c[e], "\x3c/td\x3e\x3c/tr\x3e")
12526 b.push("\x3c/tbody\x3e\x3c/table\x3e");
12527 return b.join("")
12543 setValue: function(a, b) {
12545 !b && this.fire("change", {
12569 var b = /^on([A-Z]\w+)/,
12570 c, e = function(a, b, c, d) {
12571 b.on("load", function() {
12577 …if (c = d.match(b)) this.eventProcessors[d] ? this.eventProcessors[d].call(this, this._.dialog, a[…
12581 onLoad: function(a, b) {
12582 a.on("load", b, this)
12584 onShow: function(a, b) {
12585 a.on("show", b, this)
12587 onHide: function(a, b) {
12588 a.on("hide", b, this)
12638 CKEDITOR.dialogCommand = function(a, b) {
12640 CKEDITOR.tools.extend(this, b, !0)
12644 var b = this.tabId;
12646 b && a.selectPage(b)
12654 b = /^\d*$/,
12665 var b = this && this.getValue ? this.getValue() : a[0],
12676 e[f](b) : n || e[f](b);
12680 regex: function(a, b) {
12683 return a.test(c) ? !0 : b
12686 notEmpty: function(b) {
12687 return this.regex(a, b)
12690 return this.regex(b, a)
12711 equals: function(a, b) {
12712 return this.functions(function(b) {
12713 return b == a
12714 }, b)
12716 notEqual: function(a, b) {
12717 return this.functions(function(b) {
12718 return b != a
12719 }, b)
12724 for (var b; b = CKEDITOR.dialog._.currentTop;) b.hide();
12733 openDialog: function(a, b) {
12737 ….storedDialogs = {}), c = c[a] || (c[a] = new CKEDITOR.dialog(this, a)), b && b.call(c, c), c.show…
12743 b)
12762 var b = a.addCommand("about", new CKEDITOR.dialogCommand("about"));
12763 b.modes = {
12767 b.canUndo = !1;
12768 b.readOnly = 1;
12846 init: function(b) {
12848 b.addCommand("a11yHelp", {
12851 b.langCode,
12854 b.lang.a11yhelp = c.langEntries[a];
12855 b.openDialog("a11yHelp")
12865 b.setKeystroke(CKEDITOR.ALT + 48, "a11yHelp");
12867 b.on("ariaEditorHelpLabel", function(a) {
12868 a.data.label = b.lang.common.editorHelp
12887 b = this.getValue();
12888 b ? c.setAttribute(a, b) : c.removeAttribute(a, b)
12904 var b =
12906 a.length && (b += "[" + a.join(",") + "]");
12907 c.classes && (b += "(*)");
12908 c.styles && (b += "{*}");
12909 return b
12911 createAdvancedTab: function(c, a, b) {
12929 requiredContent: b ? b + "[id]" : null,
12937 requiredContent: b ? b + "[dir]" : null,
12957 requiredContent: b ? b + "{cke-xyz}" : null,
12963 var b = this.getValue().match(new RegExp("(?:^|;)\\s*" +
12965 return b ? b[1] : c
12967 updateStyle: function(a, b) {
12971 e.setStyle(a, b);
12984 requiredContent: b ? b + "(cke-xyz)" : null,
13002 d = function(g, d, b, a) {
13005 var f = h[b];
13008 !c.readOnly && c.getCommand(b).setState(a)
13010 c.addCommand(b, new CKEDITOR.styleCommand(a, {
13015 command: b,
13021 bold: ["strong", "b", ["span", function(a) {
13038 b = c.config,
13040 d("Bold", a.bold, "bold", b.coreStyles_bold);
13041 d("Italic", a.italic, "italic", b.coreStyles_italic);
13042 d("Underline", a.underline, "underline", b.coreStyles_underline);
13043 d("Strike", a.strike, "strike", b.coreStyles_strike);
13045 "subscript", b.coreStyles_subscript);
13046 d("Superscript", a.superscript, "superscript", b.coreStyles_superscript);
13056 overrides: "b"
13076 function q(a, f, d, b) {
13078 CKEDITOR.dom.element.setMarker(b, a, "bidi_processed", 1);
13079 b = a;
13081 (b = b.getParent()) && !b.equals(c);)
13082 if (b.getCustomData("bidi_processed")) {
13086 } b = "useComputedState" in d.config ? d.config.useComputedState : 1;
13087 …(b ? a.getComputedStyle("direction") : a.getStyle("direction") || a.hasAttribute("dir")) != f && (…
13093 var b = a.getCommonAncestor(!1, !0);
13096 … if (a.checkBoundaryOfElement(b, CKEDITOR.START) && a.checkBoundaryOfElement(b, CKEDITOR.END)) {
13097 …for (var c; b && b.type == CKEDITOR.NODE_ELEMENT && (c = b.getParent()) && 1 == c.getChildCount() …
13098 return b.type == CKEDITOR.NODE_ELEMENT && b.getName() in f && b
13113 var b = a.config.useComputedState,
13114 c, b = void 0 === b || b;
13115 if (!b) {
13125 c && (b = b ? c.getComputedStyle("direction") :
13126 …"bidirtl").setState("rtl" == b ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF), a.getCommand("bidi…
13127 b = (d.block || d.blockLimit || a.editable()).getDirection(1);
13128b != (a._.selDir || a.lang.dir) && (a._.selDir = b, a.fire("contentDirChanged", b))
13132 b = f.config.enterMode,
13138 … k && (!k || k.type == CKEDITOR.NODE_ELEMENT && k.getName() in r) || (k = v(g, t, b));
13144 var c = b == CKEDITOR.ENTER_P ? "p" : "div",
13155 …for (g.enlargeBr = b != CKEDITOR.ENTER_BR; k = g.getNextParagraph(b == CKEDITOR.ENTER_P ? "p" : "d…
13169 b = /\bdirection\s*:\s*(.*?)\s*(:?$|;)/;
13174 "dir" : "direction") || "style" == c && (d || b.test(h))) {
13213 function f(b,
13216 a.ui.addButton && a.ui.addButton(b, {
13227 a.document.on("dirChanged", function(b) {
13229 node: b.data,
13230 dir: b.data.getDirection(1)
13234 a.on("contentDirChanged", function(b) {
13235 b = (a.lang.dir != b.data ? "add" : "remove") + "Class";
13237 if (c) c[b]("cke_mixed_dir_content")
13254 b = h[0].endNode,
13261 } if (b && "blockquote" == b.getParent().getName())
13262 for (d = b; d = d.getPrevious();)
13264 b.move(d);
13272b = h.shift(), c.insertNode(a), a.append(new CKEDITOR.dom.text("", g.document)), c.moveToBookmark…
13275 … for (b = 0; b < e.length; b++) a = e[b], d = d.getCommonAncestor(a.getParent());
13283 for (b = null; 0 < e.length;) {
13285 a.equals(b) || c.push(a);
13286 b = a
13290 …for (b = new CKEDITOR.dom.documentFragment(g.document); a.getFirst();) b.append(a.getFirst().remov…
13291 b.replace(a)
13296 b = [];
13306 …c && e && !e.getCustomData("blockquote_moveout") && (b.push(e), CKEDITOR.dom.element.setMarker(d, …
13311 …for (d = {}; 0 < b.length;) f = b.shift(), c = f.getParent(), f.getPrevious() ? f.getNext() ? (f.b…
13314 for (b = e.length - 1; 0 <= b; b--) {
13315 c = e[b];
13329 b = new CKEDITOR.dom.documentFragment(g.document);
13331 …CKEDITOR.NODE_ELEMENT && f.getPrevious().isBlockBoundary() || b.append(g.document.createElement("b…
13332 …R.NODE_ELEMENT && f.getNext().isBlockBoundary()); f.getFirst();) f.getFirst().remove().appendTo(b);
13333 c && b.append(g.document.createElement("br"));
13334 b.replace(f);
13360 function q(b, a) {
13362 editor: b,
13364 area: b._.notificationArea
13368b.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element)
13371 function r(b) {
13373 this.editor = b;
13379 b.on("destroy", function() {
13385 init: function(b) {
13386 function a(b) {
13396 a.setText(b);
13402 b._.notificationArea = new r(b);
13403 b.showNotification = function(a, d, e) {
13406 a = new CKEDITOR.plugins.notification(b, {
13415 b.on("key", function(c) {
13417 var d = b._.notificationArea.notifications;
13418 … d.length && (a(b.lang.notification.closed), d[d.length - 1].hide(), c.cancel())
13429 update: function(b) {
13433 options: b
13438 f = b.type;
13440 b.progress && "progress" != this.type && (f = "progress");
13442 void 0 !== b.message && (this.message = b.message, d.setHtml(this.message));
13443 void 0 !== b.progress && (this.progress = b.progress,
13445 … a && b.important && (c.setAttribute("role", "alert"), this.isVisible() || this.area.add(this));
13446 this.duration = b.duration;
13458 var b = this,
13477 b.editor.focus();
13478 b.hide()
13486 var b = new CKEDITOR.dom.element("span");
13487 b.addClass("cke_notification_progress");
13488 b.setStyle("width", this._getPercentageProgress());
13489 return b
13495 var b = this,
13500 a && (b._hideTimeoutId = setTimeout(function() {
13501 b.hide()
13506 add: function(b) {
13507 this.notifications.push(b);
13508 this.element.append(b.element);
13512 remove: function(b) {
13514 b);
13515 …0 > a || (this.notifications.splice(a, 1), b.element.remove(), this.element.getChildCount() || (th…
13518 var b = this.editor,
13519 a = b.config,
13522 c.setAttribute("id", "cke_notifications_area_" + b.name);
13527 var b = CKEDITOR.document.getWindow(),
13529 b.on("scroll", this._uiBuffer.input);
13530 b.on("resize", this._uiBuffer.input);
13536 var b = CKEDITOR.document.getWindow(),
13538 b.removeListener("scroll", this._uiBuffer.input);
13539 b.removeListener("resize", this._uiBuffer.input);
13545 function b() {
13580b() : a.setStyle("left", k(n)) : e.x + g + h > p.x + t.width ? a.setStyle("left", k(n)) : e.x + d.…
13603 click: a.click || function(b) {
13604 b.execCommand(a.command)
13615 render: function(a, b) {
13645 var b;
13646 e.onfocus && (b = !1 !== e.onfocus(e, new CKEDITOR.dom.event(a)));
13647 return b
13662 if (this.directional) a.on("contentDirChanged", function(b) {
13665 b = b.data;
13666b != a.lang.dir ? c.addClass("cke_" + b) : c.removeClass("cke_ltr").removeClass("cke_rtl");
13668 CKEDITOR.skin.getIconStyle(m, "rtl" == b, this.icon, this.iconOffset))
13696 w.output(g, b);
13703 var b = CKEDITOR.document.getById(this._.id);
13704b ? (b.setState(a, "cke_button"), a == CKEDITOR.TRISTATE_DISABLED ? b.setAttribute("aria-disabled"…
13711 var b = this;
13712 …s.allowedContent || this.requiredContent || !this.command || (b = a.getCommand(this.command) || b);
13713 return this._.feature = b
13716 CKEDITOR.ui.prototype.addButton = function(a, b) {
13717 this.add(a, CKEDITOR.UI_BUTTON, b)
13723 …for (var b = f(), e = CKEDITOR.tools.clone(a.config.toolbarGroups) || v(a), n = 0; n < e.length; n…
13731 for (var h = 0; h < d.length; h++) l = d[h], (l = b[l]) && c(g, l);
13732 (l = b[g.name]) && c(g, l)
13739 var b = {},
13741 …others", g = g.split(","), e = g[0], g = parseInt(g[1] || -1, 10), b[e] || (b[e] = []), b[e].push({
13745 for (e in b) b[e] = b[e].sort(function(b,
13747 … return b.order == a.order ? 0 : 0 > a.order ? -1 : 0 > b.order ? 1 : b.order < a.order ? -1 : 1
13749 return b
13755 … d; d = e.shift();) d = "string" == typeof d ? d : d.name, b && -1 != CKEDITOR.tools.indexOf(b, d)…
13759 function h(b) {
13762 …for (e = 0; e < b.length; ++e) d = b[e], h = {}, "/" == d ? a.push(d) : CKEDITOR.tools.isArray(d) …
13766 var b = a.config.removeButtons,
13767 b = b && b.split(","),
13838 var b, e = "rtl" == a.lang.dir,
13846 for (; !b || !b.items.length;)
13847b = 9 == h ? (b ? b.next : c.toolbar.next) || a.toolbox.toolbars[0] : (b ? b.previous : c.toolbar.…
13848 … for (c = b.items[d ? b.items.length - 1 : 0]; c && !c.focus;)(c = d ? c.previous : c.next) ||
13849 (b = 0);
13853 b = c;
13854 … do b = b.next, !b && k && (b = c.toolbar.items[0]); while (b && !b.focus);
13855 b ? b.focus() : f(c, 9);
13861 b = c;
13862 …do b = b.previous, !b && k && (b = c.toolbar.items[c.toolbar.items.length - 1]); while (b && !b.fo…
13863 b ? b.focus() : (d = 1, f(c, CKEDITOR.SHIFT + 9), d = 0);
13878b = ['\x3cspan id\x3d"', d, '" class\x3d"cke_voice_label"\x3e', a.lang.toolbar.toolbars, "\x3c/spa…
13881 …nfig.toolbarCanCollapse && a.elementMode != CKEDITOR.ELEMENT_MODE_INLINE && b.push('\x3cspan class…
13888 …if (e && (b.push("\x3c/span\x3e"), k = e = 0), "/" === p) b.push('\x3cspan class\x3d"cke_toolbar_b…
13896 c = c.render(a, b);
13916b.push('\x3cspan id\x3d"', r, '" class\x3d"cke_toolbar' + (v ? ' cke_toolbar_last"' : '"'), w ? ' …
13917 … w && b.push('\x3cspan id\x3d"', r, '_label" class\x3d"cke_voice_label"\x3e', w, "\x3c/span\x3e");
13918b.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');
13923 …A ? e || (b.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'), e = 1) : e && (b
13929 e && (b.push("\x3c/span\x3e"), k = e = 0);
13930 … m && b.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')
13933 a.config.toolbarCanCollapse && b.push("\x3c/span\x3e");
13943 exec: function(b) {
13944 var a = b.ui.space("toolbar_collapser"),
13946 d = b.ui.space("contents"),
13951 …tAttribute("title", b.lang.toolbar.toolbarCollapse)) : (c.hide(), a.addClass("cke_toolbox_collapse…
13955 b.fire("resize", {
13956 outerHeight: b.container.$.offsetHeight,
13958 outerWidth: b.container.$.offsetWidth
13967b.push('\x3ca title\x3d"' + (d ? a.lang.toolbar.toolbarCollapse : a.lang.toolbar.toolbarExpand) + …
13968 d || b.push(" cke_toolbox_collapser_min");
13969b.push('" onclick\x3d"CKEDITOR.tools.callFunction(' + C + ')"\x3e', '\x3cspan class\x3d"cke_arrow"…
13971 b.push("\x3c/span\x3e");
13972 c.data.html += b.join("")
13978 b, e, f;
13980 …for (e = a[d].items, b = 0; b < e.length; b++) f = e[b], f.clickFn && CKEDITOR.tools.removeFunctio…
14006 b = {
14027 h ? c.splice(0, 0, a) : "number" == typeof d ? c.splice(d + 1, 0, b) : c.push(a)
14033 function r(a, b, c) {
14034 b.type || (b.type = "auto");
14035 … if (c && !1 === a.fire("beforePaste", b) || !b.dataValue && b.dataTransfer.isEmpty()) return !1;
14036 b.dataValue || (b.dataValue = "");
14037 … if (CKEDITOR.env.gecko && "drop" == b.method && a.toolbox) a.once("afterPaste", function() {
14040 return a.fire("paste", b)
14044 function b() {
14045 var b = a.editable();
14047 var c = function(b) {
14048 … a.getSelection().isCollapsed() || (a.readOnly && "cut" == b.name || p.initPasteDataTransfer(b,
14049 a), b.data.preventDefault())
14051 b.on("copy", c);
14052 b.on("cut", c);
14053 b.on("cut", function() {
14057 b.on(p.mainPasteEvent, function(a) {
14060 "beforepaste" == p.mainPasteEvent && (b.on("paste", function(a) {
14062 }), b.on("contextmenu", h, null, null, 0), b.on("beforepaste", function(a) {
14065 b.on("beforecut", function() {
14069 b.attachListener(CKEDITOR.env.ie ?
14070 b : a.document.getDocumentElement(), "mouseup",
14079 b.on("keyup", t)
14082 function c(b) {
14084 type: b,
14085 canUndo: "cut" == b,
14087 fakeKeystroke: "cut" == b ? CKEDITOR.CTRL + 88 : CKEDITOR.CTRL + 67,
14090 var b;
14092 if (CKEDITOR.env.ie) b = e(c);
14094 b = a.document.$.execCommand(c, !1, null)
14096 b = !1
14098 b || a.showNotification(a.lang.clipboard[this.type + "Error"]);
14099 return b
14109 exec: function(a, b) {
14110 function c(b, h) {
14112b ? (b.method = "paste", b.dataTransfer || (b.dataTransfer = p.initPasteDataTransfer()), r(a, b, h…
14117 returnValue: !!b
14120 b = "undefined" !== typeof b && null !== b ? b : {};
14122 e = "undefined" !== typeof b.notification ? b.notification : !0,
14123 h = b.type,
14127 f = "string" === typeof b ? b : b.dataValue;
14150 function e(b) {
14158 d.on(b, h);
14159 … 7 < CKEDITOR.env.version ? c.$.execCommand(b) : c.$.selection.createRange().execCommand(b);
14160 d.removeListener(b, h);
14166 var b = a.getSelection(),
14168b.getType() == CKEDITOR.SELECTION_ELEMENT && (c = b.getSelectedElement()) && (d = b.getRanges()[0]…
14169 c.getParent() && (e.remove(), b.selectElement(c))
14175 function l(b, c) {
14223 var b;
14224 … CKEDITOR.env.webkit && (b = k.getFirst()) && b.is && b.hasClass("Apple-style-span") && (k = b);
14238 var b = a.focusManager;
14239 b.lock();
14240 if (a.editable().fire(p.mainPasteEvent) && !e("paste")) return b.unlock(), !1;
14241 b.unlock();
14245 function n(b) {
14246 if ("wysiwyg" == a.mode) switch (b.data.keyCode) {
14249 b =
14252 "paste" == p.mainPasteEvent && b.fire("beforepaste");
14262 function k(b) {
14266 dataTransfer: p.initPasteDataTransfer(b)
14270 …d && p.canClipboardApiBeTrusted(c.dataTransfer, a) ? (b.data.preventDefault(), setTimeout(function…
14272 }, 0)) : l(b, function(b) {
14273 c.dataValue = b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,
14281 var b = q("paste");
14284 a.getCommand("paste").setState(b);
14285 a.fire("pasteState", b)
14289 function q(b) {
14290 if (v && b in {
14294 if ("paste" == b) return CKEDITOR.TRISTATE_OFF;
14295 b = a.getSelection();
14296 var c = b.getRanges();
14297 …return b.getType() == CKEDITOR.SELECTION_NONE || 1 == c.length && c[0].collapsed ? CKEDITOR.TRISTA…
14305 a.on("contentDom", b);
14311 a.contextMenu.addListener(function(a, b) {
14312 v = b.getRanges()[0].checkReadOnly();
14322 var b = a.contextMenu.findItemByCommandName("paste");
14323 b && b.element && (c = b.element.on("touchend", function() {
14330 … a._.pasteButtons && CKEDITOR.tools.array.forEach(a._.pasteButtons, function(b) {
14331 if (b = a.ui.get(b))
14332 … if (b = CKEDITOR.document.getById(b._.id)) b.on("touchend", function() {
14339 function b(c, d, e, h, f) {
14354 b("Cut", "cut", c("cut"), 10, 1);
14355 b("Copy", "copy", c("copy"), 20, 4);
14356 b("Paste",
14361 a.getClipboardData = function(b, c) {
14380 c || (c = b, b = null);
14407 function A(a, b) {
14411b = b.replace(/(?!\u3000)\s+/g, " ").replace(/> +</g, "\x3e\x3c").replace(/<br ?\/>/gi, "\x3cbr\x3…
14412 b = b.replace(/<\/?[A-Z]+>/g, function(a) {
14415 if (b.match(/^[^<]$/)) return b;
14416 …CKEDITOR.env.webkit && -1 < b.indexOf("\x3cdiv\x3e") && (b = b.replace(/^(<div>(<br>|)<\/div>)(?!$…
14417b.match(/<div>(<br>|)<\/div>/) && (b = "\x3cp\x3e" + b.replace(/(<div>(<br>|)<\/div>)+/g, function…
14419 … }) + "\x3c/p\x3e"), b = b.replace(/<\/div><div>/g, "\x3cbr\x3e"), b = b.replace(/<\/?div>/g, ""));
14420 …CKEDITOR.env.gecko && (b = b.replace(/^<br><br>$/, "\x3cbr\x3e")), -1 < b.indexOf("\x3cbr\x3e\x3cb…
14423 return B(a, b)
14429 b;
14430 … for (b in CKEDITOR.dtd) "$" != b.charAt(0) && "div" != b && "span" != b && (a[b] = 1);
14433 var b = {};
14436 …return "plain-text" == c ? b.plainText || (b.plainText = new CKEDITOR.filter("br")) : "semantic-co…
14443 }), c = b.semanticContent = c), c) : c ? new CKEDITOR.filter(c) : null
14448 function w(a, b, c) {
14449 b = CKEDITOR.htmlParser.fragment.fromHtml(b);
14451 c.applyTo(b, !0, !1,
14453 b.writeHtml(d);
14457 function B(a, b) {
14458 a.enterMode == CKEDITOR.ENTER_BR ? b = b.replace(/(<\/p><p>)+/g, function(a) {
14460 …}).replace(/<\/?p>/g, "") : a.enterMode == CKEDITOR.ENTER_DIV && (b = b.replace(/<(\/)?p>/g, "\x3c…
14461 return b
14470 var b = CKEDITOR.plugins.clipboard;
14472 function c(b, c, e) {
14479 e.sourceEditor.editable().extractHtmlFromRange(b);
14480 e.sourceEditor.getSelection().selectRanges([b]);
14490 b.resetDragDataTransfer()
14493 function g(b, c, e) {
14495 $: b.data.$,
14496 target: b.data.getTarget()
14500 !1 === a.fire(b.name, d) && b.data.preventDefault()
14511 b.preventDefaultDropOnElement(l);
14512 b.preventDefaultDropOnElement(m);
14514 e.attachListener(a, "dragstart", b.resetDragDataTransfer, b, null, 1);
14516 b.initDragDataTransfer(c, a)
14519 var c = b.dragRange = a.getSelection().getRanges()[0];
14520 … CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (b.dragStartContainerChildCount =
14521 … c ? h(c.startContainer) : null, b.dragEndContainerChildCount = c ? h(c.endContainer) : null)
14524 e.attachListener(a, "dragend", b.initDragDataTransfer, b, null, 1);
14525 e.attachListener(a, "dragend", b.resetDragDataTransfer, b, null, 100);
14529 var b = a.data.getTarget();
14530b && b.is && b.is("html") ? a.data.preventDefault() : CKEDITOR.env.ie && CKEDITOR.plugins.clipboar…
14539 var e = b.getRangeAtDropPosition(c, a),
14540 d = b.dragRange;
14545 e.attachListener(a, "drop", b.initDragDataTransfer, b, null, 1);
14553 b.internalDrop(f, h, g, a)
14563 var b, c = C();
14564 …AsPlainText ? b = "plain-text" : a.config.pasteFilter ? b = a.config.pasteFilter : !CKEDITOR.env.w…
14565 a.pasteFilter = c.get(b);
14573 a.on("paste", function(b) {
14574 var c = b.data,
14579 b.data.dataValue = '\x3cimg src\x3d"' + l.result + '" /\x3e';
14580 a.fire("paste", b.data)
14583 a.fire("paste", b.data)
14587 a.fire("paste", b.data)
14591 b.stop()
14595 a.on("paste", function(b) {
14596b.data.dataTransfer || (b.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer);
14597 if (!b.data.dataValue) {
14598 var c = b.data.dataTransfer,
14600 if (d) b.data.dataValue = d, b.data.type = "html";
14601 …else if (d = c.getData("text/plain")) b.data.dataValue = a.editable().transformPlainTextToHtml(d),…
14605 var b = a.data.dataValue,
14606b.indexOf("Apple-") && (b = b.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi, " ")…
14607 return b.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;")
14608b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e') && (a.data.startsWithEOL = 1, a.data.…
14609 if (b.match(/^<[^<]+cke_(editable|contents)/i)) {
14611 …for (n.setHtml(b); 1 == n.getChildCount() && (d = n.getFirst()) && d.type == CKEDITOR.NODE_ELEMENT…
14612 g && (b = g.getHtml().replace(/<br>$/i, ""))
14614 CKEDITOR.env.ie ? b = b.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g, function(b, d) {
14615 return d.toLowerCase() in c ? (a.data.preSniffing = "html", "\x3c" + d) : b
14616 … }) : CKEDITOR.env.webkit ? b = b.replace(/<\/(\w+)><div><br><\/div>$/, function(b, d) {
14618 c ? (a.data.endsWithEOL = 1, "\x3c/" + d + "\x3e") : b
14619 }) : CKEDITOR.env.gecko && (b = b.replace(/(\s)<br>$/, "$1"));
14620 a.data.dataValue = b
14622 a.on("paste", function(b) {
14623 b = b.data;
14624 var d = a._.nextPasteType || b.type,
14625 f = b.dataValue,
14627 n = b.dataTransfer.getTransferType(a) == CKEDITOR.DATA_TRANSFER_EXTERNAL,
14629 g = "html" == d || "html" == b.preSniffing ? "html" : z(f);
14634 else if (n && a.pasteFilter && !b.dontFilter || k) f = w(a, f, a.pasteFilter);
14635 b.startsWithEOL && (f = '\x3cbr data-cke-eol\x3d"1"\x3e' + f);
14636 b.endsWithEOL && (f += '\x3cbr data-cke-eol\x3d"1"\x3e');
14638 b.type = d;
14639 b.dataValue = f;
14640 delete b.preSniffing;
14641 delete b.startsWithEOL;
14642 delete b.endsWithEOL
14644 a.on("paste", function(b) {
14645 b = b.data;
14646b.dataValue && (a.insertHtml(b.dataValue, b.type, b.range), setTimeout(function() {
14651 a.on("pasteDialog", function(b) {
14653 a.openDialog("paste", b.data)
14663 addPasteButton: function(a, b, c) {
14664 a.ui.addButton && (a.ui.addButton(b, c), a._.pasteButtons ||
14665 (a._.pasteButtons = []), a._.pasteButtons.push(b))
14667 canClipboardApiBeTrusted: function(a, b) {
14668 …return a.getTransferType(b) != CKEDITOR.DATA_TRANSFER_EXTERNAL || CKEDITOR.env.chrome && !a.isEmpt…
14671 var b = a.editable();
14672 return CKEDITOR.env.ie && 9 > CKEDITOR.env.version || b.isInline() ? b : a.document
14675 b, c, d) {
14679b.startContainer.getChild(b.startOffset - 1), c = b.startContainer.getChild(b.startOffset), a && a…
14681 var h = b.startContainer;
14685 isDropRangeAffectedByDragRange: function(a, b) {
14686 var c = b.startContainer,
14687 d = b.endOffset;
14690 internalDrop: function(a, b, c, d) {
14698 …CKEDITOR.env.ie && 10 > CKEDITOR.env.version && this.fixSplitNodesAfterDrop(a, b, g.dragStartConta…
14700 (f = this.isDropRangeAffectedByDragRange(a, b)) || (e = a.createBookmark(!1));
14701 g = b.clone().createBookmark(!1);
14704 b = e.endNode;
14706b && a.getPosition(f) & CKEDITOR.POSITION_PRECEDING && b.getPosition(f) & CKEDITOR.POSITION_FOLLOW…
14710 b = d.createRange();
14711 b.moveToBookmark(g);
14715 range: b
14720 b) {
14724 h = b.getSelection(!0).getRanges()[0],
14725 e = b.createRange();
14727 …if (document.caretRangeFromPoint && b.document.$.caretRangeFromPoint(d, g)) c = b.document.$.caret…
14730 … if (CKEDITOR.env.ie && 8 < CKEDITOR.env.version && h && b.editable().hasFocus) return h;
14732 b.focus();
14733 c = b.document.getBody().$.createTextRange();
14746 var t = b.document.getById(k);
14750 var q = b.document.$.elementFromPoint(d, g),
14753 if (p.equals(b.editable()) ||
14754 …l" == p.getName()) return h && h.startContainer && !h.startContainer.equals(b.editable()) ? h : nu…
14766 initDragDataTransfer: function(a, b) {
14768 d = new this.dataTransfer(c, b);
14777 initPasteDataTransfer: function(a, b) {
14781 d = new this.dataTransfer(c, b);
14786 return new this.dataTransfer(null, b)
14789 a.data.$.clipboardData || null, b)
14796 CKEDITOR.plugins.clipboard.dataTransfer = function(a, b) {
14814b && (this.sourceEditor = b, this.setData("text/html", b.getSelectedHtml(1)), "Text" == m || this.…
14820 getData: function(a, b) {
14822 var c = "text/html" == a && b ? this._.nativeHtmlCache : this._.data[a];
14824 … if (this._.fallbackDataTransfer.isRequired()) c = this._.fallbackDataTransfer.getData(a, b);
14830 "text/html" != a || b || (c = this._stripHtml(c))
14837 setData: function(a, b) {
14839 …xt/html" == a ? (this._.data[a] = this._stripHtml(b), this._.nativeHtmlCache = b) : this._.data[a]…
14841 …= m && "Text" == a && (this.id = b), this._.fallbackDataTransfer.isRequired()) this._.fallbackData…
14843 this.$.setData(a, b)
14855 a = b._.normalizeType(a);
14856 var c = b.getData(a);
14857 … "text/html" == a && (b._.nativeHtmlCache = b.getData(a, !0), c = b._stripHtml(c));
14858 c && (b._.data[a] = c)
14861 var b = this,
14886 b;
14888 CKEDITOR.tools.array.forEach(CKEDITOR.tools.objectKeys(this._.data), function(b) {
14889 a[b] = 1
14897 for (b in a)
14898 if (a[b] && "" !== this.getData(b)) return !1;
14906 } catch (b) {}
14911 var b = this._.bodyRegExp.exec(a);
14912 b && b.length && (a = b[1], a = a.replace(this._.fragmentRegExp, ""))
14926 b = this._dataTransfer.$;
14928 if (b) {
14932b.setData("cke/mimetypetest", "cke test value"), a._isCustomMimeTypeSupported = "cke test value" =…
14937 getData: function(a, b) {
14940 if (b) return c;
14946 setData: function(a, b) {
14948 c && (b = this._applyDataComment(b, this._getFallbackTypeData()));
14949 var d = b,
14969 _getData: function(a, b) {
14971 if (!b && c[a]) return c[a];
14986b = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).data || {},
14989 void 0 !== c[a] ? b[a] = c[a] : void 0 !== b[a] && (b[a] = b[a])
14991 return b
14997 var b = {
15004 …/\x3c!--cke-data:(.*?)--\x3e/g.exec(a)) && c[1] && (b.data = JSON.parse(decodeURIComponent(c[1])),…
15006 return b
15008 _applyDataComment: function(a, b) {
15010b && CKEDITOR.tools.objectKeys(b).length && (c = "\x3c!--cke-data:" + encodeURIComponent(JSON.stri…
15055 b = this;
15057 b.className && this.element.addClass(b.className + "_panel");
15058 b.setState(CKEDITOR.TRISTATE_ON);
15060 b.editorFocus && c.focus();
15061 if (b.onOpen) b.onOpen()
15064b.className && this.element.getFirst().removeClass(b.className + "_panel");
15065b.setState(b.modes && b.modes[c.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
15067 if (!d && b.onClose) b.onClose()
15071 b.document.getById(a.id).focus()
15076 b.setState(CKEDITOR.TRISTATE_OFF)
15095 CKEDITOR.ui.panel = function(a, b) {
15096 b && CKEDITOR.tools.extend(this, b);
15118 render: function(a, b) {
15124 b = a.getParent(),
15126 CKEDITOR.env.iOS && b.setStyles({
15130 b = CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function() {
15137 b + ");"
15141 var b = a.data.getKeystroke(),
15143 …= this._.onKeyDown(b) ? a.data.preventDefault() : (27 == b || b == ("rtl" == c ? 39 : 37)) && this…
15147 CKEDITOR.env.air && CKEDITOR.tools.callFunction(b)
15171 b && b.push(d);
15174 addBlock: function(a, b) {
15175b = this._.blocks[a] = b instanceof CKEDITOR.ui.panel.block ? b : new CKEDITOR.ui.panel.block(this…
15176 b);
15178 return b
15185 var b = this._.currentBlock,
15187 b && b.hide();
15201 $: function(a, b) {
15211 b && CKEDITOR.tools.extend(this, b);
15227 for (var b = function(a) {
15230 …if (d = e.getItem(f), d.getAscendant(b) || (c = d, this._.focusIndex = f), "true" == d.getAttribut…
15247 onKeyDown: function(a, b) {
15256 … } return c || b ? !1 : (this._.focusIndex = -1, this.onKeyDown(a,
15268 … return c || b ? !1 : (this._.focusIndex = e.count(), this.onKeyDown(a, 1));
15282 function v(a, b, c, m, h) {
15283 …h = CKEDITOR.tools.genKey(b.getUniqueId(), c.getUniqueId(), a.lang.dir, a.uiColor || "", m.css || …
15285 …|| (g = f[h] = new CKEDITOR.ui.panel(b, m), g.element = c.append(CKEDITOR.dom.element.createFromHt…
15293 $: function(a, b, c, m) {
15299 (b = CKEDITOR.document.getById("cke_" + a.name));
15300 var g = b.getDocument();
15301 m = v(a, g, b, c, m || 0);
15310 parentElement: b,
15325 addBlock: function(a, b) {
15326 return this._.panel.addBlock(a, b)
15328 addListBlock: function(a, b) {
15330 b)
15335 showBlock: function(a, b, c, m, h, g) {
15348 t = b.getDocumentPosition(f),
15356 …!q || 1 != c && 4 != c ? q || 2 != c && 3 != c || (d += b.$.offsetWidth - 1) : d += b.$.offsetWidt…
15357 if (3 == c || 4 == c) p += b.$.offsetHeight - 1;
15358 this._.panel._.offsetParentId = b.getId();
15392 var b = k.element.getDocument(),
15393b = (CKEDITOR.env.webkit || CKEDITOR.env.edge ? k.element : b.getBody()).$.scrollWidth;
15394 …CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetWidth || 0) - (a.$.clientWidth…
15395 a.setStyle("width", b + 10 + "px");
15396 b = k.element.$.scrollHeight;
15398 … CKEDITOR.env.quirks && 0 < b && (b += (a.$.offsetHeight || 0) - (a.$.clientHeight || 0) + 3);
15399 a.setStyle("height", b + "px");
15404 var b = n.element.getWindow(),
15406 b = b.getViewPaneSize(),
15409 m = q ? a.right : b.width - a.left,
15410 h = q ? b.width - a.right : a.left;
15411 … q ? m < c && (d = h > c ? d + c : b.width > c ? d - a.left : d - a.right + b.width) :
15412 … m < c && (d = h > c ? d - c : b.width > c ? d - a.right + b.width : d - a.left);
15414b.height - a.top < e && (p = c > e ? p - e : b.height > e ? p - a.bottom + b.height : p - a.top);
15415 …ITOR.env.ie && (b = a = new CKEDITOR.dom.element(l.$.offsetParent), "html" == b.getName() && (b =
15475 var b = this._.panel;
15476 void 0 !== a && (b.allowBlur = a);
15477 return b.allowBlur
15479 showAsChild: function(a, b, c, f, h, g) {
15484 …}, this), this._.activeChild = a, this._.focused = !1, a.showBlock(b, c, f, h, g), this.blur(), (C…
15490 var b = this._.activeChild;
15491 b && (delete b.onHide, delete this._.activeChild, b.hide(), a && this.focus())
15497 b;
15498 for (b in f) {
15499 var c = f[b];
15532 b) {
15533 q = b;
15534 b.autoSize = !0;
15535 b.element.addClass("cke_colorblock");
15536 b.element.setHtml(y(a, d, m));
15537 b.element.getDocument().getBody().setStyle("overflow", "hidden");
15539 var c = b.keys,
15554 b = a && a.getStartElement(),
15555 c = e.elementPath(b);
15557 b = c.block || c.blockLimit || e.document.getBody();
15558 …o c = b && b.getComputedStyle("back" == d ? "background-color" : "color") || "transparent"; while …
15561 if (b = a && a.getRanges()[0]) {
15562 …for (var a = new CKEDITOR.dom.walker(b), f = b.collapsed ? b.startContainer : a.next(), b = ""; f;…
15565 b = b || f;
15566 if (b !== f) {
15567 b = "";
15572 a = b;
15573 b = q._.getItems();
15574 for (f = 0; f < b.count(); f++) {
15575 var g = b.getItem(f);
15592 q = CKEDITOR.tools.addFunction(function(a, b) {
15595 l["colorButton_" + b + "Style"];
15599 d.childRule = "back" == b ? function(a) {
15623 b = n[0],
15624 c = n[1] || b;
15625 …n[1] ? n = b : (b = "#" + b.replace(/^(.)(.)(.)$/, "$1$1$2$2$3$3"), n = e.lang.colorbutton.colors[…
15626 …true title\x3d"', n, '" onclick\x3d"CKEDITOR.tools.callFunction(', q, ",'", b, "','", d, "'); retu…
15709 init: function(b) {
15712 b.addCommand("colordialog", d);
15714 b.getColorFromDialog = function(d, g) {
15731 b.execCommand("colordialog");
15732 … if (b._.storedDialogs && b._.storedDialogs.colordialog) e(b._.storedDialogs.colordialog);
15735 var b = a.data.definition;
15737 b.onLoad = CKEDITOR.tools.override(b.onLoad, function(a) {
15740 b.onLoad = a;
15772 … for (var e = [], b = 0, c = a.length; b < c; b++) f[a[b]] || (e.push(a[b]), f[a[b]] = 1);
15782 l.addMenuGroup = function(a, b) {
15783 r[a] = b || 100
15785 l.addMenuItem = function(a, b) {
15786 r[b.group] && (t[a] = new CKEDITOR.menuItem(this, a, b))
15789 for (var b in a) this.addMenuItem(b, a[b])
15814 $: function(a, b) {
15815 b = this._.definition = b || {};
15820 this._.level = b.level || 1;
15821 var d = CKEDITOR.tools.extend({}, b.panel, {
15834 b = a && a.getStartElement(),
15839 var k = m[g](b, a, d);
15853 var b = this.parent;
15854 b ? b._.panel.hideChild(1) :
15862 var b = this._.subMenu,
15865b ? b.removeAll() : (b = this._.subMenu = new CKEDITOR.menu(this.editor, CKEDITOR.tools.extend({},…
15867 … }, !0)), b.parent = this, b._.onClick = CKEDITOR.tools.bind(this._.onClick, this));
15870 g && (g.state = d[m], b.add(g))
15875 b.show(k, 2)
15888 show: function(a, b, d, m) {
15890 b = b || ("rtl" == this.editor.lang.dir ? 2 : 1);
15929 var b = this.items[a];
15930 if (b.state == CKEDITOR.TRISTATE_DISABLED) this.hide(1);
15931 else if (b.getItems) this._.showSubMenu(a);
15932 else this._.onClick(b)
15945 …s.parent ? this.parent._.panel.showAsChild(e, this.id, a, b, d, m) : e.showBlock(this.id, a, b, d,…
15956 var b = CKEDITOR.tools.array.filter(this.items, function(b) {
15957 return a === b.command
15959 return b.length ? (b = b[0], {
15960 item: b,
15961 element: this._.element.findOne("." + b.className)
15967 $: function(a, b, d) {
15970 className: "cke_menubutton__" + b
15974 this.name = b
15977 render: function(a, b, d) {
15978 var h = a.id + String(b),
16007 index: b,
16048b = (new CKEDITOR.dom.elementPath(a.getTarget(), c.editable())).contains(function(a) {
16051b && "false" == b.getAttribute("contenteditable") && c.getSelection().fake(b)
16053 var b = a.getTarget().getDocument(),
16055 c = !b.equals(CKEDITOR.document),
16056 b = b.getWindow().getScrollPosition(),
16057 g = c ? a.$.clientX : a.$.pageX || b.x + a.$.clientX,
16058 h = c ? a.$.clientY : a.$.pageY || b.y + a.$.clientY;
16098 function k(a, b, d, e) {
16100 if (a = a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0))
16103 if (a = a.getAscendant(b, !0))
16107 function u(a, b) {
16112 return -1 !== l(b, function(b) {
16113 return b.element === a || b.element === d[a]
16133 var b = CKEDITOR.plugins.copyformatting;
16134 b._addScreenReaderContainer();
16138 a.copyFormatting = new b.state(a);
16139 a.addCommand("copyFormatting", b.commands.copyFormatting);
16140 a.addCommand("applyFormatting", b.commands.applyFormatting);
16148 b = d.isInline() ? d : a.document,
16150 d.attachListener(b, "mouseup", function(b) {
16151 r(b) === CKEDITOR.MOUSE_BUTTON_LEFT && a.execCommand("applyFormatting")
16153 d.attachListener(CKEDITOR.document, "mouseup", function(b) {
16155 …r(b) !== CKEDITOR.MOUSE_BUTTON_LEFT || e.state !== CKEDITOR.TRISTATE_ON || d.contains(b.data.getTa…
16157 … c && (b = CKEDITOR.document.getById(c._.id), d.attachListener(b, "dblclick", function() {
16161 }), d.attachListener(b, "mouseup", function(a) {
16167 a.on("key", function(b) {
16169 b = b.data.domEvent;
16170b.getKeystroke && 27 === b.getKeystroke() && e.state === CKEDITOR.TRISTATE_ON && a.execCommand("co…
16175 e = b._convertElementToStyleDef(e);
16183 c = b._extractStylesFromRange(a, e),
16184 f = b._determineContext(e),
16187b.preservedElements, f.element) ? CKEDITOR.env.webkit && !CKEDITOR.env.chrome ? c[h].removeFromRan…
16191 function(b) {
16193 c = e._determineContext(b.data.range);
16194b.editor, b.data.range, b.data.styles) : "table" === c && a.copyFormatting._isContextAllowed("tabl…
16199 var b =
16201 return !0 === b || -1 !== l(b, a)
16216 exec: function(a, b) {
16219 c = b ? "keystrokeHandler" == b.from : !1,
16220 f = b ? b.sticky || c : !1,
16236 exec: function(a, b) {
16238 e = b ? "keystrokeHandler" == b.from : !1,
16257 var b = CKEDITOR.tools,
16259 b = b.parseCssText(a.getAttribute("style"), !0, !0);
16264 styles: b
16267 _extractStylesFromElement: function(a, b) {
16271b.type === CKEDITOR.NODE_ELEMENT && !b.hasAttribute("data-cke-bookmark") && (d.element = b, a.copy…
16274 _extractStylesFromRange: function(a, b) {
16275 for (var d = [], e = new CKEDITOR.dom.walker(b),
16279 _removeStylesFromElementInRange: function(a, b) {
16280 … for (var d = -1 !== l(["ol", "ul", "table"], b), e = new CKEDITOR.dom.walker(a), c; c = e.next();)
16281 if (c = c.getAscendant(b, !0))
16285 function b(a, b) {
16286 return a[b ? "getPrevious" : "getNext"](function(a) {
16304 for (p = b(f, c); !p && f.getParent();) {
16310 p = b(f, c)
16322 if (m) c ? n = 0 : (g = /([\.\b]*$)/, n = (k = g.exec(h)) ? k.index : h.length);
16329 var c = /\b\w+\b/ig,
16342 var b =
16346 …) && (e.element = a[c].element = "span"), "span" === e.element && b(e.attributes) && b(e.styles) |…
16350 function b(b) {
16353 … if (a.startContainer.getAscendant(b, !0) || a.endContainer.getAscendant(b, !0)) return !0;
16355 if (c.getAscendant(b, !0)) return !0
16357 return b({
16361 "list" : b("table") ? "table" : "text"
16363 _applyStylesToTextContext: function(a, b, d) {
16367 CKEDITOR.env.webkit && !CKEDITOR.env.chrome && a.getSelection().selectRanges([b]);
16369 if (b = d[f], -1 === l(e.excludedElementsFromInlineTransform, b.element)) {
16370 if (-1 !== l(e.elementsForInlineTransform, b.element))
16371 …for (b.element = b._.definition.element = "span", g = 0; g < c.length; g++) b._.definition.attribu…
16372 b.apply(a)
16375 _applyStylesToListContext: function(a, b, d) {
16377 …r (f = 0; f < d.length; f++) e = d[f], c = b.createBookmark(), "ol" === e.element || "ul" === e.el…
16381 var b = e;
16382 a.getName() !== b.element && a.renameNode(b.element);
16383 b.applyToObject(a)
16384 }, !0) : "li" === e.element ? k(b, "li", function(a) {
16386 … }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext(a, b, [e]), b.moveToBookmark(c)
16388 _applyStylesToTableContext: function(a, b, d) {
16389 function e(a, b) {
16390 a.getName() !== b.element && (b = b.getDefinition(),
16391 b.element = a.getName(), b = new CKEDITOR.style(b));
16392 b.applyToObject(a)
16395 …for (g = 0; g < d.length; g++) c = d[g], f = b.createBookmark(), -1 !== l(["table", "tr"], c.eleme…
16397 }) : -1 !== l(["td", "th"], c.element) ? k(b, {
16402 }) : -1 !== l(["thead", "tbody"], c.element) ? k(b, {
16407 … }) : CKEDITOR.plugins.copyformatting._applyStylesToTextContext(a, b, [c]), b.moveToBookmark(f)
16409 _applyFormat: function(a, b) {
16422 b = e._filterStyles(b);
16424 styles: b,
16431 _putScreenReaderMessage: function(a, b) {
16433 d && d.setText(a.lang.copyformatting.notification[b])
16443 var b = a.config.copyFormatting_keystrokePaste;
16444b && (this._initialKeystrokePasteCommand = a.keystrokeHandler.keystrokes[b], a.setKeystroke(b, "ap…
16447 var b = a.config.copyFormatting_keystrokePaste;
16448 b && a.setKeystroke(b, this._initialKeystrokePasteCommand || !1)
16452 …CKEDITOR.config.copyFormatting_allowRules = "b s u i em strong span p div td th ol ul li(*)[*]{*}";
16465 b = "div(*)";
16466 … CKEDITOR.dialog.isTabEnabled(a, "editdiv", "advanced") && (b += ";div[dir,id,lang,title]{*}");
16468 allowedContent: b,
16485 function c(b) {
16486 …(b = CKEDITOR.plugins.div.getSurroundDiv(a, b)) && !b.data("cke-div-added") && (f.push(b), b.data(…
16488 …for (var b = a.getSelection(), g = b && b.getRanges(), e, h = b.createBookmarks(), f = [], d = 0; …
16490 b.selectBookmarks(h)
16511 }), a.contextMenu && a.contextMenu.addListener(function(b) {
16512 … return !b || b.isReadOnly() ? null : CKEDITOR.plugins.div.getSurroundDiv(a) ? {
16525 var b = a.elementPath(c);
16526 return a.elementPath(b.blockLimit).contains(function(a) {
16533 init: function(b) {
16541 b.resize(h ? e : null, m)
16547b.document && (b.document.removeListener("mousemove", f), b.document.removeListener("mouseup",
16550 var a = b.config,
16551 r = b.ui.spaceId("resizer"),
16552 g = b.element ? b.element.getDirection(1) : "ltr";
16564 l || (l = b.getResizable());
16577 b.document && (b.document.on("mousemove", f), b.document.on("mouseup", k));
16580 b.on("destroy",
16584 b.on("uiSpace", function(a) {
16589 …zer' + e + " cke_resizer_" + g + '" title\x3d"' + CKEDITOR.tools.htmlEncode(b.lang.common.resize) …
16592 }, b, null, 100);
16593 b.on("maximize",
16595 b.ui.space("resizer")[a.data == CKEDITOR.TRISTATE_ON ? "hide" : "show"]()
16602 function k(b) {
16603 b = h.list[b];
16605b.equals(a.editable()) || "true" == b.getAttribute("contenteditable") ? (e = a.createRange(), e.se…
16608 path: new CKEDITOR.dom.elementPath(b)
16623 var b = a.ui.space("path");
16624 b && a.focusManager.add(b, 1)
16628 w = CKEDITOR.tools.addFunction(function(b, e) {
16636 …37: case 9: return (d = CKEDITOR.document.getById(g + (b + 1))) || (d = CKEDITOR.document.getById(…
16638 …39: case CKEDITOR.SHIFT + 9: return (d = CKEDITOR.document.getById(g + (b - 1))) || (d = CKEDITOR.…
16643 return k(b), !1
16647 a.on("selectionChange", function(b) {
16648 …for (var e = [], g = h.list = [], d = [], c = h.filters, p = !0, k = b.data.path.elements, u = k.l…
16651 b = f.data("cke-display-name") ? f.data("cke-display-name") :
16655 var l = c[t](f, b);
16660 b = l || b
16662 r || (g.unshift(f), d.unshift(b))
16665 …for (c = 0; c < g; c++) b = d[c], p = a.lang.elementspath.eleTitle.replace(/%1/, b), b = x.output({
16668 text: b,
16669 jsTitle: "javascript:void('" + b + "')",
16673 }), e.unshift(b);
16714 function x(a, e, b) {
16715 b = a.config.forceEnterMode || b;
16719 g && !g.isContextFor("p") && (e = CKEDITOR.ENTER_BR, b = 1);
16721 e == CKEDITOR.ENTER_BR ? u(a, e, null, b) : r(a, e, null, b);
16772 enterBlock: function(a, e, b, g) {
16774 var b;
16777 (b = a.getBogus()) && b.remove();
16780 if (b = b || y(a)) {
16781 b = z(b);
16782 var h = b.document,
16783 n = b.checkStartOfBlock(),
16784 f = b.checkEndOfBlock(),
16785 p = a.elementPath(b.startContainer),
16793 b = c.getParent();
16794 d = b.getParent();
16804 …if (d.is("li")) g || f ? (g && f && b.remove(), c[f ? "insertAfter" : "insertBefore"](d)) : c.brea…
16808 … t), c.moveChildren(d)) : d = p.block, g || f) d[g ? "insertBefore" : "insertAfter"](b);
16809 else c.breakParent(b), d.insertAfter(b);
16811 … for (; h = c[g ? "getFirst" : "getLast"]();) h[g ? "insertBefore" : "insertAfter"](b);
16813 for (c.breakParent(b); h = c.getLast();) h.insertAfter(b);
16824 b.moveToElementEditStart(c);
16825 b.select();
16829 u(a, e, b, g);
16832 if (q = b.splitBlock(l)) {
16837 …&& (k = a.getParent()) && k.is("li") && (a.breakParent(k), k = a.getNext(), b.moveToElementEditSta…
16839 if (m(e)) b.moveToElementEditStart(b.getTouchedStartNode());
16853 d.getParent() || b.insertNode(d);
16856 (b.moveToElementEditStart(f ? a : d), b.select());
16857 b.moveToElementEditStart(n && !f ? c : d)
16859 …else c.is("li") && (d = b.clone(), d.selectNodeContents(c), d = new CKEDITOR.dom.walker(d), d.eval…
16861 …rFiller ? h.createElement("br") : h.createText(" ")).insertBefore(k)), c && b.moveToElementEditSta…
16862 b.select();
16863 b.scrollIntoView()
16867 enterBr: function(a, e, b, g) {
16868 if (b = b || y(a)) {
16869 var m = b.document,
16870 h = b.checkEndOfBlock(),
16874 … m.insertAfter(f), b.setStart(m, 0)) : (m.createElement("br").insertAfter(f), CKEDITOR.env.gecko &…
16875b.deleteContents(), b.insertNode(a), CKEDITOR.env.needsBrFiller ? (m.createText("").insertAfter(a…
16885 function k(b, f) {
16897 b = b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g, function(b, a) {
16903 if (!f && b) {
16904 b = b.split(",");
16907 a.innerHTML = "\x26" + b.join(";\x26") + ";";
16912 g[h] = "\x26" + b[a] + ";";
16920 afterInit: function(b) {
16925 function g(b) {
16926 … return "force" != c.entities_processNumerical && a[b] ? a[b] : "\x26#" + b.charCodeAt(0) + ";"
16928 var c = b.config;
16929 if (b = (b = b.dataProcessor) && b.htmlFilter) {
16942 b.addRules({
16961 popup: function(e, a, b, d) {
16963 b = b || "70%";
16965 …"string" == typeof b && 1 < b.length && "%" == b.substr(b.length - 1, 1) && (b = parseInt(window.s…
16967 420 > b && (b = 420);
16968 var f = parseInt((window.screen.height - b) / 2, 10),
16971 a + ",height\x3d" + b + ",top\x3d" + f + ",left\x3d" + g;
16975 …erAgent.toLowerCase().indexOf(" chrome/") && (c.moveTo(g, f), c.resizeTo(a, b)), c.focus(), c.loca…
16988 function l(a, c, b) {
16993b ? this.fileName = b : this.file.name ? this.fileName = this.file.name : (a = this.file.type.spli…
17007 var b = [],
17014 b.push(f)
17016 return new Blob(b, {
17024 var b = a.data.fileLoader;
17025 b.xhr.open("POST", b.uploadUrl, !0);
17027 file: b.file,
17028 name: b.fileName
17032 var b = c.data.fileLoader,
17043 for (g in f) b.xhr.setRequestHeader(g, f[g]);
17044 b.xhr.send(d)
17047 var b = a.data.fileLoader,
17048 d = b.xhr,
17057 … f.message = b.lang.filetools.responseError, CKEDITOR.warn("filetools-response-error", {
17065 create: function(a, c, b) {
17066 b = b || l;
17068 a = new b(this.editor, a, c);
17082 var b = this;
17085 b.once("update", function(a) {
17088 b.upload(a, c)
17106 c.onprogress = function(b) {
17107 a.loaded = b.loaded;
17118 var b = c || {};
17121 requestData: b
17126 "error" != b.status && (b.message = b.lang.filetools.networkError,
17127 b.changeStatus("error"))
17131 "abort" != b.status && b.changeStatus("abort")
17133 var b = this,
17135 b.abort = function() {
17142 …a.lengthComputable && (b.uploadTotal || (b.uploadTotal = a.total), b.uploaded = a.loaded, b.update…
17143 … }, d.upload.onerror = a, d.upload.onabort = c) : (b.uploadTotal = b.total, b.update());
17145 b.update();
17146 if ("abort" != b.status)
17147 …if (b.uploaded = b.uploadTotal, 200 > d.status || 299 < d.status) b.message = b.lang.filetools["ht…
17148 …d.status], b.message || (b.message = b.lang.filetools.httpError.replace("%1", d.status)), b.change…
17151 fileLoader: b
17152 …}, c = ["message", "fileName", "url"], e = b.editor.fire("fileUploadResponse", a), h = 0; h < c.le…
17154 "string" === typeof a[k] && (b[k] = a[k])
17156 b.responseData = a;
17157 delete b.responseData.fileLoader;
17158 !1 === e ? b.changeStatus("error") : b.changeStatus("uploaded")
17183 var b = CKEDITOR.tools.capitalize;
17185 …c && a["filebrowser" + b(c, 1) + "UploadUrl"] ? a["filebrowser" + b(c, 1) + "UploadUrl"] + "\x26re…
17194 function g(a, b) {
17196 if (b)
17197 for (var c in b) d.push(c + "\x3d" + encodeURIComponent(b[c]));
17215 b = a.getParentEditor();
17216 b._.filebrowserSe = this;
17217 …var d = b.config["filebrowser" + k(a.getName()) + "WindowWidth"] || b.config.filebrowserWindowWidt…
17219 …a = b.config["filebrowser" + k(a.getName()) + "WindowHeight"] || b.config.filebrowserWindowHeight …
17221 c.CKEditor = b.name;
17222 c.CKEditorFuncNum = b._.filebrowserFn;
17223 c.langCode || (c.langCode = b.langCode);
17225b.popup(c, d, a, b.config.filebrowserWindowFeatures || b.config.fileBrowserWindowFeatures)
17229 var b = new CKEDITOR.dom.element(a.$.form);
17230b && ((a = b.$.elements.ckCsrfToken) ? a = new CKEDITOR.dom.element(a) : (a = new CKEDITOR.dom.ele…
17233 }), b.append(a)), a.setAttribute("value", CKEDITOR.tools.getCsrfToken()))
17242 function u(a, b, d) {
17247 b.action = g(d.url, c);
17248 b.filebrowser = d
17251 function l(a, b, d, c) {
17255 … c[g], "hbox" != e.type && "vbox" != e.type && "fieldset" != e.type || l(a, b, d, e.children), e.f…
17261 …void 0 === f && (f = a.config["filebrowser" + k(b) + "BrowseUrl"], void 0 === f && (f = a.config.f…
17264 … && (f = e.filebrowser.url, void 0 === f && (f = a.config["filebrowser" + k(b) + "UploadUrl"], voi…
17266 e.onClick = function(b) {
17267 var c = b.sender,
17270 if (h && !1 === h.call(c, b)) return !1;
17271 if (t.call(c, b)) {
17272 …m" !== a.config.filebrowserUploadMethod && e) return b = a.uploadRepository.create(d.$.files[0]),
17273 var b =
17275 m.call(a.sender.editor, b.url, b.message)
17276 … }), b.on("error", n.bind(this)), b.on("abort", n.bind(this)), b.loadAndUpload(p(f)), "xhr";
17289 var b = {};
17291 b = JSON.parse(a.sender.xhr.response) || {}
17294 alert(b.error ? b.error.message : a.sender.message)
17297 function h(a, b, d) {
17301 if (h(a, b, d[c])) return !0;
17304 return (a = a.getContents(b).get(d).filebrowser) && a.url
17307 function m(a, b) {
17312 if ("function" != typeof b || !1 !== b.call(this._.filebrowserSe))
17313 if (!e || !1 !== e.call(this._.filebrowserSe, a, b))
17314 …if ("string" == typeof b && b && alert(b), a && (c = this._.filebrowserSe, d = c.getDialog(), c = …
17329 for (var b = a.data.definition, d, c = 0; c < b.contents.length; ++c)
17330 …if (d = b.contents[c]) l(a.editor, a.data.name, b, d.elements), d.hidden && d.filebrowser && (d.hi…
17336 var b = a.addCommand("find", new CKEDITOR.dialogCommand("find")),
17340 b.canUndo = !1;
17341 b.readOnly = 1;
17363 function g(a, b) {
17365 d = l.exec(b);
17370 return b
17378 var b = a.attributes;
17379 …if ((b = (b = (b = b && b["data-cke-realelement"]) && new CKEDITOR.htmlParser.fragment.fromHtml(de…
17381 a = b.attributes;
17387 return b
17401 CKEDITOR.editor.prototype.createFakeElement = function(a, b, c, d) {
17404 b = {
17405 "class": b,
17412 CKEDITOR.env.hc || (b.src = CKEDITOR.tools.transparentImageData);
17413 c && (b["data-cke-real-element-type"] = c);
17414b["data-cke-resizable"] = d, c = new k, d = a.getAttribute("width"), a = a.getAttribute("height"),…
17416 attributes: b
17419 CKEDITOR.editor.prototype.createFakeParserElement = function(a, b, c, d) {
17426 b = {
17427 "class": b,
17434 CKEDITOR.env.hc || (b.src = CKEDITOR.tools.transparentImageData);
17435 c && (b["data-cke-real-element-type"] = c);
17436b["data-cke-resizable"] = d, d = a.attributes, a = new k, c = d.width, d = d.height, void 0 !== c …
17437 return new CKEDITOR.htmlParser.element("img", b)
17442 …var b = CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")), this.do…
17446 c && b.setAttribute("width", g(b.getAttribute("width"), c));
17447 a && b.setAttribute("height", g(b.getAttribute("height"), a))
17449 return b
17458 function e(a, b) {
17459 return a.createFakeParserElement(b, "cke_flash", "flash", !0)
17468 …var b = "object[classid,codebase,height,hspace,vspace,width];param[name,value];embed[height,hspace…
17469 …CKEDITOR.dialog.isTabEnabled(a, "flash", "properties") && (b += ";object[align]; embed[allowscript…
17470 …CKEDITOR.dialog.isTabEnabled(a, "flash", "advanced") && (b += ";object[id]{*}; embed[bgcolor]{*}(*…
17472 allowedContent: b,
17489 var b = a.data.element;
17490b.is("img") && "flash" == b.data("cke-real-element-type") && (a.data.dialog = "flash")
17499 var b = a.dataProcessor;
17500 (b = b && b.dataFilter) && b.addRules({
17502 "cke:object": function(b) {
17503 var c = b.attributes;
17504 if (!(c.classid && String(c.classid).toLowerCase() || d(b))) {
17505 for (c = 0; c < b.children.length; c++)
17506 if ("cke:embed" == b.children[c].name) {
17507 if (!d(b.children[c])) break;
17508 return e(a, b)
17511 return e(a, b)
17513 "cke:embed": function(b) {
17514 return d(b) ? e(a, b) : null
17535 b.setStyle(c, w(e));
17536 b.setStyle("position", a)
17540 var b = k.getDocumentPosition();
17543 f("absolute", "top", b.y - q - r);
17549 f("absolute", "top", b.y + (c.height || c.bottom - c.top) + r)
17561 f && b.show();
17565 b.removeStyle("left");
17566 b.removeStyle("right");
17567 n = b.getClientRect();
17573 …: 0, f + n.width > h.width && (d = "left" == d ? "right" : "left", f = 0)), b.setStyle(d, w(("pin"…
17580b = CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(k.output({
17592 b.unselectable();
17593 b.on("mousedown", function(a) {
17597 a.on("focus", function(b) {
17598 t(b);
17604 b.hide();
17613 b.clearCustomData();
17614 b.remove()
17616 a.focusManager.hasFocus && b.show();
17617 a.focusManager.add(b, 1)
17637 CKEDITOR.ui.panel.prototype.addListBlock = function(a, b) {
17638 return this.addBlock(a, new CKEDITOR.ui.listBlock(this.getHolderElement(), b))
17642 $: function(a, b) {
17643 b = b || {};
17644 var c = b.attributes || (b.attributes = {});
17645 (this.multiSelect = !!b.multiSelect) && (c["aria-multiselectable"] = !0);
17676 var b = this.toggle(a);
17677 if (this.onClick) this.onClick(a, b)
17683 add: function(a, b, c) {
17695 text: b || a
17701 var b = CKEDITOR.tools.getNextId();
17702 this._.groups[a] = b;
17704 id: b,
17715 var b = this.isMarked(a);
17716 b ? this.unmark(a) : this.mark(a);
17717 return !b
17720 … var b = (a = this.element.getDocument().getById(this._.groups[a])) && a.getNext();
17722 "none"), b && "ul" == b.getName() && b.setStyle("display", "none"))
17729 b = this._.groups,
17733 …for (var e in b) a = c.getById(b[e]), d = a.getNext(), a.setStyle("display", ""), d && "ul" == d.g…
17738 var b = this.element.getDocument().getById(a);
17739 b.addClass("cke_selected");
17741 this.onMark && this.onMark(b)
17750 var b = this.element.getDocument();
17752 var c = b.getById(a);
17754 b.getById(a + "_option").removeAttribute("aria-selected");
17759 b = this.element.getDocument(),
17763 b.getById(d).removeClass("cke_selected");
17764 b.getById(d + "_option").removeAttribute("aria-selected")
17773 var b = this.element.getElementsByTag("a"),
17776 … for (c = this.element.getDocument().getById(this._.items[a]).getFirst(); a = b.getItem(++d);) {
17831 var b = [];
17832 this.render(a, b);
17833 return b.join("")
17835 render: function(a, b) {
17838 … var b = this.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
17839 a.readOnly && !this.readOnly && (b = CKEDITOR.TRISTATE_DISABLED);
17840 this.setState(b);
17842 b != CKEDITOR.TRISTATE_DISABLED && this.refresh && this.refresh()
17848 e = CKEDITOR.tools.addFunction(function(b) {
17850 g.execute(b)
17859 execute: function(b) {
17867 c.panel.showBlock(d.id, new CKEDITOR.dom.element(b), 4)
17877 var m = CKEDITOR.tools.addFunction(function(a, b) {
17884 CKEDITOR.tools.callFunction(e, b);
17908 k.output(c, b);
17914 var b = this._.panelDefinition,
17916 k = b.parent || CKEDITOR.document.getBody(),
17918 e = new CKEDITOR.ui.floatPanel(a, k, b),
17919 b = e.addListBlock(this.id, c),
17928 e.onHide = function(b) {
17932 if (!b && d.onClose) d.onClose()
17937 b.onClick = function(a, b) {
17938 d.onClick && d.onClick.call(d, a, b);
17942 this._.list = b;
17950 setValue: function(a, b) {
17954 …(a || b ? c.removeClass("cke_combo_inlinelabel") : (b = this.label, c.addClass("cke_combo_inlinela…
17974 add: function(a, b, c) {
17976 this._.list.add(a, b, c)
17987 var b = this.document.getById("cke_" + this.id);
17988 b.setState(a, "cke_combo");
17989 …a == CKEDITOR.TRISTATE_DISABLED ? b.setAttribute("aria-disabled", !0) : b.removeAttribute("aria-di…
18012 CKEDITOR.ui.prototype.addRichCombo = function(a, b) {
18013 this.add(a, CKEDITOR.UI_RICHCOMBO, b)
18017 function p(b, f, e, d, r, p, t, x) {
18018 var y = b.config,
18033 b.ui.addRichCombo(f, {
18049 var b = " x-small small medium large x-large xx-large 48px".split(" ");
18051 … a.attributes.size && (a.styles["font-size"] = b[a.attributes.size], delete a.attributes.size);
18066 a = "(" + b.lang.common.optionDefault + ")";
18072 b.focus();
18073 b.fire("saveSnapshot");
18078 if (e = k[c], c = b.getSelection().getRanges()[0], c.collapsed) {
18079 if (n = b.elementPath(), h = n.contains(function(a) {
18090 b.getSelection().selectRanges([c])
18092 } else b.removeStyle(e);
18093 a === this.defaultValue ? e && b.removeStyle(e) : b.applyStyle(f);
18094 b.fire("saveSnapshot")
18097 b.on("selectionChange",
18104 if (k[e].checkElementMatch(f, !0, b)) {
18113 b.activeFilter.check(u) || this.setState(CKEDITOR.TRISTATE_DISABLED)
18118 function v(b, f, e) {
18121 if (e) return v(b, f, d.equals(e) ? null : e);
18123 b.insertNode(e);
18124 b.moveToPosition(e, CKEDITOR.POSITION_AFTER_START);
18125 v(b, f)
18130 init: function(b) {
18131 var f = b.config;
18132 … p(b, "Font", "family", b.lang.font, f.font_names, f.font_defaultLabel, f.font_style, 30);
18133 …p(b, "FontSize", "size", b.lang.font.fontSize, f.fontSize_sizes, f.fontSize_defaultLabel, f.fontSi…
18172 var b = a.lang,
18212 label: b.common[d.charAt(0).toLowerCase() + d.slice(1)],
18232 label: b.forms.checkboxAndRadio.checkboxTitle,
18237 label: b.forms.checkboxAndRadio.radioTitle,
18242 label: b.forms.textfield.title,
18247 label: b.forms.hidden.title,
18252 label: b.forms.button.title,
18257 label: b.forms.select.title,
18262 label: b.forms.textarea.title,
18267 label: b.image.titleButton,
18272 label: b.forms.form.menu,
18349 var b = a.dataProcessor,
18350 g = b && b.htmlFilter,
18351 b = b && b.dataFilter;
18357 var b = a.type;
18358 b || (a.type = "text");
18359 "checkbox" != b && "radio" != b || "on" != a.value || delete a.value
18365 b && b.addRules({
18367 input: function(b) {
18368 …if ("hidden" == b.attributes.type) return a.createFakeParserElement(b, "cke_hidden", "hiddenfield")
18404 onClick: function(b) {
18407 b = d[b];
18409 b.checkActive(e, a) || a.applyStyle(b);
18415 a.on("selectionChange", function(b) {
18417 b = b.data.path;
18420 if (d[c].checkActive(b, a)) {
18429 for (var b in d) a.activeFilter.check(d[b]) || this.hideItem(b)
18432 var b = a.elementPath();
18433 if (b) {
18434 if (b.isContextFor("p"))
18476 var b = {
18479 var b = a.document.createElement("hr");
18480 a.insertElement(b)
18487 …a.blockless || (a.addCommand("horizontalrule", b), a.ui.addButton && a.ui.addButton("HorizontalRul…
18496 init: function(b) {
18498 a.forceSimpleAmpersand = b.config.forceSimpleAmpersand;
18499 a.indentationChars = b.config.dataIndentationChars || "\t";
18500 b.dataProcessor.writer = a
18515 var b = CKEDITOR.dtd,
18517 …for (a in CKEDITOR.tools.extend({}, b.$nonBodyContent, b.$block, b.$listItem, b.$tableContent)) th…
18518 indent: !b[a]["#"],
18520 breakBeforeClose: !b[a]["#"],
18523 b.$block && !(a in {
18546 openTag: function(b) {
18547 var a = this._.rules[b];
18550 this._.output.push("\x3c", b);
18553 openTagClose: function(b, a) {
18554 var c = this._.rules[b];
18557 "pre" == b && (this._.inPre = 1)
18559 attribute: function(b, a) {
18561 this._.output.push(" ", b, '\x3d"', a, '"')
18563 closeTag: function(b) {
18565 this._.rules[b];
18568 this._.output.push("\x3c/", b, "\x3e");
18569 "pre" == b && (this._.inPre = 0);
18573 text: function(b) {
18574 … this._.indent && (this.indentation(), !this._.inPre && (b = CKEDITOR.tools.ltrim(b)));
18575 this._.output.push(b)
18577 comment: function(b) {
18580 this._.output.push("\x3c!--", b, "--\x3e")
18598 setRules: function(b, a) {
18599 var c = this._.rules[b];
18600 c ? CKEDITOR.tools.extend(c, a, !0) : this._.rules[b] =
18612 var b = a.lang.iframe,
18625 label: b.toolbar,
18630 var b = a.data.element;
18631b.is("img") && "iframe" == b.data("cke-real-element-type") && (a.data.dialog = "iframe")
18635 label: b.title,
18647 var b = a.dataProcessor;
18648 (b = b && b.dataFilter) && b.addRules({
18650 iframe: function(b) {
18651 return a.createFakeParserElement(b, "cke_iframe", "iframe", !0)
18661 var b = !1;
18664 if (!b) {
18666 b = !0
18671b && (1 == d.count() && !d.getItem(0).getCustomData("retain") && CKEDITOR.tools.isEmpty(d.getItem(…
18674 var b = this.editor,
18691b.enterMode != CKEDITOR.ENTER_P ? f("p") : CKEDITOR.env.edge && 15 > CKEDITOR.env.version && b.ent…
18694 b.editable().focus()
18697 n(b);
18699 b.document.$.execCommand("2D-position", !1, !0)
18700 …} catch (h) {}(CKEDITOR.env.gecko || CKEDITOR.env.ie && "CSS1Compat" == b.document.$.compatMode) &…
18705 b.getSelection().scrollIntoView()
18707 else if (b.window.$.innerHeight > this.$.offsetHeight) {
18708 var d = b.createRange();
18722 d = b.document.getElementsByTag("title").getItem(0);
18724 CKEDITOR.env.ie && (b.document.$.title = this._.docTitle);
18727 b.fire("contentDom");
18728 this._.isPendingFocus && (b.focus(), this._.isPendingFocus = !1);
18730 b.fire("dataReady")
18740 … d && (c && (c.detachEvent("onresizestart", b), c = null), d.$.attachEvent("onresizestart",
18741 b), c = d.$)
18745 function b(a) {
18760 b;
18761 for (b in CKEDITOR.dtd.$removeEmpty) f.push("html.CSS1Compat " +
18762 b + "[contenteditable\x3dfalse]");
18777 function b(b) {
18778 b && b.removeListener();
18793 if (e) d.on("load", b);
18812 !e && b();
18819 b = f.contentsCss;
18820 CKEDITOR.tools.isArray(b) || (f.contentsCss = b ? [b] : []);
18835 var b = this.editor;
18836 if (f) this.setHtml(a), this.fixInitialSelection(), b.fire("dataReady");
18839 b._.dataStore = {
18842 var c = b.config,
18846 d || (g += CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));
18850 b.docType = e = a;
18853 b.xmlDeclaration = a;
18856 a = b.dataProcessor.toHtml(a);
18858 …ir\x3d"' + c.contentsLangDirection + '" lang\x3d"' + (c.contentsLanguage || b.langCode) + '"\x3e\x…
18867 b.fire("contentDomUnload");
18882 b = f.fullPage,
18883 c = b && a.docType,
18884 d = b && a.xmlDeclaration,
18886 b = b ? e.getDocumentElement().getOuterHtml() : e.getBody().getHtml();
18887 …CKEDITOR.env.gecko && f.enterMode != CKEDITOR.ENTER_BR && (b = b.replace(/<br>(?=\s*(:?$|<\/body>)…
18888 b = a.dataProcessor.toDataFormat(b);
18889 d && (b = d + "\n" + b);
18890 c && (b = c + "\n" + b);
18891 return b
18899 b;
18901 b = a.window.getFrame()
18907b && b.getParent() ? (b.clearCustomData(), (a = b.removeCustomData("onResize")) && a.removeListene…
18916 function e(b, a) {
18917 a || (a = b.getSelection().getSelectedElement());
18921 function f(b) {
18922 var a = b.getStyle("float");
18924 a || (a = b.getAttribute("align"));
18929 init: function(b) {
18930 if (!b.plugins.detectConflict("image", ["easyimage", "image2"])) {
18933 …CKEDITOR.dialog.isTabEnabled(b, "image", "advanced") && (a = "img[alt,dir,id,lang,longdesc,!src,ti…
18934 b.addCommand("image", new CKEDITOR.dialogCommand("image", {
18942 b.ui.addButton && b.ui.addButton("Image", {
18943 label: b.lang.common.image,
18947 b.on("doubleclick", function(b) {
18949 b.data.element;
18950 … !a.is("img") || a.data("cke-realelement") || a.isReadOnly() || (b.data.dialog = "image")
18952 b.addMenuItems && b.addMenuItems({
18954 label: b.lang.image.menu,
18959 b.contextMenu && b.contextMenu.addListener(function(a) {
18960 if (e(b, a)) return {
18966 afterInit: function(b) {
18968 var d = b.getCommand("justify" + a);
18971 var c = e(b),
18977 var c = e(b);
18982 b.plugins.image2 || (a("left"), a("right"), a("center"), a("block"))
18988 function m(a, b) {
18990 b.on("refresh", function(a) {
18991 var b = [k],
18993 for (c in a.data.states) b.push(a.data.states[c]);
18994 this.setState(CKEDITOR.tools.search(b, p) ? p : k)
18995 }, b, null, 100);
18996 b.on("exec", function(b) {
18999 b.data || (b.data = {});
19000 b.data.done = !1
19001 }, b, null, 0);
19002 b.on("exec", function() {
19005 }, b, null, 100)
19011 var b = CKEDITOR.plugins.indent.genericDefinition;
19012 m(a, a.addCommand("indent", new b(!0)));
19013 m(a, a.addCommand("outdent", new b));
19025 a.on("dirChanged", function(b) {
19027 l = b.data.node;
19037 …for (var g = "ltr" == b.data.dir ? ["_rtl", ""] : ["", "_rtl"], h = 0; h < d.length; h++) c.hasCla…
19051 specificDefinition: function(a, b, e) {
19052 this.name = b;
19061 registerCommands: function(a, b) {
19063 for (var a in b)(function(a, b) {
19064 var e = a.getCommand(b.relatedGlobal),
19066 for (c in b.jobs) e.on("exec", function(d) {
19067 …(a.fire("lockSnapshot"), b.execJob(a, c) && (d.data.done = !0), a.fire("unlockSnapshot"), CKEDITOR…
19070 d.data.states[b.name + "@" + c] = b.refreshJob(a, c, d.data.path)
19072 a.addFeature(b)
19073 })(this, b[a])
19082 execJob: function(a, b) {
19083 var e = this.jobs[b];
19087 b, e) {
19088 b = this.jobs[b];
19089 … a.activeFilter.checkFeature(this) ? b.state = b.refresh.call(this, a, e) : b.state = k;
19090 return b.state
19098 function f(b, c, a) {
19099 if (!b.getCustomData("indent_processed")) {
19103 d = b.$.className.match(this.classNameRegex);
19109b.$.className = CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex, ""));
19110 0 < a && b.addClass(c[a - 1])
19112 c = m(b, a);
19113 a = parseInt(b.getStyle(c), 10);
19121 b.setStyle(c, a ? a + (d.config.indentUnit || "px") : "");
19122 "" === b.getAttribute("style") && b.removeAttribute("style")
19124 CKEDITOR.dom.element.setMarker(this.database, b, "indent_processed", 1)
19128 function m(b, c) {
19129 return "ltr" == (c || b.getComputedStyle("direction")) ? "margin-left" : "margin-right"
19137 init: function(b) {
19166 refresh: function(a, b) {
19167 var e = b.block || b.blockLimit;
19169 e = c && b.contains(c) || e;
19171 if (this.enterBr || this.getContext(b)) {
19185 var b = a.getSelection(),
19186 b = b && b.getRanges()[0],
19190 …for (b = b.createIterator(), a = a.config.enterMode, b.enforceRealBlocks = !0, b.enlargeBr = a != …
19197 d = b.config.indentClasses;
19198 a.registerCommands(b, {
19199 indentblock: new c(b, "indentblock", !0),
19200 outdentblock: new c(b, "outdentblock")
19225 function g(b) {
19226 …for (var e = c.startContainer, a = c.endContainer; e && !e.getParent().equals(b);) e = e.getParent…
19227 for (; a && !a.getParent().equals(b);) a = a.getParent();
19231 e = b.getParents(!0);
19234 b = e[a];
19236 … : -1, a = d[0], d = d[d.length - 1], h = CKEDITOR.plugins.list.listToArray(b, q), m = h[d.getCust…
19245 … e = CKEDITOR.plugins.list.arrayToList(h, q, null, f.config.enterMode, b.getDirection());
19248 if ((t = b.getParent()) && t.is("li"))
19252 e && e.listNode.replace(b);
19255 for (l = b = r[a];
19256 …tName() in p;) CKEDITOR.env.needsNbspFiller && !b.getFirst(x) && b.append(c.document.createText(" …
19257 b.insertAfter(t)
19263 for (var b = c.getCommonAncestor(); b &&
19264 (b.type != CKEDITOR.NODE_ELEMENT || !p[b.getName()]);) {
19265 if (f.editable().equals(b)) {
19266 b = !1;
19269 b = b.getParent()
19271 b || (b = c.startPath().contains(p)) && c.setEndAt(b, CKEDITOR.POSITION_BEFORE_END);
19272 if (!b) {
19274 …c.setStartAt(d, CKEDITOR.POSITION_AFTER_START), c.setEndAt(d, CKEDITOR.POSITION_BEFORE_END), b = d)
19276b && c.startContainer.type == CKEDITOR.NODE_ELEMENT && c.startContainer.getName() in p && (d = new…
19278b && c.endContainer.type == CKEDITOR.NODE_ELEMENT && c.endContainer.getName() in p && (d = new CKE…
19279 if (b) return g(b)
19312 b = CKEDITOR.plugins.indentList.firstItemInPath(this.context, c, g);
19313 return g && this.isIndent && !b ? v : u
19362 var b;
19363 if (c) b = a.getComputedStyle("text-align");
19366 b = a.getParent();
19367 if (!b) break;
19368 a = b
19370 b = a.getStyle("text-align") || a.getAttribute("align") || ""
19372 b && (b = b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i, ""));
19373 !b && c && (b = "rtl" == a.getComputedStyle("direction") ? "right" : "left");
19374 return b
19377 function h(a, c, b) {
19380 this.value = b;
19386 switch (b) {
19414 b = c.createRange();
19415 b.setStartBefore(a.data.node);
19416 b.setEndAfter(a.data.node);
19417 for (var f = new CKEDITOR.dom.walker(b), d; d = f.next();)
19419 …if (!d.equals(a.data.node) && d.getDirection()) b.setStartAfter(d), f = new CKEDITOR.dom.walker(b);
19431 b = a.config.enterMode;
19434 …for (h = d[n].createIterator(), h.enlargeBr = b != CKEDITOR.ENTER_BR; g = h.getNextParagraph(b == …
19452 var b = c.block || c.blockLimit,
19453 f = b.getName(),
19454 d = b.equals(a.editable()),
19456 …s.length ? this.setState(CKEDITOR.TRISTATE_OFF) : !d && f ? this.setState(q(b, this.editor.config.…
19463 b = new h(a, "justifycenter", "center"),
19467 a.addCommand("justifycenter", b);
19497 b = a.menu;
19498 …a.state !== CKEDITOR.TRISTATE_DISABLED && (a.on && b ? b.hide() : (a.previousState = a.state, b ||…
19505 }), b.onHide = CKEDITOR.tools.bind(function() {
19506 var b = this.command ? c.getCommand(this.command).modes : this.modes;
19507 … this.setState(!b || b[c.mode] ? a.previousState : CKEDITOR.TRISTATE_DISABLED);
19510 …this.onMenu && b.addListener(this.onMenu)), this.setState(CKEDITOR.TRISTATE_ON), a.on = 1, setTime…
19511 b.show(CKEDITOR.document.getById(a.id), 4)
19540 var b = a.config.language_list || ["ar:Arabic:rtl", "fr:French", "es:Spanish"],
19549 exec: function(a, b) {
19550 var c = e["language_" + b];
19558 … for (f = 0; f < b.length; f++) g = b[f].split(":"), h = g[0], k = "language_" + h, e[k] = {
19581 var b = c.getCurrentLangElement(a);
19582 b && a.execCommand("language", b.getAttribute("lang"))
19595 var b = {},
19598 for (f in e) b[f] = CKEDITOR.TRISTATE_OFF;
19599 b.language_remove = d ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
19600 d && (b["language_" + d.getAttribute("lang")] =
19602 return b
19610 var b = a.elementPath();
19611 a = b && b.elements;
19613 if (b)
19614 … d = 0; d < a.length; d++) b = a[d], !c && "span" == b.getName() && b.hasAttribute("dir") && b.has…
19625 for (var b, a = c.length, d = [], f = 0; f < a; f++) b = c.charCodeAt(f), d.push(b);
19629 function r(c, b) {
19634 …d.length; g++) a = d[g].toLowerCase(), f = b[a], 0 < g && e.push(","), e.push("'", f ? p(encodeURI…
19641 var b;
19642 c && "encode" != c && (b = {}, c.replace(/^([^(]+)\(([^)]+)\)$/, function(a, c, f) {
19643 b.name = c;
19644 b.params = [];
19646 b.params.push(a)
19649 return b
19654 function c(b) {
19655 … return a.replace(/%1/g, "rtl" == b ? "right" : "left").replace(/%2/g, "cke_contents_" + b)
19657 …var b = "background:url(" + CKEDITOR.getUrl(this.path + "images" + (CKEDITOR.env.hidpi ? "/hidpi" …
19658 …e],.cke_editable.%2 a[data-cke-saved-name]{" + b + "padding-%1:18px;cursor:auto;}.%2 img.cke_ancho…
19662 var b = "a[!href]";
19663 …CKEDITOR.dialog.isTabEnabled(c, "link", "advanced") && (b = b.replace("]", ",accesskey,charset,dir…
19665 (b = b.replace("]", ",target,onclick]"));
19667 allowedContent: b,
19694 var b = a.data.element.getAscendant({
19698b && !b.isReadOnly() && (b.is("a") ? (a.data.dialog = !b.getAttribute("name") || b.getAttribute("h…
19699 …"anchor", a.data.link = b) : CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, b) && (a.data.dialog = …
19737 var b = {};
19738 a.getAttribute("href") && a.getChildCount() && (b = {
19742 … a && a.hasAttribute("name") && (b.anchor = b.removeAnchor = CKEDITOR.TRISTATE_OFF);
19743 return b
19756 var b = c._.elementsPath && c._.elementsPath.filters;
19757 b && b.push(function(a, b) {
19758 …if ("a" == b && (CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, a) || a.getAttribute("name") && (!a…
19788 getSelectedLink: function(c, b) {
19794 if (!b && d && d.is("a")) return d;
19798 … }), (g = c.elementPath(g.getCommonAncestor()).contains("a", 1)) && b) e.push(g);
19800 return b ? e : null
19803 for (var b =
19804 …(), a = b.isInline() && !c.plugins.divarea ? c.document : b, b = a.getElementsByTag("a"), a = a.ge…
19815 tryRestoreFakeAnchor: function(c, b) {
19816 if (b && b.data("cke-real-element-type") &&
19817 "anchor" == b.data("cke-real-element-type")) {
19818 var a = c.restoreRealElement(b);
19822 parseLinkAttributes: function(c, b) {
19823 var a = b && (b.data("cke-saved-href") || b.getAttribute("href")) || "",
19827 a.match(t) && ("encode" == f ? a = a.replace(A, function(a, b, c) {
19829 … return "mailto:" + String.fromCharCode.apply(String, b.split(",")) + c.replace(/\\'/g, "'")
19830 }) : f && a.replace(B, function(a, b, c) {
19831 if (b == d.name) {
19834 b = /(^')|('$)/g;
19836 …c.length, f, h, k = 0; k < e; k++) f = decodeURIComponent, h = c[k].replace(b, "").replace(/\\'/g,…
19852 if (b) {
19853 if (a = b.getAttribute("target")) g.target = {
19857 … else if (a = (a = b.data("cke-pa-onclick") || b.getAttribute("onclick")) && a.match(C))
19867 null !== b.getAttribute("download") && (g.download = !0);
19870 for (h in m)(f = b.getAttribute(h)) && (a[m[h]] = f);
19872 b.data("cke-saved-name") || a.advName) a.advName = h;
19877 getLinkAttributes: function(c, b) {
19880 switch (b.type) {
19882 var a = b.url && void 0 !== b.url.protocol ? b.url.protocol : "http://",
19883 f = b.url && CKEDITOR.tools.trim(b.url.url) || "";
19887 a = b.anchor && b.anchor.id;
19888 d["data-cke-saved-href"] = "#" + (b.anchor && b.anchor.name || a || "");
19891 var e = b.email,
19909 if (b.target)
19910 if ("popup" == b.target.type) {
19912 b.target.name || "", "', '"
19914 b.target[a] && h.push(a + "\x3d" + b.target[a])
19915 }, e = 0; e < f; e++) h[e] += b.target[h[e]] ? "\x3dyes" : "\x3dno";
19922 } else "notSet" != b.target.type && b.target.name && (d.target = b.target.name);
19923 b.download && (d.download = "");
19924 if (b.advanced) {
19925 for (var l in m)(a = b.advanced[m[l]]) &&
19937 b.advanced && CKEDITOR.tools.extend(l, m);
19944 showDisplayTextForElement: function(c, b) {
19955 d = b.getSelection();
19956 return b.widgets && b.widgets.focused || d && 1 < d.getRanges().length ?
19964 var b = c.getSelection().getRanges()[0],
19965 …a = b.getPreviousEditableNode() && b.getPreviousEditableNode().getAscendant("a", !0) || b.getNextE…
19967b.collapsed && a && (d = b.createBookmark(), b.selectNodeContents(a), b.select())
19975 d && (b.moveToBookmark(d), b.select())
19977 refresh: function(c, b) {
19978 var a = b.lastElement && b.lastElement.getAscendant("a", !0);
19989 var b = c.getSelection(),
19990 a = b.createBookmarks(),
19992 if (b && (d = b.getSelectedElement()) &&
19998 b.selectBookmarks(a)
20008 function I(b, m, e) {
20012 }))) b.document.createElement("br")[c ? "insertBefore" : "insertAfter"](a)
20026 …} var d = CKEDITOR.plugins.list.arrayToList(f, e, null, b.config.enterMode, m.root.getAttribute("d…
20031 b.fire("contentDomInvalidated")
20034 function B(b, m) {
20035 this.name = b;
20042 function E(b, m, e, c) {
20043 …for (var f, g; f = b[c ? "getLast" : "getFirst"](J);)(g = f.getDirection(1)) !== m.getDirection(1)…
20046 function F(b) {
20048 var c = b[e ? "getPrevious" : "getNext"](u);
20049 …c && c.type == CKEDITOR.NODE_ELEMENT && c.is(b.getName()) && (E(b, c, null, !e), b.remove(), b = c)
20055 function G(b) {
20056 …return b.type == CKEDITOR.NODE_ELEMENT && (b.getName() in CKEDITOR.dtd.$block || b.getName() in CK…
20057 CKEDITOR.dtd[b.getName()]["#"]
20060 function C(b, m, e) {
20061 b.fire("saveSnapshot");
20086 c = b.editable();
20095 b.fire("saveSnapshot")
20098 function A(b) {
20099 … return (b = b.getLast(u)) && b.type == CKEDITOR.NODE_ELEMENT && b.getName() in v ? b : null
20107 u = function(b) {
20108 return !(K(b) || H(b))
20112 listToArray: function(b, m, e, c, f) {
20113 if (!v[b.getName()]) return [];
20116 for (var g = 0, k = b.getChildCount(); g < k; g++) {
20117 var h = b.getChild(g);
20121 parent: b,
20126 …f ? d.grandparent = f : (d.grandparent = b.getParent(), d.grandparent && "li" == d.grandparent.$.n…
20134 arrayToList: function(b, m, e, c, f) {
20136 if (!b || b.length < e + 1) return null;
20137 …for (var g, k = b[e].parent.getDocument(), h = new CKEDITOR.dom.documentFragment(k), d = null, a =…
20138 var r = b[a];
20142 d && b[a].parent.getName() ==
20143 … d.getName() || (d = b[a].parent.clone(!1, 1), f && d.setAttribute("dir", f), h.append(d));
20148 …if (r.indent == Math.max(p, 0) + 1) r = b[a - 1].element.getDirection(1), a = CKEDITOR.plugins.lis…
20173 … l.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT && a != b.length - 1 && (CKEDITOR.env.needsBrFiller &&
20182 if (b.length <= a || Math.max(b[a].indent, 0) < p) break
20185 for (b = h.getFirst(); b;) {
20186 …if (b.type == CKEDITOR.NODE_ELEMENT && (CKEDITOR.dom.element.clearMarkers(m, b), b.getName() in CK…
20191 b = b.getNextSourceNode()
20202 exec: function(b) {
20203 this.refresh(b, b.elementPath());
20204 var m = b.config,
20205 e = b.getSelection(),
20208 var f = b.editable();
20227 …for (var l = b.elementPath(d), a = l.elements, p = 0, l = l.blockLimit, q, n = a.length - 1; 0 <= …
20246 c = b;
20270 b;
20303 … else this.state == CKEDITOR.TRISTATE_ON && v[a.root.getName()] && I.call(this, b, a, k);
20307 b.focus()
20309 refresh: function(b, m) {
20317 init: function(b) {
20318b.blockless || (b.addCommand("numberedlist", new B("numberedlist", "ol")), b.addCommand("bulletedl…
20319 (b.ui.addButton("NumberedList", {
20320 label: b.lang.list.numberedlist,
20324 }), b.ui.addButton("BulletedList", {
20325 label: b.lang.list.bulletedlist,
20329 })), b.on("key", function(m) {
20332 if ("wysiwyg" == b.mode && e in {
20336 var f = b.getSelection().getRanges()[0],
20340 h = b.editable(),
20346 d.guard = function(a, b) {
20347 return !(b && a.type == CKEDITOR.NODE_ELEMENT && a.is("table"))
20354 if (c) C(b, e, f), m.cancel();
20357 …a = p.getPrevious(u), A(c) ? a && (f.moveToElementEditEnd(a), f.select()) : b.execCommand("outdent…
20369 C(b, e, f);
20372 …tEditStart(a), f.select()) : (f = f.clone(), f.moveToElementEditStart(a), C(b, e, f)), m.cancel());
20374 b.selectionChange(1)
20387 var b;
20388 b = new CKEDITOR.dialogCommand("numberedListStyle", {
20395 b = a.addCommand("numberedListStyle", b);
20396 a.addFeature(b);
20398 b = new CKEDITOR.dialogCommand("bulletedListStyle", {
20405 b = a.addCommand("bulletedListStyle", b);
20406 a.addFeature(b);
20424 var b = a.getName();
20425 if ("ol" == b) return {
20428 if ("ul" == b) return {
20473 c[d ? "getPrevious" : "getNext"](function(b) {
20474 return b && b.type == CKEDITOR.NODE_TEXT && !E(b) || n(b) && !u(b) && !A(a, b)
20495b = CKEDITOR.getUrl(this.path + "images/" + (t.hidpi ? "hidpi/" : "") + "icon" + (a.rtl ? "-rtl" :…
20502 …:17px;width:17px;" + (a.rtl ? "left" : "right") + ":17px;background:url(" + b + ") center no-repea…
20520 var b = a.holdDistance,
20522 …return c && q(a.mouse.y, c.top - b, c.bottom + b) && q(a.mouse.x, c.left - b, c.right + b) ? !0 : …
20525 var b = a.view,
20538 … p.equals(c) ? (m.left = b.scroll.x, m.right = -b.scroll.x, m.width = "") : (m.left =
20539b.scroll.x - (a.inInlineMode ? b.editable.left + b.editable.border.left : 0), m.width = l.size.out…
20542b.scroll.y - 15, b.scroll.y + 5) ? (m.top = a.inInlineMode ? 0 : b.scroll.y, this.look(C)) : d.is(…
20543 … a.inInlineMode && (m.top--, m.top += b.editable.scroll.top, m.left += b.editable.scroll.left);
20550 …for (var b = this.lineChildren.length, c; b--;)(c = this.lineChildren[b]).setAttribute("style", c.…
20560 d.lineChildren[0].on("mouseup", function(b) {
20562 S(a, function(b) {
20564 b[c.is(I) ? "insertBefore" : "insertAfter"](c.is(I) ? c.lower : c.upper)
20568 b.data.preventDefault(!0)
20577 var b = new CKEDITOR.dom.range(a.doc),
20583 b.moveToPosition(f, CKEDITOR.POSITION_AFTER_START);
20584 e.getSelection().selectRanges([b]);
20596 function d(b) {
20601 d[c ? "insertAfter" : "insertBefore"](b);
20611 return function(b) {
20612 b = b.getSelection().getStartElement();
20614 b = b.getAscendant(Z, 1);
20615 if (!aa(a, b) && b && !b.equals(a.editable) && !b.contains(a.editable)) {
20616 (e = P(b)) && "false" == e.getAttribute("contenteditable") && (b = e);
20617 a.element = b;
20618 e = w(a, b, !c);
20620 …&& n(f) && f.is(a.triggers)) ? d(e) : (f = O(a, b), n(f) && (w(a, f, !c) ? (b = w(a, f, !c)) && n(
20662 for (var d = c.getParents(1), b = d.length; b--;)
20664 if (d[b].hasAttribute(a.tabuList[e])) return !0;
20670 c = c[d ? "getLast" : "getFirst"](function(b) {
20671 return a.isRelevant(b) && !b.is(oa)
20681 b = a.view,
20684 …var f = d.y > (a.inInlineMode ? b.editable.top + b.editable.height / 2 : Math.min(b.editable.heigh…
20694b.scroll.y ? C : x, new z([null, c, I, M, a])) : f && c.size.bottom <= b.pane.height && q(d.y, c.s…
20700 b = a.triggerOffset,
20704 var b = Math.min(b, 0 | e.size.outerHeight / 2),
20707 if (q(c.y, e.size.top - 1, e.size.top + b)) h = !1;
20709 e.size.bottom - b, e.size.bottom + 1)) h = !0;
20719 …q(c.y, e.size.bottom - b, d.pane.height) && q(e.size.bottom, d.pane.height - b, d.pane.height) ? k…
20725 function U(a, c, d, b) {
20727 d && !b || N(a, b);
20766 var b = a.win,
20767 d = b.getScrollPosition(),
20768 b = b.getViewPaneSize();
20773 width: a.doc.$.documentElement.scrollWidth - b.width,
20774 height: a.doc.$.documentElement.scrollHeight - b.height
20777 width: b.width,
20778 height: b.height,
20779 bottom: b.height + d.y
20786 function pa(a, c, d, b) {
20787 for (var e = b, f = b, k = 0, h = !1, g = !1, l = a.view.pane.height,
20789 h || (h = c(e, b));
20790 g || (g = c(f, b));
20808 b = {
20828 b.isRelevant = function(a) {
20829 return n(a) && !A(b, a) && !u(a)
20835 v(b, {
20842 b.boundary = b.inInlineMode ? b.editable : b.doc.getDocumentElement();
20843 d.is(B.$inline) || (b.inInlineMode && !ba(d) && d.setStyles({
20847 }), la.call(this, b), N(b), d.attachListener(a, "beforeUndoImage",
20849 b.line.detach()
20851 b.line.wrap.getParent() && (b.line.detach(), a.once("getData", function() {
20852 b.line.attach()
20854 …}, null, null, 0), d.attachListener(b.inInlineMode ? g : g.getWindow().getFrame(), "mouseout", fun…
20856 if (b.inInlineMode) {
20859 N(b);
20860 H(b, !0);
20861 var e = b.view.editable,
20862 f = b.view.scroll;
20863 …ight - f.x && c > e.top - f.y && c < e.bottom - f.y || (clearTimeout(k), k = null, b.line.detach())
20865 k = null, b.line.detach()
20867 b.hiddenMode = 0
20872 b.hiddenMode = 1, b.line.detach()
20874 }), d.attachListener(b.inInlineMode ? d : g, "mousemove", function(c) {
20882 b.mouse = d;
20883 k = b.trigger = null;
20884 N(b);
20885 … f && !b.hiddenMode && a.focusManager.hasFocus && !b.line.mouseNear() && (b.element =
20886 …ha(b, !0)) && ((b.trigger = ca(b) || ea(b) || ia(b)) && !aa(b, b.trigger.upper || b.trigger.lower)…
20890 …"wysiwyg" == a.mode && (b.line.detach(), t.webkit && (b.hiddenMode = 1, clearTimeout(e), e = setTi…
20891 b.mouseDown || (b.hiddenMode = 0)
20894 "wysiwyg" == a.mode && (b.line.detach(), b.hiddenMode = 1, b.mouseDown = 1)
20896 b.hiddenMode =
20898 b.mouseDown = 0
20899 …}), a.addCommand("accessPreviousSpace", Y(b)), a.addCommand("accessNextSpace", Y(b, !0)), a.setKey…
20911 b.hotNode = d;
20912b.lastCmdDirection = "true" === d.data("cke-magicline-dir") ? !0 : !1;
20922 that: b,
20967 var b = a.$.elementFromPoint(d.x, d.y);
20968 return b && b.nodeType ? new CKEDITOR.dom.element(b) : null
20970 return function(c, d, b) {
20974 b = b || c.mouse;
20975 var k = a(e, b);
20976 d && A(c, k) && (f.hide(), k = a(e, b), f.show());
20984 var b = a.element,
20986 if (!n(b) || b.contains(a.editable) || b.isReadOnly()) return null;
20987 k = pa(a, function(a, b) {
20988 return !b.equals(a)
20989 }, function(a, b) {
20990 return ha(a, !0, b)
20991 }, b);
20996 if (e && b.contains(e))
20997 for (; !e.getParent().equals(b);) e = e.getParent();
20998 else e = b.getFirst(function(b) {
20999 return c(a, b)
21001 if (f && b.contains(f))
21002 for (; !f.getParent().equals(b);) f = f.getParent();
21003 else f = b.getLast(function(b) {
21004 return c(a, b)
21010 …or (var b = Number.MAX_VALUE, h, g, l, p; f && !f.equals(e) && (g = e.getNext(a.isRelevant));) h =…
21017 function c(a, b) {
21018 …return !(b && b.type == CKEDITOR.NODE_TEXT || F(b) || u(b) || A(a, b) || b.type == CKEDITOR.NODE_E…
21021 var b = a(c),
21023 if (e = b) {
21024 e = b.upper;
21025 var f = b.lower;
21028 return e ? b : null
21038 for (var e = [], f = ["style", "className"], b = 0; b < f.length; b++) {
21039 var c = a.$.elements.namedItem(f[b]);
21048 var b = e[f][0],
21050 c ? b.insertBefore(c) : b.appendTo(a)
21056 b = {},
21058 e || (b["class"] = c.className ||
21060 b.inline = c.style.cssText || "";
21063 return b
21068 b = a.$;
21069 "class" in e && (b.className = e["class"]);
21070 "inline" in e && (b.style.cssText = e.inline);
21079 var b = e[f];
21080 …"wysiwyg" != b.mode || b.readOnly || (b = b.document.getBody(), b.setAttribute("contentEditable", …
21089 var b = c.getViewPaneSize();
21090 a.resize(b.width, b.height, null, !0)
21094 b = CKEDITOR.document,
21095 c = b.getWindow(),
21129 b.getDocumentElement().setStyles(g);
21130 … !CKEDITOR.env.gecko && b.getDocumentElement().setStyle("position", "fixed");
21131 … CKEDITOR.env.gecko && CKEDITOR.env.quirks || b.getBody().setStyles(g);
21184 var b = a.getCommand("maximize");
21185 b.setState(b.state ==
21199 exec: function(b) {
21201 b.setData(b.config.newpage_html || "", function() {
21202 b.focus();
21204 b.fire("afterCommandExec", {
21208 b.selectionChange()
21246 a.document.on("click", function(b) {
21247 b = b.data.getTarget();
21248b.is("div") && b.hasClass("cke_pagebreak") && a.getSelection().selectElement(b)
21253 function b(f) {
21265 "class": function(a, b) {
21269 b.children.length = 0;
21270 b.add(d);
21271 d = b.attributes;
21286 if (a.attributes["data-cke-pagebreak"]) b(a);
21289 c && "span" == c.name && k.test(c.attributes.style) && b(a)
21298 var b = a.document.createElement("div", {
21301 a.insertElement(b)
21322 exec: function(a, b) {
21325 …d = b && "undefined" !== typeof b.notification ? b.notification : !b || !b.from || "keystrokeHandl…
21336 …var b = CKEDITOR.env.safari ? CKEDITOR.CTRL + CKEDITOR.ALT + CKEDITOR.SHIFT + 86 : CKEDITOR.CTRL +…
21338 a.setKeystroke(b, "pastetext");
21347 a.on("pasteState", function(b) {
21348 a.getCommand("pastetext").setState(b.data)
21363 var b = CKEDITOR.plugins.pastefromword && CKEDITOR.plugins.pastefromword.images,
21365 …if (b && a.editor.filter.check("img[src]") && (c = b.extractTagsFromHtml(a.data.dataValue), 0 !== …
21366 0 !== b.length && (CKEDITOR.tools.array.forEach(b, function(a) {
21369 …for (b = 0; b < c.length; b++) 0 === c[b].indexOf("file://") && d[b] && (a.data.dataValue = a.data…
21378 b) {
21382 … notification: b && "undefined" !== typeof b.notification ? b.notification : !0
21392 var b = f.data,
21393 …c = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? b.dataTransfer.getData("text/html", !0…
21394 …d = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? b.dataTransfer.getData("text/rtf") : n…
21396 b.dataValue,
21406 b.dontFilter = !0;
21408 if (k) a.fire("paste", b);
21410b.dataValue = g.dataValue, !0 === a.config.forcePasteAsPlainText ? b.type = "text" : CKEDITOR.plug…
21429 var g, b = a.config,
21430 f = b.baseHref ? '\x3cbase href\x3d"' + b.baseHref + '"/\x3e' : "";
21431 …if (b.fullPage) g = a.getData().replace(/<head>/, "$\x26" + f).replace(/[^>]*(?=<\/title>)/, "$\x2…
21433 var b = "\x3cbody ",
21435 …d && (d.getAttribute("id") && (b += 'id\x3d"' + d.getAttribute("id") + '" '), d.getAttribute("clas…
21436 b += "\x3e";
21438 …" + CKEDITOR.tools.buildStyleHtml(a.config.contentsCss) + "\x3c/head\x3e" + b + a.getData() + "\x3…
21441 b = 420;
21446 b = Math.round(.7 * c.height),
21457 …ar\x3dyes,scrollbars\x3dyes,resizable\x3dyes,width\x3d" + f + ",height\x3d" + b + ",left\x3d" + d);
21512 b = l.startNode,
21514 k = function(b) {
21515 for (var c = a.elementPath(b), e = c.elements, d = 1, g;
21516 …equals(c.block) && !g.equals(c.blockLimit); d++) h.test(g.getName()) && f(a, g) && b.breakParent(g)
21518 k(b);
21520 … for (k(d), b = b.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT); b && !b.equals(d);)
21521 if (b.isReadOnly()) {
21522 if (b.getPosition(d) & CKEDITOR.POSITION_CONTAINS) break;
21523 b = b.getNext(p)
21524 …} else k = b.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT), "img" == b.getName() && b.data("cke-rea…
21525b.remove(1) : (b.removeAttributes(e), a.fire("removeFormatCleanup", b))), b = k;
21543 …CKEDITOR.config.removeFormatTags = "b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,…
21546 var b = {
21555 } catch (b) {
21562 …a.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (a.addCommand("save", b).startDisabled = !a.elem…
21572 init: function(b) {
21573 b.addCommand("selectAll", {
21579 var b = a.editable();
21580 …if (b.is("textarea")) a = b.$, CKEDITOR.env.ie && a.createTextRange ? a.createTextRange().execComm…
21582 if (b.is("body")) a.document.$.execCommand("SelectAll", !1, null);
21585 c.selectNodeContents(b);
21594 b.ui.addButton && b.ui.addButton("SelectAll", {
21595 label: b.lang.selectall.toolbar,
21621 c, b, e, f, k = CKEDITOR.getUrl(this.path),
21626b = e = f = ""; d = a.pop();) h = a.length ? "," : "", c += ".cke_show_blocks " + d + g + h, e += …
21627 …ackground-repeat:no-repeat;border:1px dotted gray;padding-top:8px}").concat(b, e + "{background-po…
21633 b.refresh(a)
21636 var b = a.addCommand("showblocks", k);
21637 b.canUndo = !1;
21638 a.config.startupOutlineBlocks && b.setState(CKEDITOR.TRISTATE_ON);
21645 b.state != CKEDITOR.TRISTATE_DISABLED && b.refresh(a)
21649 b.state != CKEDITOR.TRISTATE_DISABLED && b.refresh(a)
21666 var b = this.state == CKEDITOR.TRISTATE_ON ? "attachClass" : "removeClass";
21667 a.editable()[b]("cke_show_borders")
21682 var b = a.addCommand("showborders", f);
21683 b.canUndo = !1;
21684 !1 !== a.config.startupShowBorders && b.setState(CKEDITOR.TRISTATE_ON);
21686 b.state != CKEDITOR.TRISTATE_DISABLED && b.refresh(a)
21689 b.state != CKEDITOR.TRISTATE_DISABLED && b.refresh(a)
21698 var b = a.dataProcessor;
21699 a = b && b.dataFilter;
21700 b = b && b.htmlFilter;
21705 var b = a["class"],
21707 …c && !(0 >= c) || b && -1 != b.indexOf("cke_show_border") || (a["class"] = (b || "") + " cke_show_…
21711 b && b.addRules({
21715 var b = a["class"];
21716b && (a["class"] = b.replace("cke_show_border", "").replace(/\s{2}/, " ").replace(/^\s+|\s+$/,
21724 var b = a.data.name;
21725 if ("table" == b || "tableProperties" == b)
21726 …if (a = a.data.definition, b = a.getContents("info").get("txtBorder"), b.commit = CKEDITOR.tools.o…
21727 return function(b, c) {
21739 return function(b, c) {
21760 var b = a.ui.space("contents").getDocument().createElement("textarea");
21761 b.setStyles(CKEDITOR.tools.extend({
21769 b.setAttribute("dir", "ltr");
21770b.addClass("cke_source").addClass("cke_reset").addClass("cke_enable_context_menu");
21771 a.ui.space("contents").append(b);
21772 b = a.editable(new c(a, b));
21773 b.setData(a.getData(1));
21774 …v.ie && (b.attachListener(a, "resize", d, b), b.attachListener(CKEDITOR.document.getWindow(), "res…
21902 var b = a.langCode,
21903b = c.availableLangs[b] ? b : c.availableLangs[b.replace(/-.*/, "")] ? b.replace(/-.*/, "") : "en";
21904 … CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path + "dialogs/lang/" + b + ".js"), function() {
21905 CKEDITOR.tools.extend(a.lang.specialchar, c.langEntries[b]);
21921 …\x26gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l …
21940 var b = a.lang.scayt,
21943 label: b.text_title,
21944 title: a.plugins.wsc ? a.lang.wsc.title : b.text_title,
21950 var b = a.ui.instances.Scayt.getState();
21951 … a.scayt && (b = d.state.scayt[a.name] ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
21952 a.fire("scaytButtonState", b)
21955 var b = this;
21958 void 0 !== typeof a.data && b.setState(a.data)
21962 var b = a.scayt;
21963 …a.getMenuItem("scaytToggle").label = a.lang.scayt[b && d.state.scayt[a.name] ? "btn_disable" : "bt…
21966 scaytOptions: b ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
21967 scaytLangs: b ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
21968 scaytDict: b ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
21969 scaytAbout: b ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
21975b && !CKEDITOR.plugins.scayt.isNewUdSupported(b) && (delete c.scaytDict, a.config.scayt_uiTabs[2] …
21979 a.contextMenu && a.addMenuItems && (a.contextMenu.addListener(function(b, d) {
21984 … }), a.contextMenu._.onHide = CKEDITOR.tools.override(a.contextMenu._.onHide, function(b) {
21988 return b.apply(this)
21996 …for (var b = a.config.scayt_contextMenuItemsOrder.split("|"), e = 0; e < b.length; e++) b[e] = "sc…
21997 if ((b = ["grayt_description", "grayt_suggest", "grayt_control"].concat(b)) && b.length)
21998 for (e = 0; e < b.length; e++) a.addMenuGroup(b[e], e - 10);
22001 var b = a.scayt;
22005 !0 === d.state.scayt[a.name] ? b || d.createScayt(a) : b && d.destroy(a)
22033 b = {
22060 a.plugins.wsc && (b.WSC = {
22064 var b = CKEDITOR.plugins.scayt,
22067 …(c = c.replace(/\s/g, "")) ? (d && b.state.scayt[a.name] && d.setMarkupPaused && d.setMarkupPaused…
22070 a.addMenuItems(b)
22075 b = function() {
22082 var b = a.editable();
22083 b.attachListener(b, "focus", function(b) {
22085b = CKEDITOR.plugins.scayt && CKEDITOR.plugins.scayt.state.scayt[a.name] && a.scayt;
22087 if ((d || b) && a._.savedSelection) {
22088 b = a._.savedSelection.getSelectedElement();
22089 b = !b && a._.savedSelection.getRanges();
22090 …for (var h = 0; h < b.length; h++) k = b[h], "string" === typeof k.startContainer.$.nodeValue && (…
22097 setTimeout(b, 0)
22101 c.attachListener(c, "mousedown", function(b) {
22102 b = b.data.getTarget();
22103 var d = a.widgets && a.widgets.getByElement(b);
22104 d && (d.wrapper = b.getAscendant(function(a) {
22111 function(b) {
22116b.data.name in c.options.disablingCommandExec && "wysiwyg" == a.mode ? d && (c.destroy(a), a.fire(…
22125 a.on("beforeSetMode", function(b) {
22126 if ("source" == b.data) {
22127 … if (b = a.scayt) c.destroy(a), a.fire("scaytButtonState", CKEDITOR.TRISTATE_DISABLED);
22131 a.on("afterCommandExec", function(b) {
22132 … "wysiwyg" != a.mode || "undo" != b.data.name && "redo" != b.data.name || setTimeout(function() {
22136 a.on("readOnly", function(b) {
22138b && (d = a.scayt, !0 === b.editor.readOnly ? d && d.fire("removeMarkupInDocument", {}) : d ? c.re…
22140 a.on("beforeDestroy", b);
22142 b();
22145 a.on("reloadMarkupScayt", function(b) {
22146 var d = b.data && b.data.removeOptions,
22147 e = b.data && b.data.timeout,
22148 f = b.data && b.data.language,
22172 a.on("scaytDialogShown", function(b) {
22173 b.data.selectPage(a.scayt.tabToOpen)
22195 b = [];
22198 1 === Number(a) || 0 === Number(a) ? (b.push(!0), d.push(Number(a))) :
22199 b.push(!1)
22201 …null === CKEDITOR.tools.search(b, !1) ? a.config.scayt_uiTabs = d : a.config.scayt_uiTabs = [1, 1,…
22229 for (var b = [], d = 0; d <
22240 return b = b.concat(f)
22247 b = d && d.htmlFilter,
22251 g = function(b) {
22252 …if (a.scayt && (b.hasAttribute(c.options.data_attribute_name) || b.hasAttribute(c.options.problem_…
22254 k = function(b) {
22256 …a.scayt && (b.hasAttribute(c.options.data_attribute_name) || b.hasAttribute(c.options.problem_gram…
22263 …var b = a.hasClass(c.options.misspelled_word_class) && a.attributes[c.options.data_attribute_name],
22265 c && (b || d) && delete a.name;
22270 b && b.addRules({
22273 var b = a.hasClass(c.options.misspelled_word_class) &&
22276 c && (b || d) && delete a.name;
22391 var b = {},
22407 }), b[l] = CKEDITOR.TRISTATE_OFF) : (a.addMenuItem(l, {
22419 }), b.scayt_moresuggest = CKEDITOR.TRISTATE_OFF))
22426 }), b[l] = CKEDITOR.TRISTATE_OFF;
22427 … else b.no_scayt_suggest = CKEDITOR.TRISTATE_DISABLED, a.addCommand("no_scayt_suggest", {
22435 return b
22439 b = this.scaytMenuDefinition(a),
22446 …l ? (b = b.scayt, k = c.getAttribute(d.getScaytNodeAttributeName()), d.fire("getSuggestionsList", {
22450b = b.grayt, e = c.getAttribute(d.getGraytNodeAttributeName()), d.getGraytNodeRuleAttributeName ? …
22457b) l && -1 == CKEDITOR.tools.indexOf(f, h.replace("scayt_", "")) && "all" != a.config.scayt_contex…
22458 exec: b[h].exec
22460 label: a.lang.scayt[b[h].label] ||
22461 b[h].label,
22463 group: b[h].group,
22464 order: b[h].order
22470 exec: function(b) {
22471 b = b.scayt;
22474 b.replaceSelectionNode(e);
22475 "startGrammarCheck" === d && b.removeMarkupInSelectionNode({
22478 b.fire(d)
22594 …for (var b = {}, d = [], c = 0; c < a.suggestionList.length; c++) b["word_" + a.suggestionList[c]]…
22621 var d, b = function() {
22626 a && b()
22628 b()
22636 var b = CKEDITOR.plugins.scayt,
22638 c && b.state.scayt[a.name] && c.setMarkupPaused && c.setMarkupPaused(!0)
22641 var b = CKEDITOR.plugins.scayt,
22643 c && b.state.scayt[a.name] && c.setMarkupPaused && c.setMarkupPaused(!1)
22651 var b = CKEDITOR.plugins.scayt,
22653 c && b.state.scayt[a.name] && c.setMarkupPaused && c.setMarkupPaused(!1);
22657 var b = a.sender && a.sender.getParentEditor();
22658 b && setTimeout(function() {
22659 b.fire("reloadMarkupScayt", {
22670 var b = CKEDITOR.plugins.scayt,
22673 c && (c.fire("removeMarkupInDocument", {}), b.reloadMarkup(c))
22682 var b = null,
22685 … if (b = "ready" == this.status) var f = c.removeMarkupFromString(this.getSnapshot()),
22687 b = b && c !== f
22688 } else b = a.call(this);
22689 return b
22695 var b = this.scayt;
22696 …plugins.scayt.state.scayt[this.name] && this.scayt ? this._.previousValue = b.removeMarkupFromStri…
22704 return function(b) {
22705 var c = b.editor.scayt,
22707 g = b.contents,
22710 …DITOR.plugins.scayt.state.scayt[b.editor.name] && b.editor.scayt && (this.contents = c.removeMarku…
22713 b.contents = g;
22730b, h, d, e = 0, n = a.length; e < n; e++)(b = a[e], c.blockless && b.element in CKEDITOR.dtd.$bloc…
22731 …== CKEDITOR.STYLE_OBJECT ? 1 : d == CKEDITOR.STYLE_BLOCK ? 2 : 3), f[h] = b, k.push(b), m.push(b));
22732 k.sort(function(a, b) {
22733 return a._.weight - b._.weight
22750 var a, b, c, d, e, f;
22752 …for (f = k.length; e < f; e++) a = k[e], b = a._name, d = a._.type, d != c && (this.startGroup(g["…
22753 … c = d), this.add(b, a.type == CKEDITOR.STYLE_OBJECT ? b : a.buildPreview(), b);
22760 var b = c.elementPath();
22762 else c[a.checkActive(b, c) ? "removeStyle" : "applyStyle"](a);
22767 var b = this.getValue();
22774 b && this.setValue(g);
22785 b = [0, 0, 0, 0];
22791 d.checkApplicable(a, c, c.activeFilter) ? b[e]++ : this.hideItem(h);
22794b[CKEDITOR.STYLE_BLOCK] || this.hideGroup(g["panelTitle" + String(CKEDITOR.STYLE_BLOCK)]);
22795b[CKEDITOR.STYLE_INLINE] || this.hideGroup(g["panelTitle" + String(CKEDITOR.STYLE_INLINE)]);
22796b[CKEDITOR.STYLE_OBJECT] || this.hideGroup(g["panelTitle" + String(CKEDITOR.STYLE_OBJECT)])
22801 for (var b in f)
22802 if (f[b].checkApplicable(a, c, c.activeFilter)) return;
22825 b;
22826 … if (b = (new CKEDITOR.dom.elementPath(e.getCommonAncestor(), e.root)).contains({
22832 var a = b.getParent().$.cells[b.$.cellIndex + (c ? -1 : 1)];
22836 var a = b.getParent(),
22845 …for (var f = b.getAscendant("table").$, a = b.getParent().$.cells, f = new CKEDITOR.dom.element(f.…
22876 …or (var d = !1 !== c.config.enableTabKeyTools, e = c.config.tabSpaces || 0, b = ""; e--;) b += " ";
22877 if (b) c.on("key", function(a) {
22878 9 == a.data.keyCode && (c.insertText(b), a.cancel())
22893 f, c, d, e, b, a;
22895 for (b = this.getNextSourceNode(k, CKEDITOR.NODE_ELEMENT); b;) {
22896 if (b.isVisible() && 0 === b.getTabIndex()) {
22897 d = b;
22900 b = b.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT)
22902 …for (b = this.getDocument().getBody().getFirst(); b = b.getNextSourceNode(!1, CKEDITOR.NODE_ELEMEN…
22904 if (!c && b.equals(this)) {
22906 if (!(b = b.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT))) break;
22909 } else c && !this.contains(b) &&
22911 if (b.isVisible() && !(0 > (a = b.getTabIndex()))) {
22913 d = b;
22916 … a > g && (!d || !e || a < e) ? (d = b, e = a) : d || 0 !== a || (d = b, e = a)
22922 …for (var g = void 0 === h ? this.getTabIndex() : h, f, c, d, e = 0, b, a = this.getDocument().getB…
22930 if (a.isVisible() && !(0 > (b = a.getTabIndex())))
22932 if (f && 0 === b) {
22936 b > e && (d = a, e = b)
22938 if (f && b == g) {
22942 b < g && (!d || b > e) && (d = a, e = b)
22953 refresh: function(c, b) {
22954 … this.setState(b.contains("table", 1) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED)
22975 var b = c.styles;
22976b["border-left"] && b["border-left"] === b["border-right"] && b["border-right"] === b["border-top"…
22977 (a = CKEDITOR.tools.style.parse.border(b["border-top"]))
22991 var b = d.getParent(),
22993 1 != b.getChildCount() || b.is("td", "th") || b.equals(e) || (d = b);
23037 function b(a) {
23041 function c(b) {
23042b.type != CKEDITOR.NODE_ELEMENT || !F.test(b.getName()) || b.getCustomData("selected_cell") || (CK…
23052 }, !0)) && b(h) && e.push(h);
23060 …}, !0)) && !l.getCustomData("selected_cell") && b(l) && (CKEDITOR.dom.element.setMarker(a, l, "sel…
23068b = D(d) ? d : q(d), c = b[0], e = c.getAscendant("table"), c = c.getDocument(), a = b[0].getParen…
23069b = CKEDITOR.tools.buildTableMap(e), e = b[g], g = f ? b[g - 1] : b[g + 1], b = b[0].length, c = c…
23081 b = q(d),
23082 c = b[0].getAscendant("table"),
23084 a = b[0].getParent().$.rowIndex,
23085 b = b[b.length - 1],
23086 g = b.getParent().$.rowIndex + b.$.rowSpan - 1,
23087 b = [];
23096 b.push(h)
23102 for (d = b.length; 0 <= d; d--) B(b[d]);
23110 for (var f = d.getParent().$.cells, b = 0, c = 0; c < f.length; c++) {
23112 b = b + e.colSpan;
23115 return b - 1
23119 for (var b = f ? Infinity : 0, c = 0; c < d.length; c++) {
23121 if (f ? e < b : e > b) b = e
23123 return b
23127 for (var b = D(d) ? d : q(d), c = b[0].getAscendant("table"),
23128 …e = w(b, 1), b = w(b), a = f ? e : b, g = CKEDITOR.tools.buildTableMap(c), c = [], e = [], b = [],…
23129 …lSpan"), g.appendBogus(), g[f ? "insertBefore" : "insertAfter"].call(g, a), b.push(g), g = g.$), h…
23130 return b
23135 var b, c, d;
23136 b = a.getRanges();
23137 if (1 !== b.length) return a;
23138 b = b[0];
23139 if (b.collapsed || 0 !== b.endOffset) return a;
23140 c = b.endContainer;
23145 b.setEndAt(d, CKEDITOR.POSITION_BEFORE_END);
23146 return b.select()
23149 var b = d.getRanges(),
23164 l.length == d && (b[0].moveToPosition(c, CKEDITOR.POSITION_AFTER_END),
23165 b[0].select(), c.remove());
23170 var b = d.getStartElement().getAscendant({
23174 if (b) {
23175 var c = b.clone();
23177 f ? c.insertBefore(b) : c.insertAfter(b)
23184 b = q(d),
23185 c = b[0] && b[0].getAscendant("table"),
23188 var a = 0;e = b.length - 1;
23189 … for (var g = {}, k, h; k = b[a++];) CKEDITOR.dom.element.setMarker(g, k, "delete_cell", !0);
23190 for (a = 0; k = b[a++];)
23195 } CKEDITOR.dom.element.clearAllMarkers(g);a = b[0].getParent();
23196 …(a = a.getPrevious()) ? e = a.getLast() : (a = b[e].getParent(), e = (a = a.getNext()) ? a.getChil…
23199 for (d = b.length - 1; 0 <= d; d--) z(b[d]);
23205 var b = d.getDocument(),
23208 (c.focus(), b.focus());
23209 b = new CKEDITOR.dom.range(b);
23210b["moveToElementEdit" + (f ? "End" : "Start")](d) || (b.selectNodeContents(d), b.collapse(f ? !1 :…
23211 b.select(!0)
23214 function A(d, f, b) {
23216 if ("undefined" == typeof b) return d;
23218 if (b.is && d[f] == b.$) return f;
23219 if (f == b) return new CKEDITOR.dom.element(d[f])
23221 return b.is ? -1 : null
23224 function x(d, f, b) {
23251 u = !b && new CKEDITOR.dom.documentFragment(f),
23264b || (v = a, (z = v.getBogus()) && z.remove(), v.trim(), a.getChildren().count() && (t == r || !y …
23269 if (b) return n * p == w;
23275 b = new CKEDITOR.dom.nodeList(e.$.rows);
23276 c = b.count();
23277 for (f = c - 1; 0 <= f; f--) e = b.getItem(f), e.$.cells.length || (e.remove(), c++);
23282 var b = q(d);
23283 if (1 < b.length) return !1;
23285 var b = b[0],
23286 c = b.getParent(),
23290 k = A(a, g, b),
23291 h = b.$.rowSpan,
23295 …, c = g + l, e = new CKEDITOR.dom.element(e.$.rows[c]), a = A(a, c), m, c = b.clone(), g = 0; g < …
23303 …for (h = l = 1, e = c.clone(), e.insertAfter(c), e.append(c = b.clone()), m = A(a, g), k = 0; k < …
23305 b.$.rowSpan = l;
23307 1 == l && b.removeAttribute("rowSpan");
23313 var b = q(d);
23314 if (1 < b.length) return !1;
23316 var b = b[0],
23317 c = b.getParent(),
23320 a = A(e, c.$.rowIndex, b),
23321 g = b.$.colSpan;
23331 e = b.clone();
23332 e.insertAfter(b);
23334 b.$.colSpan = c;
23336 1 == c && b.removeAttribute("colSpan");
23348 refresh: function(a, b) {
23349 this.setState(b.contains({
23357 function b(a, b) {
23358 var c = d.addCommand(a, b);
23363 b("cellProperties", new CKEDITOR.dialogCommand("cellProperties", f({
23394 CKEDITOR.tools.array.forEach(a.children, function(b) {
23395 b.name in {
23399 (b.attributes["cke-row-height"] = a.styles.height)
23418 b("rowDelete", f({
23425 b("rowInsertBefore", f({
23434 b("rowInsertAfter", f({
23442 b("columnDelete", f({
23449 b("columnInsertBefore", f({
23457 b("columnInsertAfter", f({
23465 b("cellDelete", f({
23473 b("cellMerge", f({
23476 exec: function(a, b) {
23477 b.cell = x(a.getSelection());
23478 p(b.cell, !0)
23481 b("cellMergeRight", f({
23484 exec: function(a, b) {
23485 b.cell = x(a.getSelection(), "right");
23486 p(b.cell, !0)
23489 b("cellMergeDown", f({
23492 exec: function(a, b) {
23493 b.cell = x(a.getSelection(), "down");
23494 p(b.cell, !0)
23497 b("cellVerticalSplit",
23505 b("cellHorizontalSplit", f({
23512 b("cellInsertBefore", f({
23519 b("cellInsertAfter", f({
23533 b = q(a);
23543 … tablecell_properties: 0 < b.length ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
23662 d.contextMenu && d.contextMenu.addListener(function(a, b, c) {
23709 function z(a, b) {
23711 d = b.getAscendant("table"),
23714 h = r(b),
23718 c.contains(d) && (b = b.getAscendant({
23721 }), h = r(b));
23722 g > h && (c = g, g = h, h = c, c = a, a = b, b = c);
23728 if (b.$ === e[h][c]) {
23747 function A(a, b) {
23755 b && (m = {
23760 function t(a, b) {
23763 …for (e = 0; e < b.length; e++) d = a.createRange(), d.setStartBefore(b[e]), d.setEndAfter(b[e]), c…
23768 var b = a.editable().find(".cke_table-faked-selection");
23769 1 > b.count() ||
23770 (b = z(b.getItem(0), b.getItem(b.count() - 1)), t(a, b))
23773 function L(a, b, c) {
23775 b = b.is("table") ? null : b;
23777 …(e = m.active && !m.first) && !(e = b) && (e = a.getSelection().getRanges(), e = 1 < d.length || e…
23778 if (e) m.first = b || d[0], m.dirty = b ? !1 : 1 !== d.length;
23779 … else if (m.active && b && m.first.getAscendant("table").equals(b.getAscendant("table"))) {
23780 d = z(m.first, b);
23783 m.last = b;
23789 var b =
23791 c = b && b.getRanges() || [],
23793 if (b && (A(a), b.isInTable() && b.isFake)) {
23795 d = v(b, d);
23797 for (b = 0; b < d.length; b++) d[b].addClass("cke_table-faked-selection");
23809 function b(a, b) {
23810 … return a && b ? a.equals(b) || a.contains(b) || b.contains(a) || a.getCommonAncestor(b).is(l) : !1
23818 …TOR.MOUSE_BUTTON_LEFT && f) && ("mouseup" !== a.name || c(a.data.getTarget()) || b(e, f)) ? !1 : !0
23846 …tMouseButton(a) === CKEDITOR.MOUSE_BUTTON_LEFT && (c(a.data.getTarget()) || b(h, k)) && K(e), m = {
23854 var b = a.data.getTarget().getAscendant({
23858 b && !b.hasClass("cke_table-faked-selection") && (a.cancel(), a.data.preventDefault())
23861 function O(a, b) {
23887 b && (a.extractSelectedHtml(), a.fire("saveSnapshot"))
23892 var b = a.editor || a.sender.editor;
23893 b.getSelection().isInTable() && O(b, "cut" === a.name)
23901 function B(a, b, c) {
23903 …-1 !== CKEDITOR.tools.array.indexOf(b, d.data.name) && (d.data.selectedCells = v(a.getSelection()))
23906 -1 !== CKEDITOR.tools.array.indexOf(b, d.data.name) && c(a, d.data)
23937 b;
23939 b = this.cells.last;
23940 var c = b.getAscendant("table"),
23941 d = r(b),
23945 if ((new CKEDITOR.dom.element(c[d][e])).equals(b)) {
23946 b = e;
23948 } b = void 0
23950 … return CKEDITOR.tools.buildTableMap(this._getTable(), r(this.rows.first), a, r(this.rows.last), b)
23955 q.prototype.insertRow = function(a, b, c) {
23958 … ? [] : this.cells.all, h, k = 0; k < a; k++) h = F(c ? this.cells.all : g, b), h = CKEDITOR.tools…
23961 }), g = b ? h.concat(g) : g.concat(h);
23965 function b(a) {
23971 …= r(c.first), g = r(c.last), c = 0; c < a; c++) d = d.concat(CKEDITOR.tools.array.filter(G(d), b));
23976 for (var b = 0; b < a.length; b++) a[b].setHtml("")
23986 function b(a) {
23993 var b = d.createRange();
23994 b.selectNodeContents(a);
23995 b.select()
24008 var b = l[l.length - 1];
24009 a = z(a, new CKEDITOR.dom.element(b[b.length - 1]))
24012 …ools.buildTableMap(h), f.insertRow(l.length - a.length), f.insertColumn(b(l) - b(a)), a = f.getTab…
24024 var b = a.endContainer.getAscendant("tr", !0);
24025 if (b && a.collapsed) {
24026 if (a.checkBoundaryOfElement(b, CKEDITOR.START)) return 1;
24027 if (a.checkBoundaryOfElement(b, CKEDITOR.END)) return 2
24031 findTableInPastedContent: function(a, b) {
24035 d.setHtml(c.toHtml(b), {
24040 pasteTable: function(a, b, c) {
24047 …if (f = new CKEDITOR.dom.element(c[l][p]), d = b[l] && b[l][p] ? new CKEDITOR.dom.element(b[l][p])…
24060 function b(a) {
24061 var b = a.getEnclosedNode();
24062 b && "function" === typeof b.is && b.is({
24065 }) ? b.setText("") : a.deleteContents();
24073 function c(b, e) {
24122 for (k = 0; k < n.length; k++) b(n[k]);
24141 for (h = 0; h < d.length; h++) b(d[h]);
24162 var b = a.editable(),
24163 c = b.isInline() ? b : a.document,
24167 b.attachListener(c, "mousedown", w, null, d);
24168 b.attachListener(c, "mousemove", w, null, d);
24169 b.attachListener(c, "mouseup", w, null, d);
24170 b.attachListener(b, "dragstart", N);
24171 b.attachListener(a, "selectionCheck", M);
24173 …ITOR.plugins.clipboard.isCustomCopyCutSupported && (b.attachListener(b, "cut", E), b.attachListene…
24193 function b(a) {
24227 a.on("beforeCommandExec", b);
24228 a.on("afterCommandExec", b);
24276 type: function(a, b) {
24279 b = b || d >= this.strokesLimit;
24281 b ? (d = 0, this.editor.fire("saveSnapshot")) : this.editor.fire("change");
24308 save: function(a, b, c) {
24315 b || (b = new f(d));
24316 if (!1 === b.contents) return !1;
24318 if (b.equalsContent(this.currentImage)) {
24319 if (a || b.equalsSelection(this.currentImage)) return !1
24323 this.index = e.push(b) - 1;
24324 this.currentImage = b;
24329 var b = this.editor,
24331 a.bookmarks && (b.focus(), c = b.getSelection());
24342 b.fire("change")
24345 var b = this.snapshots,
24351 if (a = b[d], !c.equalsContent(a)) return a.index =
24354 for (d = this.index + 1; d < b.length; d++)
24355 if (a = b[d], !c.equalsContent(a)) return a.index = d, a;
24383 …for (var b = this.index, c = this.snapshots; 0 < b && this.currentImage.equalsContent(c[b - 1]);) …
24384 c.splice(b, this.index - b + 1, a);
24385 this.index = b;
24391 var b = this.snapshots,
24392 c = b[b.length - 1];
24393 …return c.equalsContent(a) && !c.equalsSelection(a) ? (this.currentImage = b[b.length - 1] = a, !0)…
24395 lock: function(a, b) {
24402 if (b) c = !0;
24420 var b = new f(this.editor, !0);
24421 a.equalsContent(b) || this.update()
24444 var b = e.keyGroups;
24445 return n[a] ? b.FUNCTIONAL : b.PRINTABLE
24448 var b = e.keyGroups;
24449 return a == b.FUNCTIONAL ? b.PRINTABLE : b.FUNCTIONAL
24454 var f = CKEDITOR.plugins.undo.Image = function(a, b) {
24460 b || (this.bookmarks = (c = c && a.getSelection()) && c.createBookmarks2(!0));
24463 h = /\b(?:href|src|name)="[^"]*?"/gi;
24466 var b = this.contents;
24468 …CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) && (b = b.replace(h, ""), a = a…
24469 return b != a ? !1 : !0
24472 var b = this.bookmarks;
24474 if (b || a) {
24475 if (!b || !a || b.length != a.length) return !1;
24476 for (var c = 0; c < b.length; c++) {
24477 var d = b[c],
24494 var b = a.data.getKey();
24495 if (229 !== b)
24497 … this.keyEventsStack.getLast(b) || this.keyEventsStack.push(b), this.lastKeydownImage = new f(a.ed…
24498 this.undoManager.keyGroupChanged(b))
24511 var b = this.undoManager;
24515 …alKeysBug(a) && this.lastKeydownImage && this.lastKeydownImage.equalsContent(new f(b.editor, !0))))
24516 if (0 < c) b.type(a);
24520 var b = this.undoManager;
24521 !a && b.save(!0, null, !1) || b.updateSelection(new f(b.editor));
24522 b.resetType()
24532 b = a.editable(),
24534 b.attachListener(b, "keydown", function(a) {
24538b.attachListener(b, CKEDITOR.env.ie ? "keypress" : "input", c.onInput, c, null, 999);
24539 b.attachListener(b, "keyup", c.onKeyup, c, null, 999);
24540 b.attachListener(b, "paste", c.ignoreInputEventListener, c, null, 999);
24541 b.attachListener(b, "drop", c.ignoreInputEventListener, c, null, 999);
24544b.attachListener(b.isInline() ? b : a.document.getDocumentElement(), "click", function() {
24547 b.attachListener(this.undoManager.editor, "blur", function() {
24565 for (var b = this.stack.length; b--;)
24566 if (this.stack[b].keyCode ==
24567 a) return b;
24586 for (var a = this.stack.length, b = 0; a--;) b += this.stack[a].inputs;
24587 return b
24617 var b = a.editable();
24620 editable: b,
24621 inline: b.isInline(),
24635 b.attachListener(this.winTop, "resize", c);
24636 b.attachListener(this.winTop, "scroll", c);
24637 b.attachListener(this.winTop, "resize", e);
24638 b.attachListener(this.win, "scroll", e);
24639 b.attachListener(this.inline ? b : this.frame, "mouseout", function(a) {
24640 var b = a.data.$.clientX;
24643 …(b <= this.rect.left || b >= this.rect.right || a <= this.rect.top || a >= this.rect.bottom) && th…
24644 …(0 >= b || b >= this.winTopPane.width || 0 >= a || a >= this.winTopPane.height) && this.hideVisibl…
24646 b.attachListener(a, "resize", c);
24647 b.attachListener(a, "mode", g);
24678 b = this.editor,
24681b.readOnly || "wysiwyg" != b.mode || (d.relations = {}, (g = c.$.elementFromPoint(f, h)) && g.node…
24703 var b = this.editor.createRange();
24704 b.moveToPosition(this.relations[d.uid].element,
24706 return b
24710 function a(a, b, c) {
24712 e in c ? c[e].type |= b : c[e] = {
24714 type: b
24717 return function(d, b) {
24719b & CKEDITOR.LINEUTILS_AFTER && l(c = d.getNext()) && c.isVisible() && (a(c, CKEDITOR.LINEUTILS_BE…
24720b & CKEDITOR.LINEUTILS_INSIDE && l(c = d.getFirst()) && c.isVisible() && (a(c, CKEDITOR.LINEUTILS_…
24721 a(d, b, this.relations)
24725 var d, b, c;
24731 for (d in this.lookups)(b = this.lookups[d](a)) && this.store(a, b)
24750 return function(b, c, d) {
24752 f = a.call(this, b.$, c, d, -1, function(a) {
24755 c = a.call(this, b.$, c, d, 1, function(a) {
24759 for (this.traverseSearch(f); !f.getParent().equals(b);) f = f.getParent();
24761 for (this.traverseSearch(c); !c.getParent().equals(b);) c = c.getParent();
24774 … for (var a = this.editable.getElementsByTag("*"), d = 0, b, c, e; b = a.getItem(d++);)
24775 …if (!b.equals(this.editable) && b.type == CKEDITOR.NODE_ELEMENT && (b.hasAttribute("contenteditabl…
24776 for (e in this.lookups)(c = this.lookups[e](b)) && this.store(b, c);
24782 function a(a, b) {
24783 … var c = a.element[b === CKEDITOR.LINEUTILS_BEFORE ? "getPrevious" : "getNext"]();
24785b == CKEDITOR.LINEUTILS_BEFORE ? (a.siblingRect.bottom + a.elementRect.top) / 2 : (a.elementRect.b…
24788 var b;
24790b = d[c], b.elementRect = b.element.getClientRect(), b.type & CKEDITOR.LINEUTILS_BEFORE && this.st…
24791 …TOR.LINEUTILS_INSIDE && this.store(c, CKEDITOR.LINEUTILS_INSIDE, (b.elementRect.top + b.elementRec…
24796 var a, d, b, c;
24802 if (b = Math.abs(e - a[f][h]), d.length) {
24804 if (b < d[c].dist) {
24808 dist: b
24814 dist: b
24819 dist: b
24825 d, b) {
24827 this.locations[a][d] = b
24866 var b, c, e;
24867 if (b = this.getStyle(a.uid, a.type)) {
24880 c.setStyles(b);
24885 var b = this.relations[a],
24888 …e.width = b.siblingRect ? Math.max(b.siblingRect.width, b.elementRect.width) : b.elementRect.width;
24892b.elementRect.left - this.rect.relativeX : (0 < b.elementRect.left ? e.left = this.rect.left + b.e…
24920 b = this.container.getComputedStyle("position");
24923 …"static" != b && (a.relativeY = d.y, a.relativeX = d.x, a.top -= a.relativeY, a.bottom -= a.relati…
24949 var b = CKEDITOR.plugins.widgetselection;
24955 b.addFillers(c) || b.removeFillers(c)
24959 b.removeFillers(a.editor.editable())
24962 a.data.dataValue = b.cleanPasteData(a.data.dataValue)
24964 "selectall" in a.plugins && b.addSelectAllIntegration(a)
24976 var b = a.editor;
24983 … if (this.hasFiller(a)) return b = b.createRange(), b.selectNodeContents(a), b.select(), !0
24989 … var b = a.findOne(this.fillerTagName + "[" + this.fillerAttribute + "\x3dstart]"),
24991 this.startFiller && b && this.startFiller.equals(b) ?
24992 this.removeFiller(this.startFiller, a) : this.startFiller = b;
25001 var b = a.editor.getSelection().getRanges()[0];
25002 …turn !b || b && b.collapsed ? !1 : (b = b.clone(), b.enlarge(CKEDITOR.ENLARGE_ELEMENT), !!(b && a …
25003b.endOffset === a.getChildCount() && b.startContainer.equals(a) && b.endContainer.equals(a)))
25009 var b = new CKEDITOR.dom.element(this.fillerTagName);
25010 b.setHtml(this.fillerContent);
25011 b.setAttribute(this.fillerAttribute, a ? "end" : "start");
25012 b.setAttribute("data-cke-temp", 1);
25013 b.setStyles({
25026 return b
25028 removeFiller: function(a, b) {
25030 var d = b.editor,
25031 c = b.editor.getSelection().getRanges()[0].startPath(),
25037b.insertHtmlIntoRange(g, d.getSelection().getRanges()[0]), f.setStartAt(b.getChild(b.getChildCount…
25038 …f.setEndAt(b.getLast().getPrevious(), CKEDITOR.POSITION_BEFORE_END), b.editor.getSelection().selec…
25042 …var b = this.createFiller(a).getOuterHtml().replace(/style="[^"]*"/gi, 'style\x3d"[^"]*"').replace…
25043 return new RegExp((a ? "" : "^") + b + (a ? "$" : ""))
25046 var b = this;
25049 "selectAll" == d.data.name && c && b.addFillers(c)
25078 function g(a, b, c, d, e) {
25082 id: b,
25113 function q(a, b, c) {
25114 CKEDITOR.dom.element.call(this, b.$);
25117 b = this.filter = c.filter;
25118 …is.getName()].p ? (this.enterMode = b ? b.getAllowedEnterMode(a.enterMode) : a.enterMode, this.shi…
25122 b) {
25123 a.addCommand(b.name, {
25129 if (f && f.name == b.name) f.edit();
25130 else if (b.insert) b.insert();
25131 else if (b.template) {
25132 var f = "function" == typeof b.defaults ? b.defaults() : b.defaults,
25133 f = CKEDITOR.dom.element.createFromHtml(b.template.output(f)),
25134 h, l = a.widgets.wrapElement(f, b.name),
25137 … (h = a.widgets.initOn(f, b, d && d.startupData)) ? (f = h.once("edit", function(b) {
25138 if (b.data.dialog) h.once("dialog",
25139 function(b) {
25140 b = b.data;
25142 d = b.once("ok", e, null, null, 20);
25143 f = b.once("cancel", function(b) {
25144 b.data && !1 === b.data.hide || a.widgets.destroy(h, !0)
25146 b.once("hide", function() {
25155 allowedContent: b.allowedContent,
25156 requiredContent: b.requiredContent,
25157 contentForms: b.contentForms,
25158 contentTransformations: b.contentTransformations
25162 function S(a, b) {
25164 var d = b.upcast.split(","),
25168 d[f], e === a.name) return b.upcasts[e].call(this, a, c);
25172 function d(b, c, d) {
25177 a._.upcasts.splice(e, 0, [CKEDITOR.tools.bind(b, c), c.name, d])
25179 var e = b.upcast,
25180 f = b.upcastPriority || 10;
25181 e && ("string" == typeof e ? d(c, b, f) : d(e, b, f))
25184 function t(a, b) {
25186 if (b.isInited()) {
25187 var c = b.editor.checkDirty();
25189 widget: b
25191 b.setFocused(!1);
25192 !c && b.editor.resetDirty()
25200 var b = this.editor.editable(),
25203 if (b) {
25204 … for (d in c) c[d].isReady() && !b.contains(c[d].wrapper) && this.destroy(c[d], !0);
25207 var l = b.find(".cke_widget_wrapper"),
25223 …h && b.contains(f) && (f.addClass("cke_widget_new"), c.push(this.initOn(f.getFirst(g.isDomWidgetEl…
25234 var b = v(a),
25237b && b.value && b.value.match(/^\s/g) && (b.parent.attributes["data-cke-white-space-first"] = 1, b
25256 function x(a, b, c) {
25260 a = d[b];
25261 …ent ? new CKEDITOR.filter(c.allowedContent) : this.editor.filter.clone(), d[b] = a, c.disallowedCo…
25266 var b = [],
25270 toBeWrapped: b,
25274 … a.attributes) return (a = a.getFirst(g.isParserWidgetElement)) && b.push([a]), !1;
25275 if ("data-widget" in a.attributes) return b.push([a]), !1;
25282 …RIComponent(JSON.stringify(l)), a.attributes["data-cke-widget-upcasted"] = 1, b.push([a, f[1]]), !1
25288 function y(a, b) {
25294 …dget_wrapper cke_widget_new cke_widget_" + (a ? "inline" : "block") + (b ? " cke_widget_" + b : "")
25298 function z(a, b, c) {
25302 var d = a.split(b),
25304 b = d.getIndex();
25305 a.children.length || (--b, a.remove());
25307 return z(e, b, c)
25310 a.add(c, b)
25313 function A(a, b) {
25314 return "boolean" == typeof a.inline ? a.inline : !!CKEDITOR.dtd.$inline[b]
25321 function n(a, b, c, d) {
25324b.editables[d], a.widgetHoldingFocusedEditable = b, b.focusedEditable = d, c.addClass("cke_widget_…
25329 a.contextMenu && a.contextMenu.addListener(function(b) {
25330 if (b = a.widgets.getByElement(b, !0)) return b.fire("contextMenu", {})
25334 function W(a, b) {
25335 return CKEDITOR.tools.trim(b)
25339 var b = a.editor,
25341 b.on("dragstart", function(c) {
25343 …& (e = a.getByElement(e), c.data.dataTransfer.setData("cke/widget-id", e.id), b.focus(), e.focus())
25345 b.on("drop", function(c) {
25348 h = e.getTransferType(b),
25349 e = b.createRange();
25350 …ChildCount, c.data.dataTransfer.setData("text/html", b.editable().getHtmlFromRange(e).getHtml()),
25352 b.on("contentDom", function() {
25353 var d = b.editable();
25355 finder: new c.finder(b, {
25357 "default": function(b) {
25358 …if (!b.is(CKEDITOR.dtd.$listItem) && b.is(CKEDITOR.dtd.$block) && !g.isDomNestedEditable(b) && !a.…
25359 var c = g.getNestedEditable(d, b);
25361 b = a._.draggedWidget;
25362 if (a.getByElement(c) == b) return;
25364 b = b.requiredContent;
25365 if (c && b && !c.check(b)) return
25372 locator: new c.locator(b),
25373 liner: new c.liner(b, {
25390 var b = a.editor;
25391 b.on("contentDom", function() {
25392 var c = b.editable(),
25393 d = c.isInline() ? c : b.document,
25399 … d.hasAttribute("data-cke-widget-drag-handler") ? (f = 1, a.focused != e && b.getSelection().remov…
25411 b.on("doubleclick", function(b) {
25412 var d = a.getByElement(b.data.element);
25413 … if (d && !g.getNestedEditable(d.wrapper, b.data.element)) return d.fire("doubleclick", {
25414 element: b.data.element
25420 a.editor.on("key", function(b) {
25425 keyCode: b.data.keyCode
25426b.data.keyCode, b = d.focusedEditable, c == CKEDITOR.CTRL + 65 ? (c = b.getBogus(), d = d.editor.c…
25433 function b(b) {
25434 a.focused && B(a.focused, "cut" == b.name)
25439 a.attachListener(a, "copy", b);
25440 a.attachListener(a, "cut", b)
25445 var b = a.editor;
25446 b.on("selectionCheck", function() {
25450 b.on("selectionChange", function(c) {
25451 …var d = (c = g.getNestedEditable(b.editable(), c.data.selection.getStartElement())) && a.getByElem…
25456 b.on("dataReady", function() {
25459 b.on("blur", function() {
25460 var b;
25461 (b = a.focused) && t(a, b);
25462 (b = a.widgetHoldingFocusedEditable) && n(a, b, null)
25467 var b = a.editor,
25469 b.on("toDataFormat", function(b) {
25472 b.data.downcastingSessionId = e;
25474 b.data.dataValue.forEach(function(b) {
25475 var c = b.attributes,
25478 d = v(b);
25479 var e = w(b);
25485 … if (c = a.instances[c["data-cke-widget-id"]]) d = b.getFirst(g.isParserWidgetElement), f.push({
25486 wrapper: b,
25491 …-cke-widget-editable" in c) return f[f.length - 1].editables[c["data-cke-widget-editable"]] = b, !1
25495 b.on("toDataFormat", function(a) {
25498 for (var b, f, h, l, g, m; b = a.shift();) {
25499 f = b.widget;
25500 h = b.element;
25502 …for (m in b.editables) g = b.editables[m], delete g.attributes.contenteditable, g.setHtml(f.editab…
25504 b.wrapper.replaceWith(l)
25508 b.on("contentDomUnload", function() {
25514 var b = a.editor,
25516 b.on("toHtml", function(b) {
25519 … for (b.data.dataValue.forEach(d.iterator, CKEDITOR.NODE_ELEMENT, !0); h = d.toBeWrapped.pop();) {
25525b.data.protectedWhitespaces ? 3 == b.data.dataValue.children.length && g.isParserWidgetWrapper(b.d…
25527 b.on("dataReady", function() {
25529 for (var c = b.editable().find(".cke_widget_wrapper"),
25535 b.on("loadSnapshot", function(b) {
25536 /data-cke-widget/.test(b.data) && (d = 1);
25539 b.on("paste", function(a) {
25542 …a.range && (a = g.getNestedEditable(b.editable(), a.range.startContainer)) && (a = CKEDITOR.filter…
25543 b.setActiveFilter(a)
25545 b.on("afterInsertHtml", function(d) {
25548 }) : (b.fire("lockSnapshot"), a.checkWidgets({
25551 }), b.fire("unlockSnapshot"))
25556 var b = a.selected,
25558 d = b.slice(0),
25562 0 > CKEDITOR.tools.indexOf(b, a) && c.push(a);
25576 …(h = a.focused) && t(a, h); h = d.pop();) b.splice(CKEDITOR.tools.indexOf(b, h), 1), h.isInited() …
25580 for (; h = c.pop();) b.push(h), h.setSelected(!0);
25586 function D(a, b, c) {
25588 b = E(b);
25591 if (b) {
25592 … for (e = CKEDITOR.tools.clone(e); f = b.pop();) c ? e[f] || (d = e[f] = 1) : e[f] && (delete e[f],
25602 function B(a, b) {
25640 b || a.focus();
25645 b && !c.readOnly && (a.repository.del(a), c.fire("saveSnapshot"))
25656 b = this.editor,
25657 c = b.editable();
25658 … (c.isInline() ? c : b.document.getWindow().getFrame()).equals(a) && b.focusManager.focus(c)
25668 var b = null;
25672 if (b != a) {
25673 for (d in b) a && a[d] || this.removeClass(d);
25675 b = a
25683 …var b = this.getLabel ? this.getLabel() : this.editor.lang.widget.label.replace(/%1/, this.pathNam…
25686 b)
25693 var b = a.editor,
25696 … c ? d = c.findOne("img") : (c = new CKEDITOR.dom.element("span", b.document), c.setAttributes({
25698 …style: "background:rgba(220,220,220,0.5);background-image:url(" + b.plugins.widget.path + "images/…
25699 }), d = new CKEDITOR.dom.element("img", b.document), d.setAttributes({
25704 title: b.lang.widget.move,
25723 function b() {
25724 var b;
25725 for (q.reset(); b = g.pop();) b.removeListener();
25727 b = a.sender;
25739 target: b
25766 g.push(f.document.once("mouseup", b, this));
25768 b, this))
25773 var b, c, d = a.editables;
25776 for (b in d) c = d[b], a.initEditable(b, "string" == typeof c ? {
25783 var b = a.wrapper.findOne(".cke_widget_mask");
25784 b || (b = new CKEDITOR.dom.element("img", a.editor.document), b.setAttributes({
25787 }), a.wrapper.append(b));
25788 a.mask = b
25794 var b = {},
25796 for (d in a.parts) c = a.wrapper.findOne(a.parts[d]), b[d] = c;
25798 b
25802 function Q(a, b) {
25810 if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) a.wrapper.on("dragstart", function(b) {
25811 var d = b.data.getTarget();
25812 … g.getNestedEditable(a, d) || a.inline && g.isDomDragHandler(d) || b.data.preventDefault()
25816 a.on("key", function(b) {
25817 b = b.data.keyCode;
25818 if (13 == b) a.edit();
25820 if (b == CKEDITOR.CTRL + 67 || b == CKEDITOR.CTRL + 88) {
25821 B(a, b == CKEDITOR.CTRL + 88);
25824 if (b in ga || CKEDITOR.CTRL & b || CKEDITOR.ALT &
25825 b) return
25829 a.on("doubleclick", function(b) {
25830 a.edit() && b.cancel()
25832 if (b.data) a.on("data", b.data);
25833 if (b.edit) a.on("edit", b.edit)
25847 function b(a, b, c) {
25857 var b;
25859 …or (var f = 0, h = this.group.length; f < h; f++) b = this.group[f], c[a][b] || (c[a][b] = []), c[…
25863 var b;
25864 …checkApplicable(a.elementPath(), a) && (b = a.widgets.focused, this.group && this.removeStylesFrom…
25871 var b, f, h = !1;
25876 b = c[this.widget][this.group[g]];
25877 …for (var m = 0; m < b.length; m++) b[m] !== this && b[m].checkActive(f, a) && (a.widgets.focused.r…
25881 checkActive: function(a, b) {
25882 return this.checkElementMatch(a.lastElement, 0, b)
25884 checkApplicable: function(a, b) {
25885 return b instanceof CKEDITOR.editor ?
25888 checkElementMatch: b,
25889 checkElementRemovable: b,
25899 var b, c = {};
25902 b = this.getClassesArray();
25903 if (!b) return null;
25905 classes: b,
25932 var b = a.widgets.registered,
25934 …for (d in b) c = b[d], (e = c.button) && a.ui.addButton && a.ui.addButton(CKEDITOR.tools.capitaliz…
25945 add: function(a, b) {
25946 b = CKEDITOR.tools.prototypedCopy(b);
25947 b.name = a;
25948 b._ = b._ || {};
25950 b);
25951 b.template && (b.template = new CKEDITOR.template(b.template));
25952 R(this.editor, b);
25953 S(this, b);
25954 return this.registered[a] = b
25961 b = a.getSelectedElement(),
25964 if (b && (d = this.getByElement(b, !0))) return c.focus(d).select(d).commit();
25968 … for (a.evaluator = g.isDomWidgetWrapper; b = a.next();) c.select(this.getByElement(b));
25976 var b = a.editor,
25977 c = b.createRange(),
25980 d && b.getSelection().selectRanges([c])
25985 destroy: function(a, b) {
25986 this.widgetHoldingFocusedEditable === a && n(this, a, null, b);
25987 a.destroy(b);
25992 b) {
25994 if (b && !a) {
25995 d = b.find(".cke_widget_wrapper");
26005 return a.is(b) && a.data("cke-widget-id")
26007 var b = {
26011 return function(b, d) {
26012 if (!b) return null;
26013 var e = a(b);
26016 do b = b.getParent(); while (b && !b.equals(f) && !(e = a(b)))
26021 initOn: function(a, b, c) {
26022b ? "string" == typeof b && (b = this.registered[b]) : b = this.registered[a.data("widget")];
26023 if (!b) return null;
26024 var d = this.wrapElement(a, b.name);
26025 …return d ? d.hasClass("cke_widget_new") ? (a = new g(this, this._.nextId++, a, b, c), a.isInited()…
26029 …for (var b = [], c, d = a.count(); d--;)(c = this.initOn(a.getItem(d).getFirst(g.isDomWidgetElemen…
26030 return b
26033 var b = Array.prototype.slice.call(arguments);
26034 b.shift();
26037 d.name == a && d.on.apply(d, b)
26041 c.name == a && c.on.apply(c, b)
26047 for (var b, c = {}, d = 0; b = a.pop();) - 1 == b.indexOf("cke_") && (c[b] = d = 1);
26051 wrapElement: function(a, b) {
26055 b = b || a.data("widget");
26056 d = this.registered[b];
26060 a.data("widget", b);
26063 c.setAttributes(y(e, b));
26068 b = b || a.attributes["data-widget"];
26069 d = this.registered[b];
26073 b && (a.attributes["data-widget"] = b);
26075 c = new CKEDITOR.htmlParser.element(e ? "span" : "div", y(e, b));
26099 var b;
26101 for (; b = a.pop();)
26102 if (!this.hasClass(b)) return !1;
26108 for (var b in this.editables) this.destroyEditable(b,
26113 destroyEditable: function(a, b) {
26118 b || (this.repository.destroyAll(!1, c), c.removeClass("cke_widget_editable"),
26126 b = this;
26130 !1 !== b.fire("dialog", a) && (d = a.on("show", function() {
26131 a.setupContent(b)
26133 var d, e = b.on("data", function(a) {
26137 b.editor.fire("saveSnapshot");
26138 a.commitContent(b);
26140 d && (b.fire("data", b.data), b.editor.fire("saveSnapshot"))
26154 initEditable: function(a, b) {
26155 var c = this._findOneNotNested(b.selector);
26157 filter: x.call(this.repository, this.name, a, b)
26163 …table"), c.removeClass("cke_widget_editable_focused"), b.pathName && c.data("cke-display-name", b.…
26167 for (var b, c, d = 0; d < a.count(); d++)
26168 if (b =
26169 … a.getItem(d), c = b.getAscendant(g.isDomWidgetWrapper), this.wrapper.equals(c)) return b;
26181 var b = this.editor.checkDirty();
26183 !b && this.editor.resetDirty()
26195 setData: function(a, b) {
26198 if ("string" == typeof a) c[a] !== b && (c[a] = b, d = 1);
26219 b = this.element.$,
26221 b = {
26222 x: b.offsetLeft,
26223 y: b.offsetTop - 15
26225 …c && b.x == c.x && b.y == c.y || (c = a.checkDirty(), a.fire("lockSnapshot"), this.dragHandlerCont…
26226 top: b.y + "px",
26227 left: b.x + "px",
26229 }), a.fire("unlockSnapshot"), !c && a.resetDirty(), this._.dragHandlerOffset = b)
26233 g.getNestedEditable = function(a, b) {
26234 …return !b || b.equals(a) ? null : g.isDomNestedEditable(b) ? b : g.getNestedEditable(a, b.getParen…
26297 function e(a, b, c) {
26300 this._message = new CKEDITOR.template(b);
26317 var b = !this.notification,
26319 b && (this.notification = this._createNotification());
26327 b && this.notification.show();
26354 b = {
26359 … return (1 == a && this._singularMessage ? this._singularMessage : this._message).output(b)
26373b = CKEDITOR.tools.indexOf(this._tasks, a); - 1 !== b && (a._doneWeight && (this._doneWeights -= a…
26393 var b = a - this._doneWeight;
26395 this.fire("updated", b);
26424 b = a.uploadRepository,
26438 e = b.create(e, void 0, l.loaderType);
26449 k = b.loaders[c],
26452 k.on("update", function(b) {
26455 b = "on" + f(k.status);
26456 …if ("function" !== typeof d[b] || !1 !== d[b](k)) e = "cke_upload_" + k.status, d.wrapper && e != …
26459 … a.editable().find('[data-cke-upload-id\x3d"' + c + '"]').count() || k.abort(), b.removeListener()
26466 var b = this == a.widgets.focused,
26470 b || (h = a.getSelection().createBookmarks());
26473 b && (e = g.createBookmark());
26479b ? (g.moveToBookmark(e), g.select()) : a.getSelection().selectBookmarks(h)
26500 var b = h.getTaskCount();
26501 0 === b ? h.notification.hide() : h.notification.update({
26502 … message: 1 == b ? a.lang.uploadwidget.doneOne : a.lang.uploadwidget.doneMany.replace("%1", b),
26508 var h, b = null;
26510 !b && c.uploadTotal && (f(), b = h.createTask({
26513 b && "uploading" == c.status && b.update(c.uploaded)
26516 b && b.done()
26519 b && b.cancel();
26524 b && b.cancel();
26557 var b = new CKEDITOR.dom.element("img");
26558b.setAttribute("src", "data:image/gif;base64,R0lGODlhDgAOAIAAAAAAAP///yH5BAAAAAAALAAAAAAOAA4AAAIMh…
26559 return b
26564 onUploading: function(b) {
26565 this.parts.img.setAttribute("src", b.data)
26567 onUploaded: function(b) {
26569 … this.replaceWith('\x3cimg src\x3d"' + b.url + '" width\x3d"' + (b.responseData.width ||
26570 … a.naturalWidth) + '" height\x3d"' + (b.responseData.height || a.naturalHeight) + '"\x3e')
26572 }), c.on("paste", function(b) {
26573 if (b.data.dataValue.match(/<img[\s\S]+data:/i)) {
26574 b = b.data;
26579 f.appendHtml(b.dataValue);
26589 b.dataValue = f.getHtml()
26618 var b = CKEDITOR.env;
26622 …OR.env.air && document.domain == window.location.hostname && !(b.ie && (8 > b.version || b.quirks))
26627 …var b = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.container.getText() : a.document.getBody…
26628 … (b = b.replace(/\s/g, "")) ? a.execCommand("checkspell"): alert("Nothing to check!")