Created
April 6, 2010 12:37
-
-
Save tvdeyen/357543 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.tinyMCE_GZ = { | |
loaded: true | |
}; (function(c) { | |
var a = /^\s*|\s*$/g, | |
d; | |
var b = { | |
majorVersion: "3", | |
minorVersion: "3.2", | |
releaseDate: "2010-03-25", | |
_init: function() { | |
var r = this, | |
o = document, | |
m = navigator, | |
f = m.userAgent, | |
l, | |
e, | |
k, | |
j, | |
h, | |
q; | |
r.isOpera = c.opera && opera.buildNumber; | |
r.isWebKit = /WebKit/.test(f); | |
r.isIE = !r.isWebKit && !r.isOpera && (/MSIE/gi).test(f) && (/Explorer/gi).test(m.appName); | |
r.isIE6 = r.isIE && /MSIE [56]/.test(f); | |
r.isGecko = !r.isWebKit && /Gecko/.test(f); | |
r.isMac = f.indexOf("Mac") != -1; | |
r.isAir = /adobeair/i.test(f); | |
if (c.tinyMCEPreInit) { | |
r.suffix = tinyMCEPreInit.suffix; | |
r.baseURL = tinyMCEPreInit.base; | |
r.query = tinyMCEPreInit.query; | |
return | |
} | |
r.suffix = ""; | |
e = o.getElementsByTagName("base"); | |
for (l = 0; l < e.length; l++) { | |
if (q = e[l].href) { | |
if (/^https?:\/\/[^\/]+$/.test(q)) { | |
q += "/" | |
} | |
j = q ? q.match(/.*\//)[0] : "" | |
} | |
} | |
function g(i) { | |
if (i.src && /tiny_mce(|_gzip|_jquery|_prototype)(_dev|_src)?.js/.test(i.src)) { | |
if (/_(src|dev)\.js/g.test(i.src)) { | |
r.suffix = "_src" | |
} | |
if ((h = i.src.indexOf("?")) != -1) { | |
r.query = i.src.substring(h + 1) | |
} | |
r.baseURL = i.src.substring(0, i.src.lastIndexOf("/")); | |
if (j && r.baseURL.indexOf("://") == -1 && r.baseURL.indexOf("/") !== 0) { | |
r.baseURL = j + r.baseURL | |
} | |
return r.baseURL | |
} | |
return null | |
} | |
e = o.getElementsByTagName("script"); | |
for (l = 0; l < e.length; l++) { | |
if (g(e[l])) { | |
return | |
} | |
} | |
k = o.getElementsByTagName("head")[0]; | |
if (k) { | |
e = k.getElementsByTagName("script"); | |
for (l = 0; l < e.length; l++) { | |
if (g(e[l])) { | |
return | |
} | |
} | |
} | |
return | |
}, | |
is: function(f, e) { | |
if (!e) { | |
return f !== d | |
} | |
if (e == "array" && (f.hasOwnProperty && f instanceof Array)) { | |
return true | |
} | |
return typeof(f) == e | |
}, | |
each: function(h, e, g) { | |
var i, | |
f; | |
if (!h) { | |
return 0 | |
} | |
g = g || h; | |
if (h.length !== d) { | |
for (i = 0, f = h.length; i < f; i++) { | |
if (e.call(g, h[i], i, h) === false) { | |
return 0 | |
} | |
} | |
} else { | |
for (i in h) { | |
if (h.hasOwnProperty(i)) { | |
if (e.call(g, h[i], i, h) === false) { | |
return 0 | |
} | |
} | |
} | |
} | |
return 1 | |
}, | |
map: function(e, g) { | |
var h = []; | |
b.each(e, | |
function(f) { | |
h.push(g(f)) | |
}); | |
return h | |
}, | |
grep: function(e, g) { | |
var h = []; | |
b.each(e, | |
function(f) { | |
if (!g || g(f)) { | |
h.push(f) | |
} | |
}); | |
return h | |
}, | |
inArray: function(f, g) { | |
var h, | |
e; | |
if (f) { | |
for (h = 0, e = f.length; h < e; h++) { | |
if (f[h] === g) { | |
return h | |
} | |
} | |
} | |
return - 1 | |
}, | |
extend: function(k, j) { | |
var h, | |
g, | |
f = arguments; | |
for (h = 1, g = f.length; h < g; h++) { | |
j = f[h]; | |
b.each(j, | |
function(e, i) { | |
if (e !== d) { | |
k[i] = e | |
} | |
}) | |
} | |
return k | |
}, | |
trim: function(e) { | |
return (e ? "" + e: "").replace(a, "") | |
}, | |
create: function(m, e) { | |
var l = this, | |
f, | |
h, | |
i, | |
j, | |
g, | |
k = 0; | |
m = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(m); | |
i = m[3].match(/(^|\.)(\w+)$/i)[2]; | |
h = l.createNS(m[3].replace(/\.\w+$/, "")); | |
if (h[i]) { | |
return | |
} | |
if (m[2] == "static") { | |
h[i] = e; | |
if (this.onCreate) { | |
this.onCreate(m[2], m[3], h[i]) | |
} | |
return | |
} | |
if (!e[i]) { | |
e[i] = function() {}; | |
k = 1 | |
} | |
h[i] = e[i]; | |
l.extend(h[i].prototype, e); | |
if (m[5]) { | |
f = l.resolve(m[5]).prototype; | |
j = m[5].match(/\.(\w+)$/i)[1]; | |
g = h[i]; | |
if (k) { | |
h[i] = function() { | |
return f[j].apply(this, arguments) | |
} | |
} else { | |
h[i] = function() { | |
this.parent = f[j]; | |
return g.apply(this, arguments) | |
} | |
} | |
h[i].prototype[i] = h[i]; | |
l.each(f, | |
function(o, p) { | |
h[i].prototype[p] = f[p] | |
}); | |
l.each(e, | |
function(o, p) { | |
if (f[p]) { | |
h[i].prototype[p] = function() { | |
this.parent = f[p]; | |
return o.apply(this, arguments) | |
} | |
} else { | |
if (p != i) { | |
h[i].prototype[p] = o | |
} | |
} | |
}) | |
} | |
l.each(e["static"], | |
function(o, p) { | |
h[i][p] = o | |
}); | |
if (this.onCreate) { | |
this.onCreate(m[2], m[3], h[i].prototype) | |
} | |
}, | |
walk: function(h, g, i, e) { | |
e = e || this; | |
if (h) { | |
if (i) { | |
h = h[i] | |
} | |
b.each(h, | |
function(j, f) { | |
if (g.call(e, j, f, i) === false) { | |
return false | |
} | |
b.walk(j, g, i, e) | |
}) | |
} | |
}, | |
createNS: function(h, g) { | |
var f, | |
e; | |
g = g || c; | |
h = h.split("."); | |
for (f = 0; f < h.length; f++) { | |
e = h[f]; | |
if (!g[e]) { | |
g[e] = {} | |
} | |
g = g[e] | |
} | |
return g | |
}, | |
resolve: function(h, g) { | |
var f, | |
e; | |
g = g || c; | |
h = h.split("."); | |
for (f = 0, e = h.length; f < e; f++) { | |
g = g[h[f]]; | |
if (!g) { | |
break | |
} | |
} | |
return g | |
}, | |
addUnload: function(i, h) { | |
var g = this; | |
i = { | |
func: i, | |
scope: h || this | |
}; | |
if (!g.unloads) { | |
function e() { | |
var f = g.unloads, | |
k, | |
l; | |
if (f) { | |
for (l in f) { | |
k = f[l]; | |
if (k && k.func) { | |
k.func.call(k.scope, 1) | |
} | |
} | |
if (c.detachEvent) { | |
c.detachEvent("onbeforeunload", j); | |
c.detachEvent("onunload", e) | |
} else { | |
if (c.removeEventListener) { | |
c.removeEventListener("unload", e, false) | |
} | |
} | |
g.unloads = k = f = w = e = 0; | |
if (c.CollectGarbage) { | |
CollectGarbage() | |
} | |
} | |
} | |
function j() { | |
var k = document; | |
if (k.readyState == "interactive") { | |
function f() { | |
k.detachEvent("onstop", f); | |
if (e) { | |
e() | |
} | |
k = 0 | |
} | |
if (k) { | |
k.attachEvent("onstop", f) | |
} | |
c.setTimeout(function() { | |
if (k) { | |
k.detachEvent("onstop", f) | |
} | |
}, | |
0) | |
} | |
} | |
if (c.attachEvent) { | |
c.attachEvent("onunload", e); | |
c.attachEvent("onbeforeunload", j) | |
} else { | |
if (c.addEventListener) { | |
c.addEventListener("unload", e, false) | |
} | |
} | |
g.unloads = [i] | |
} else { | |
g.unloads.push(i) | |
} | |
return i | |
}, | |
removeUnload: function(h) { | |
var e = this.unloads, | |
g = null; | |
b.each(e, | |
function(j, f) { | |
if (j && j.func == h) { | |
e.splice(f, 1); | |
g = h; | |
return false | |
} | |
}); | |
return g | |
}, | |
explode: function(e, f) { | |
return e ? b.map(e.split(f || ","), b.trim) : e | |
}, | |
_addVer: function(f) { | |
var e; | |
if (!this.query) { | |
return f | |
} | |
e = (f.indexOf("?") == -1 ? "?": "&") + this.query; | |
if (f.indexOf("#") == -1) { | |
return f + e | |
} | |
return f.replace("#", e + "#") | |
} | |
}; | |
b._init(); | |
c.tinymce = c.tinyMCE = b | |
})(window); | |
tinymce.create("tinymce.util.Dispatcher", { | |
scope: null, | |
listeners: null, | |
Dispatcher: function(a) { | |
this.scope = a || this; | |
this.listeners = [] | |
}, | |
add: function(a, b) { | |
this.listeners.push({ | |
cb: a, | |
scope: b || this.scope | |
}); | |
return a | |
}, | |
addToTop: function(a, b) { | |
this.listeners.unshift({ | |
cb: a, | |
scope: b || this.scope | |
}); | |
return a | |
}, | |
remove: function(a) { | |
var b = this.listeners, | |
c = null; | |
tinymce.each(b, | |
function(e, d) { | |
if (a == e.cb) { | |
c = a; | |
b.splice(d, 1); | |
return false | |
} | |
}); | |
return c | |
}, | |
dispatch: function() { | |
var f, | |
d = arguments, | |
e, | |
b = this.listeners, | |
g; | |
for (e = 0; e < b.length; e++) { | |
g = b[e]; | |
f = g.cb.apply(g.scope, d); | |
if (f === false) { | |
break | |
} | |
} | |
return f | |
} | |
}); (function() { | |
var a = tinymce.each; | |
tinymce.create("tinymce.util.URI", { | |
URI: function(e, g) { | |
var f = this, | |
h, | |
d, | |
c; | |
e = tinymce.trim(e); | |
g = f.settings = g || {}; | |
if (/^(mailto|tel|news|javascript|about|data):/i.test(e) || /^\s*#/.test(e)) { | |
f.source = e; | |
return | |
} | |
if (e.indexOf("/") === 0 && e.indexOf("//") !== 0) { | |
e = (g.base_uri ? g.base_uri.protocol || "http": "http") + "://mce_host" + e | |
} | |
if (!/^\w*:?\/\//.test(e)) { | |
e = (g.base_uri.protocol || "http") + "://mce_host" + f.toAbsPath(g.base_uri.path, e) | |
} | |
e = e.replace(/@@/g, "(mce_at)"); | |
e = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e); | |
a(["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"], | |
function(b, j) { | |
var k = e[j]; | |
if (k) { | |
k = k.replace(/\(mce_at\)/g, "@@") | |
} | |
f[b] = k | |
}); | |
if (c = g.base_uri) { | |
if (!f.protocol) { | |
f.protocol = c.protocol | |
} | |
if (!f.userInfo) { | |
f.userInfo = c.userInfo | |
} | |
if (!f.port && f.host == "mce_host") { | |
f.port = c.port | |
} | |
if (!f.host || f.host == "mce_host") { | |
f.host = c.host | |
} | |
f.source = "" | |
} | |
}, | |
setPath: function(c) { | |
var b = this; | |
c = /^(.*?)\/?(\w+)?$/.exec(c); | |
b.path = c[0]; | |
b.directory = c[1]; | |
b.file = c[2]; | |
b.source = ""; | |
b.getURI() | |
}, | |
toRelative: function(b) { | |
var c = this, | |
d; | |
if (b === "./") { | |
return b | |
} | |
b = new tinymce.util.URI(b, { | |
base_uri: c | |
}); | |
if ((b.host != "mce_host" && c.host != b.host && b.host) || c.port != b.port || c.protocol != b.protocol) { | |
return b.getURI() | |
} | |
d = c.toRelPath(c.path, b.path); | |
if (b.query) { | |
d += "?" + b.query | |
} | |
if (b.anchor) { | |
d += "#" + b.anchor | |
} | |
return d | |
}, | |
toAbsolute: function(b, c) { | |
var b = new tinymce.util.URI(b, { | |
base_uri: this | |
}); | |
return b.getURI(this.host == b.host && this.protocol == b.protocol ? c: 0) | |
}, | |
toRelPath: function(g, h) { | |
var c, | |
f = 0, | |
d = "", | |
e, | |
b; | |
g = g.substring(0, g.lastIndexOf("/")); | |
g = g.split("/"); | |
c = h.split("/"); | |
if (g.length >= c.length) { | |
for (e = 0, b = g.length; e < b; e++) { | |
if (e >= c.length || g[e] != c[e]) { | |
f = e + 1; | |
break | |
} | |
} | |
} | |
if (g.length < c.length) { | |
for (e = 0, b = c.length; e < b; e++) { | |
if (e >= g.length || g[e] != c[e]) { | |
f = e + 1; | |
break | |
} | |
} | |
} | |
if (f == 1) { | |
return h | |
} | |
for (e = 0, b = g.length - (f - 1); e < b; e++) { | |
d += "../" | |
} | |
for (e = f - 1, b = c.length; e < b; e++) { | |
if (e != f - 1) { | |
d += "/" + c[e] | |
} else { | |
d += c[e] | |
} | |
} | |
return d | |
}, | |
toAbsPath: function(e, f) { | |
var c, | |
b = 0, | |
h = [], | |
d, | |
g; | |
d = /\/$/.test(f) ? "/": ""; | |
e = e.split("/"); | |
f = f.split("/"); | |
a(e, | |
function(i) { | |
if (i) { | |
h.push(i) | |
} | |
}); | |
e = h; | |
for (c = f.length - 1, h = []; c >= 0; c--) { | |
if (f[c].length == 0 || f[c] == ".") { | |
continue | |
} | |
if (f[c] == "..") { | |
b++; | |
continue | |
} | |
if (b > 0) { | |
b--; | |
continue | |
} | |
h.push(f[c]) | |
} | |
c = e.length - b; | |
if (c <= 0) { | |
g = h.reverse().join("/") | |
} else { | |
g = e.slice(0, c).join("/") + "/" + h.reverse().join("/") | |
} | |
if (g.indexOf("/") !== 0) { | |
g = "/" + g | |
} | |
if (d && g.lastIndexOf("/") !== g.length - 1) { | |
g += d | |
} | |
return g | |
}, | |
getURI: function(d) { | |
var c, | |
b = this; | |
if (!b.source || d) { | |
c = ""; | |
if (!d) { | |
if (b.protocol) { | |
c += b.protocol + "://" | |
} | |
if (b.userInfo) { | |
c += b.userInfo + "@" | |
} | |
if (b.host) { | |
c += b.host | |
} | |
if (b.port) { | |
c += ":" + b.port | |
} | |
} | |
if (b.path) { | |
c += b.path | |
} | |
if (b.query) { | |
c += "?" + b.query | |
} | |
if (b.anchor) { | |
c += "#" + b.anchor | |
} | |
b.source = c | |
} | |
return b.source | |
} | |
}) | |
})(); (function() { | |
var a = tinymce.each; | |
tinymce.create("static tinymce.util.Cookie", { | |
getHash: function(d) { | |
var b = this.get(d), | |
c; | |
if (b) { | |
a(b.split("&"), | |
function(e) { | |
e = e.split("="); | |
c = c || {}; | |
c[unescape(e[0])] = unescape(e[1]) | |
}) | |
} | |
return c | |
}, | |
setHash: function(j, b, g, f, i, c) { | |
var h = ""; | |
a(b, | |
function(e, d) { | |
h += (!h ? "": "&") + escape(d) + "=" + escape(e) | |
}); | |
this.set(j, h, g, f, i, c) | |
}, | |
get: function(i) { | |
var h = document.cookie, | |
g, | |
f = i + "=", | |
d; | |
if (!h) { | |
return | |
} | |
d = h.indexOf("; " + f); | |
if (d == -1) { | |
d = h.indexOf(f); | |
if (d != 0) { | |
return null | |
} | |
} else { | |
d += 2 | |
} | |
g = h.indexOf(";", d); | |
if (g == -1) { | |
g = h.length | |
} | |
return unescape(h.substring(d + f.length, g)) | |
}, | |
set: function(i, b, g, f, h, c) { | |
document.cookie = i + "=" + escape(b) + ((g) ? "; expires=" + g.toGMTString() : "") + ((f) ? "; path=" + escape(f) : "") + ((h) ? "; domain=" + h: "") + ((c) ? "; secure": "") | |
}, | |
remove: function(e, b) { | |
var c = new Date(); | |
c.setTime(c.getTime() - 1000); | |
this.set(e, "", c, b, c) | |
} | |
}) | |
})(); | |
tinymce.create("static tinymce.util.JSON", { | |
serialize: function(e) { | |
var c, | |
a, | |
d = tinymce.util.JSON.serialize, | |
b; | |
if (e == null) { | |
return "null" | |
} | |
b = typeof e; | |
if (b == "string") { | |
a = "\bb\tt\nn\ff\rr\"\"''\\\\"; | |
return '"' + e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, | |
function(g, f) { | |
c = a.indexOf(f); | |
if (c + 1) { | |
return "\\" + a.charAt(c + 1) | |
} | |
g = f.charCodeAt().toString(16); | |
return "\\u" + "0000".substring(g.length) + g | |
}) + '"' | |
} | |
if (b == "object") { | |
if (e.hasOwnProperty && e instanceof Array) { | |
for (c = 0, a = "["; c < e.length; c++) { | |
a += (c > 0 ? ",": "") + d(e[c]) | |
} | |
return a + "]" | |
} | |
a = "{"; | |
for (c in e) { | |
a += typeof e[c] != "function" ? (a.length > 1 ? ',"': '"') + c + '":' + d(e[c]) : "" | |
} | |
return a + "}" | |
} | |
return "" + e | |
}, | |
parse: function(s) { | |
try { | |
return eval("(" + s + ")") | |
} catch(ex) {} | |
} | |
}); | |
tinymce.create("static tinymce.util.XHR", { | |
send: function(g) { | |
var a, | |
e, | |
b = window, | |
h = 0; | |
g.scope = g.scope || this; | |
g.success_scope = g.success_scope || g.scope; | |
g.error_scope = g.error_scope || g.scope; | |
g.async = g.async === false ? false: true; | |
g.data = g.data || ""; | |
function d(i) { | |
a = 0; | |
try { | |
a = new ActiveXObject(i) | |
} catch(c) {} | |
return a | |
} | |
a = b.XMLHttpRequest ? new XMLHttpRequest() : d("Microsoft.XMLHTTP") || d("Msxml2.XMLHTTP"); | |
if (a) { | |
if (a.overrideMimeType) { | |
a.overrideMimeType(g.content_type) | |
} | |
a.open(g.type || (g.data ? "POST": "GET"), g.url, g.async); | |
if (g.content_type) { | |
a.setRequestHeader("Content-Type", g.content_type) | |
} | |
a.setRequestHeader("X-Requested-With", "XMLHttpRequest"); | |
a.send(g.data); | |
function f() { | |
if (!g.async || a.readyState == 4 || h++>10000) { | |
if (g.success && h < 10000 && a.status == 200) { | |
g.success.call(g.success_scope, "" + a.responseText, a, g) | |
} else { | |
if (g.error) { | |
g.error.call(g.error_scope, h > 10000 ? "TIMED_OUT": "GENERAL", a, g) | |
} | |
} | |
a = null | |
} else { | |
b.setTimeout(f, 10) | |
} | |
} | |
if (!g.async) { | |
return f() | |
} | |
e = b.setTimeout(f, 10) | |
} | |
} | |
}); (function() { | |
var c = tinymce.extend, | |
b = tinymce.util.JSON, | |
a = tinymce.util.XHR; | |
tinymce.create("tinymce.util.JSONRequest", { | |
JSONRequest: function(d) { | |
this.settings = c({}, | |
d); | |
this.count = 0 | |
}, | |
send: function(f) { | |
var e = f.error, | |
d = f.success; | |
f = c(this.settings, f); | |
f.success = function(h, g) { | |
h = b.parse(h); | |
if (typeof(h) == "undefined") { | |
h = { | |
error: "JSON Parse error." | |
} | |
} | |
if (h.error) { | |
e.call(f.error_scope || f.scope, h.error, g) | |
} else { | |
d.call(f.success_scope || f.scope, h.result) | |
} | |
}; | |
f.error = function(h, g) { | |
e.call(f.error_scope || f.scope, h, g) | |
}; | |
f.data = b.serialize({ | |
id: f.id || "c" + (this.count++), | |
method: f.method, | |
params: f.params | |
}); | |
f.content_type = "application/json"; | |
a.send(f) | |
}, | |
"static": { | |
sendRPC: function(d) { | |
return new tinymce.util.JSONRequest().send(d) | |
} | |
} | |
}) | |
} ()); (function(m) { | |
var k = m.each, | |
j = m.is, | |
i = m.isWebKit, | |
d = m.isIE, | |
a = /^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/, | |
e = g("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), | |
f = g("src,href,style,coords,shape"), | |
c = { | |
"&": "&", | |
'"': """, | |
"<": "<", | |
">": ">" | |
}, | |
n = /[<>&\"]/g, | |
b = /^([a-z0-9],?)+$/i, | |
h = /<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g, | |
l = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; | |
function g(q) { | |
var p = {}, | |
o; | |
q = q.split(","); | |
for (o = q.length; o >= 0; o--) { | |
p[q[o]] = 1 | |
} | |
return p | |
} | |
m.create("tinymce.dom.DOMUtils", { | |
doc: null, | |
root: null, | |
files: null, | |
pixelStyles: /^(top|left|bottom|right|width|height|borderWidth)$/, | |
props: { | |
"for": "htmlFor", | |
"class": "className", | |
className: "className", | |
checked: "checked", | |
disabled: "disabled", | |
maxlength: "maxLength", | |
readonly: "readOnly", | |
selected: "selected", | |
value: "value", | |
id: "id", | |
name: "name", | |
type: "type" | |
}, | |
DOMUtils: function(u, q) { | |
var p = this, | |
o; | |
p.doc = u; | |
p.win = window; | |
p.files = {}; | |
p.cssFlicker = false; | |
p.counter = 0; | |
p.boxModel = !m.isIE || u.compatMode == "CSS1Compat"; | |
p.stdMode = u.documentMode === 8; | |
p.settings = q = m.extend({ | |
keep_values: false, | |
hex_colors: 1, | |
process_html: 1 | |
}, | |
q); | |
if (m.isIE6) { | |
try { | |
u.execCommand("BackgroundImageCache", false, true) | |
} catch(r) { | |
p.cssFlicker = true | |
} | |
} | |
if (q.valid_styles) { | |
p._styles = {}; | |
k(q.valid_styles, | |
function(t, s) { | |
p._styles[s] = m.explode(t) | |
}) | |
} | |
m.addUnload(p.destroy, p) | |
}, | |
getRoot: function() { | |
var o = this, | |
p = o.settings; | |
return (p && o.get(p.root_element)) || o.doc.body | |
}, | |
getViewPort: function(p) { | |
var q, | |
o; | |
p = !p ? this.win: p; | |
q = p.document; | |
o = this.boxModel ? q.documentElement: q.body; | |
return { | |
x: p.pageXOffset || o.scrollLeft, | |
y: p.pageYOffset || o.scrollTop, | |
w: p.innerWidth || o.clientWidth, | |
h: p.innerHeight || o.clientHeight | |
} | |
}, | |
getRect: function(s) { | |
var r, | |
o = this, | |
q; | |
s = o.get(s); | |
r = o.getPos(s); | |
q = o.getSize(s); | |
return { | |
x: r.x, | |
y: r.y, | |
w: q.w, | |
h: q.h | |
} | |
}, | |
getSize: function(r) { | |
var p = this, | |
o, | |
q; | |
r = p.get(r); | |
o = p.getStyle(r, "width"); | |
q = p.getStyle(r, "height"); | |
if (o.indexOf("px") === -1) { | |
o = 0 | |
} | |
if (q.indexOf("px") === -1) { | |
q = 0 | |
} | |
return { | |
w: parseInt(o) || r.offsetWidth || r.clientWidth, | |
h: parseInt(q) || r.offsetHeight || r.clientHeight | |
} | |
}, | |
getParent: function(q, p, o) { | |
return this.getParents(q, p, o, false) | |
}, | |
getParents: function(z, v, s, y) { | |
var q = this, | |
p, | |
u = q.settings, | |
x = []; | |
z = q.get(z); | |
y = y === undefined; | |
if (u.strict_root) { | |
s = s || q.getRoot() | |
} | |
if (j(v, "string")) { | |
p = v; | |
if (v === "*") { | |
v = function(o) { | |
return o.nodeType == 1 | |
} | |
} else { | |
v = function(o) { | |
return q.is(o, p) | |
} | |
} | |
} | |
while (z) { | |
if (z == s || !z.nodeType || z.nodeType === 9) { | |
break | |
} | |
if (!v || v(z)) { | |
if (y) { | |
x.push(z) | |
} else { | |
return z | |
} | |
} | |
z = z.parentNode | |
} | |
return y ? x: null | |
}, | |
get: function(o) { | |
var p; | |
if (o && this.doc && typeof(o) == "string") { | |
p = o; | |
o = this.doc.getElementById(o); | |
if (o && o.id !== p) { | |
return this.doc.getElementsByName(p)[1] | |
} | |
} | |
return o | |
}, | |
getNext: function(p, o) { | |
return this._findSib(p, o, "nextSibling") | |
}, | |
getPrev: function(p, o) { | |
return this._findSib(p, o, "previousSibling") | |
}, | |
select: function(q, p) { | |
var o = this; | |
return m.dom.Sizzle(q, o.get(p) || o.get(o.settings.root_element) || o.doc, []) | |
}, | |
is: function(q, o) { | |
var p; | |
if (q.length === undefined) { | |
if (o === "*") { | |
return q.nodeType == 1 | |
} | |
if (b.test(o)) { | |
o = o.toLowerCase().split(/,/); | |
q = q.nodeName.toLowerCase(); | |
for (p = o.length - 1; p >= 0; p--) { | |
if (o[p] == q) { | |
return true | |
} | |
} | |
return false | |
} | |
} | |
return m.dom.Sizzle.matches(o, q.nodeType ? [q] : q).length > 0 | |
}, | |
add: function(s, v, o, r, u) { | |
var q = this; | |
return this.run(s, | |
function(y) { | |
var x, | |
t; | |
x = j(v, "string") ? q.doc.createElement(v) : v; | |
q.setAttribs(x, o); | |
if (r) { | |
if (r.nodeType) { | |
x.appendChild(r) | |
} else { | |
q.setHTML(x, r) | |
} | |
} | |
return ! u ? y.appendChild(x) : x | |
}) | |
}, | |
create: function(q, o, p) { | |
return this.add(this.doc.createElement(q), q, o, p, 1) | |
}, | |
createHTML: function(v, p, s) { | |
var u = "", | |
r = this, | |
q; | |
u += "<" + v; | |
for (q in p) { | |
if (p.hasOwnProperty(q)) { | |
u += " " + q + '="' + r.encode(p[q]) + '"' | |
} | |
} | |
if (m.is(s)) { | |
return u + ">" + s + "</" + v + ">" | |
} | |
return u + " />" | |
}, | |
remove: function(o, p) { | |
return this.run(o, | |
function(r) { | |
var q, | |
s; | |
q = r.parentNode; | |
if (!q) { | |
return null | |
} | |
if (p) { | |
while (s = r.firstChild) { | |
if (s.nodeType !== 3 || s.nodeValue) { | |
q.insertBefore(s, r) | |
} else { | |
r.removeChild(s) | |
} | |
} | |
} | |
return q.removeChild(r) | |
}) | |
}, | |
setStyle: function(r, o, p) { | |
var q = this; | |
return q.run(r, | |
function(v) { | |
var u, | |
t; | |
u = v.style; | |
o = o.replace(/-(\D)/g, | |
function(x, s) { | |
return s.toUpperCase() | |
}); | |
if (q.pixelStyles.test(o) && (m.is(p, "number") || /^[\-0-9\.]+$/.test(p))) { | |
p += "px" | |
} | |
switch (o) { | |
case "opacity": | |
if (d) { | |
u.filter = p === "" ? "": "alpha(opacity=" + (p * 100) + ")"; | |
if (!r.currentStyle || !r.currentStyle.hasLayout) { | |
u.display = "inline-block" | |
} | |
} | |
u[o] = u["-moz-opacity"] = u["-khtml-opacity"] = p || ""; | |
break; | |
case "float": | |
d ? u.styleFloat = p: u.cssFloat = p; | |
break; | |
default: | |
u[o] = p || "" | |
} | |
if (q.settings.update_styles) { | |
q.setAttrib(v, "_mce_style") | |
} | |
}) | |
}, | |
getStyle: function(r, o, q) { | |
r = this.get(r); | |
if (!r) { | |
return false | |
} | |
if (this.doc.defaultView && q) { | |
o = o.replace(/[A-Z]/g, | |
function(s) { | |
return "-" + s | |
}); | |
try { | |
return this.doc.defaultView.getComputedStyle(r, null).getPropertyValue(o) | |
} catch(p) { | |
return null | |
} | |
} | |
o = o.replace(/-(\D)/g, | |
function(t, s) { | |
return s.toUpperCase() | |
}); | |
if (o == "float") { | |
o = d ? "styleFloat": "cssFloat" | |
} | |
if (r.currentStyle && q) { | |
return r.currentStyle[o] | |
} | |
return r.style[o] | |
}, | |
setStyles: function(u, v) { | |
var q = this, | |
r = q.settings, | |
p; | |
p = r.update_styles; | |
r.update_styles = 0; | |
k(v, | |
function(o, s) { | |
q.setStyle(u, s, o) | |
}); | |
r.update_styles = p; | |
if (r.update_styles) { | |
q.setAttrib(u, r.cssText) | |
} | |
}, | |
setAttrib: function(q, r, o) { | |
var p = this; | |
if (!q || !r) { | |
return | |
} | |
if (p.settings.strict) { | |
r = r.toLowerCase() | |
} | |
return this.run(q, | |
function(u) { | |
var t = p.settings; | |
switch (r) { | |
case "style": | |
if (!j(o, "string")) { | |
k(o, | |
function(s, x) { | |
p.setStyle(u, x, s) | |
}); | |
return | |
} | |
if (t.keep_values) { | |
if (o && !p._isRes(o)) { | |
u.setAttribute("_mce_style", o, 2) | |
} else { | |
u.removeAttribute("_mce_style", 2) | |
} | |
} | |
u.style.cssText = o; | |
break; | |
case "class": | |
u.className = o || ""; | |
break; | |
case "src": | |
case "href": | |
if (t.keep_values) { | |
if (t.url_converter) { | |
o = t.url_converter.call(t.url_converter_scope || p, o, r, u) | |
} | |
p.setAttrib(u, "_mce_" + r, o, 2) | |
} | |
break; | |
case "shape": | |
u.setAttribute("_mce_style", o); | |
break | |
} | |
if (j(o) && o !== null && o.length !== 0) { | |
u.setAttribute(r, "" + o, 2) | |
} else { | |
u.removeAttribute(r, 2) | |
} | |
}) | |
}, | |
setAttribs: function(q, r) { | |
var p = this; | |
return this.run(q, | |
function(o) { | |
k(r, | |
function(s, t) { | |
p.setAttrib(o, t, s) | |
}) | |
}) | |
}, | |
getAttrib: function(r, s, q) { | |
var o, | |
p = this; | |
r = p.get(r); | |
if (!r || r.nodeType !== 1) { | |
return false | |
} | |
if (!j(q)) { | |
q = "" | |
} | |
if (/^(src|href|style|coords|shape)$/.test(s)) { | |
o = r.getAttribute("_mce_" + s); | |
if (o) { | |
return o | |
} | |
} | |
if (d && p.props[s]) { | |
o = r[p.props[s]]; | |
o = o && o.nodeValue ? o.nodeValue: o | |
} | |
if (!o) { | |
o = r.getAttribute(s, 2) | |
} | |
if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(s)) { | |
if (r[p.props[s]] === true && o === "") { | |
return s | |
} | |
return o ? s: "" | |
} | |
if (r.nodeName === "FORM" && r.getAttributeNode(s)) { | |
return r.getAttributeNode(s).nodeValue | |
} | |
if (s === "style") { | |
o = o || r.style.cssText; | |
if (o) { | |
o = p.serializeStyle(p.parseStyle(o), r.nodeName); | |
if (p.settings.keep_values && !p._isRes(o)) { | |
r.setAttribute("_mce_style", o) | |
} | |
} | |
} | |
if (i && s === "class" && o) { | |
o = o.replace(/(apple|webkit)\-[a-z\-]+/gi, "") | |
} | |
if (d) { | |
switch (s) { | |
case "rowspan": | |
case "colspan": | |
if (o === 1) { | |
o = "" | |
} | |
break; | |
case "size": | |
if (o === "+0" || o === 20 || o === 0) { | |
o = "" | |
} | |
break; | |
case "width": | |
case "height": | |
case "vspace": | |
case "checked": | |
case "disabled": | |
case "readonly": | |
if (o === 0) { | |
o = "" | |
} | |
break; | |
case "hspace": | |
if (o === -1) { | |
o = "" | |
} | |
break; | |
case "maxlength": | |
case "tabindex": | |
if (o === 32768 || o === 2147483647 || o === "32768") { | |
o = "" | |
} | |
break; | |
case "multiple": | |
case "compact": | |
case "noshade": | |
case "nowrap": | |
if (o === 65535) { | |
return s | |
} | |
return q; | |
case "shape": | |
o = o.toLowerCase(); | |
break; | |
default: | |
if (s.indexOf("on") === 0 && o) { | |
o = ("" + o).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, "$1") | |
} | |
} | |
} | |
return (o !== undefined && o !== null && o !== "") ? "" + o: q | |
}, | |
getPos: function(A, s) { | |
var p = this, | |
o = 0, | |
z = 0, | |
u, | |
v = p.doc, | |
q; | |
A = p.get(A); | |
s = s || v.body; | |
if (A) { | |
if (d && !p.stdMode) { | |
A = A.getBoundingClientRect(); | |
u = p.boxModel ? v.documentElement: v.body; | |
o = p.getStyle(p.select("html")[0], "borderWidth"); | |
o = (o == "medium" || p.boxModel && !p.isIE6) && 2 || o; | |
A.top += p.win.self != p.win.top ? 2: 0; | |
return { | |
x: A.left + u.scrollLeft - o, | |
y: A.top + u.scrollTop - o | |
} | |
} | |
q = A; | |
while (q && q != s && q.nodeType) { | |
o += q.offsetLeft || 0; | |
z += q.offsetTop || 0; | |
q = q.offsetParent | |
} | |
q = A.parentNode; | |
while (q && q != s && q.nodeType) { | |
o -= q.scrollLeft || 0; | |
z -= q.scrollTop || 0; | |
q = q.parentNode | |
} | |
} | |
return { | |
x: o, | |
y: z | |
} | |
}, | |
parseStyle: function(r) { | |
var u = this, | |
v = u.settings, | |
x = {}; | |
if (!r) { | |
return x | |
} | |
function p(D, A, C) { | |
var z, | |
B, | |
o, | |
y; | |
z = x[D + "-top" + A]; | |
if (!z) { | |
return | |
} | |
B = x[D + "-right" + A]; | |
if (z != B) { | |
return | |
} | |
o = x[D + "-bottom" + A]; | |
if (B != o) { | |
return | |
} | |
y = x[D + "-left" + A]; | |
if (o != y) { | |
return | |
} | |
x[C] = y; | |
delete x[D + "-top" + A]; | |
delete x[D + "-right" + A]; | |
delete x[D + "-bottom" + A]; | |
delete x[D + "-left" + A] | |
} | |
function q(y, s, o, A) { | |
var z; | |
z = x[s]; | |
if (!z) { | |
return | |
} | |
z = x[o]; | |
if (!z) { | |
return | |
} | |
z = x[A]; | |
if (!z) { | |
return | |
} | |
x[y] = x[s] + " " + x[o] + " " + x[A]; | |
delete x[s]; | |
delete x[o]; | |
delete x[A] | |
} | |
r = r.replace(/&(#?[a-z0-9]+);/g, "&$1_MCE_SEMI_"); | |
k(r.split(";"), | |
function(s) { | |
var o, | |
t = []; | |
if (s) { | |
s = s.replace(/_MCE_SEMI_/g, ";"); | |
s = s.replace(/url\([^\)]+\)/g, | |
function(y) { | |
t.push(y); | |
return "url(" + t.length + ")" | |
}); | |
s = s.split(":"); | |
o = m.trim(s[1]); | |
o = o.replace(/url\(([^\)]+)\)/g, | |
function(z, y) { | |
return t[parseInt(y) - 1] | |
}); | |
o = o.replace(/rgb\([^\)]+\)/g, | |
function(y) { | |
return u.toHex(y) | |
}); | |
if (v.url_converter) { | |
o = o.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, | |
function(y, z) { | |
return "url(" + v.url_converter.call(v.url_converter_scope || u, u.decode(z), "style", null) + ")" | |
}) | |
} | |
x[m.trim(s[0]).toLowerCase()] = o | |
} | |
}); | |
p("border", "", "border"); | |
p("border", "-width", "border-width"); | |
p("border", "-color", "border-color"); | |
p("border", "-style", "border-style"); | |
p("padding", "", "padding"); | |
p("margin", "", "margin"); | |
q("border", "border-width", "border-style", "border-color"); | |
if (d) { | |
if (x.border == "medium none") { | |
x.border = "" | |
} | |
} | |
return x | |
}, | |
serializeStyle: function(v, p) { | |
var q = this, | |
r = ""; | |
function u(s, o) { | |
if (o && s) { | |
if (o.indexOf("-") === 0) { | |
return | |
} | |
switch (o) { | |
case "font-weight": | |
if (s == 700) { | |
s = "bold" | |
} | |
break; | |
case "color": | |
case "background-color": | |
s = s.toLowerCase(); | |
break | |
} | |
r += (r ? " ": "") + o + ": " + s + ";" | |
} | |
} | |
if (p && q._styles) { | |
k(q._styles["*"], | |
function(o) { | |
u(v[o], o) | |
}); | |
k(q._styles[p.toLowerCase()], | |
function(o) { | |
u(v[o], o) | |
}) | |
} else { | |
k(v, u) | |
} | |
return r | |
}, | |
loadCSS: function(o) { | |
var q = this, | |
r = q.doc, | |
p; | |
if (!o) { | |
o = "" | |
} | |
p = q.select("head")[0]; | |
k(o.split(","), | |
function(s) { | |
var t; | |
if (q.files[s]) { | |
return | |
} | |
q.files[s] = true; | |
t = q.create("link", { | |
rel: "stylesheet", | |
href: m._addVer(s) | |
}); | |
if (d && r.documentMode) { | |
t.onload = function() { | |
r.recalc(); | |
t.onload = null | |
} | |
} | |
p.appendChild(t) | |
}) | |
}, | |
addClass: function(o, p) { | |
return this.run(o, | |
function(q) { | |
var r; | |
if (!p) { | |
return 0 | |
} | |
if (this.hasClass(q, p)) { | |
return q.className | |
} | |
r = this.removeClass(q, p); | |
return q.className = (r != "" ? (r + " ") : "") + p | |
}) | |
}, | |
removeClass: function(q, r) { | |
var o = this, | |
p; | |
return o.run(q, | |
function(t) { | |
var s; | |
if (o.hasClass(t, r)) { | |
if (!p) { | |
p = new RegExp("(^|\\s+)" + r + "(\\s+|$)", "g") | |
} | |
s = t.className.replace(p, " "); | |
s = m.trim(s != " " ? s: ""); | |
t.className = s; | |
if (!s) { | |
t.removeAttribute("class"); | |
t.removeAttribute("className") | |
} | |
return s | |
} | |
return t.className | |
}) | |
}, | |
hasClass: function(p, o) { | |
p = this.get(p); | |
if (!p || !o) { | |
return false | |
} | |
return (" " + p.className + " ").indexOf(" " + o + " ") !== -1 | |
}, | |
show: function(o) { | |
return this.setStyle(o, "display", "block") | |
}, | |
hide: function(o) { | |
return this.setStyle(o, "display", "none") | |
}, | |
isHidden: function(o) { | |
o = this.get(o); | |
return ! o || o.style.display == "none" || this.getStyle(o, "display") == "none" | |
}, | |
uniqueId: function(o) { | |
return (!o ? "mce_": o) + (this.counter++) | |
}, | |
setHTML: function(q, p) { | |
var o = this; | |
return this.run(q, | |
function(v) { | |
var r, | |
t, | |
s, | |
z, | |
u, | |
r; | |
p = o.processHTML(p); | |
if (d) { | |
function y() { | |
while (v.firstChild) { | |
v.firstChild.removeNode() | |
} | |
try { | |
v.innerHTML = "<br />" + p; | |
v.removeChild(v.firstChild) | |
} catch(x) { | |
r = o.create("div"); | |
r.innerHTML = "<br />" + p; | |
k(r.childNodes, | |
function(B, A) { | |
if (A) { | |
v.appendChild(B) | |
} | |
}) | |
} | |
} | |
if (o.settings.fix_ie_paragraphs) { | |
p = p.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi, '<p$1 _mce_keep="true"> </p>') | |
} | |
y(); | |
if (o.settings.fix_ie_paragraphs) { | |
s = v.getElementsByTagName("p"); | |
for (t = s.length - 1, r = 0; t >= 0; t--) { | |
z = s[t]; | |
if (!z.hasChildNodes()) { | |
if (!z._mce_keep) { | |
r = 1; | |
break | |
} | |
z.removeAttribute("_mce_keep") | |
} | |
} | |
} | |
if (r) { | |
p = p.replace(/<p ([^>]+)>|<p>/ig, '<div $1 _mce_tmp="1">'); | |
p = p.replace(/<\/p>/g, "</div>"); | |
y(); | |
if (o.settings.fix_ie_paragraphs) { | |
s = v.getElementsByTagName("DIV"); | |
for (t = s.length - 1; t >= 0; t--) { | |
z = s[t]; | |
if (z._mce_tmp) { | |
u = o.doc.createElement("p"); | |
z.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, | |
function(A, x) { | |
var B; | |
if (x !== "_mce_tmp") { | |
B = z.getAttribute(x); | |
if (!B && x === "class") { | |
B = z.className | |
} | |
u.setAttribute(x, B) | |
} | |
}); | |
for (r = 0; r < z.childNodes.length; r++) { | |
u.appendChild(z.childNodes[r].cloneNode(true)) | |
} | |
z.swapNode(u) | |
} | |
} | |
} | |
} | |
} else { | |
v.innerHTML = p | |
} | |
return p | |
}) | |
}, | |
processHTML: function(r) { | |
var p = this, | |
q = p.settings, | |
v = []; | |
if (!q.process_html) { | |
return r | |
} | |
if (d) { | |
r = r.replace(/'/g, "'"); | |
r = r.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi, "") | |
} | |
r = r.replace(/<a( )([^>]+)\/>|<a\/>/gi, "<a$1$2></a>"); | |
if (q.keep_values) { | |
if (/<script|noscript|style/i.test(r)) { | |
function o(t) { | |
t = t.replace(/(<!--\[CDATA\[|\]\]-->)/g, "\n"); | |
t = t.replace(/^[\r\n]*|[\r\n]*$/g, ""); | |
t = t.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, ""); | |
t = t.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, ""); | |
return t | |
} | |
r = r.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/gi, | |
function(s, x, t) { | |
if (!x) { | |
x = ' type="text/javascript"' | |
} | |
x = x.replace(/src=\"([^\"]+)\"?/i, | |
function(y, z) { | |
if (q.url_converter) { | |
z = p.encode(q.url_converter.call(q.url_converter_scope || p, p.decode(z), "src", "script")) | |
} | |
return '_mce_src="' + z + '"' | |
}); | |
if (m.trim(t)) { | |
v.push(o(t)); | |
t = "<!--\nMCE_SCRIPT:" + (v.length - 1) + "\n// -->" | |
} | |
return "<mce:script" + x + ">" + t + "</mce:script>" | |
}); | |
r = r.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/gi, | |
function(s, x, t) { | |
if (t) { | |
v.push(o(t)); | |
t = "<!--\nMCE_SCRIPT:" + (v.length - 1) + "\n-->" | |
} | |
return "<mce:style" + x + ">" + t + "</mce:style><style " + x + ' _mce_bogus="1">' + t + "</style>" | |
}); | |
r = r.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g, | |
function(s, x, t) { | |
return "<mce:noscript" + x + "><!--" + p.encode(t).replace(/--/g, "--") + "--></mce:noscript>" | |
}) | |
} | |
r = r.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, "<!--[CDATA[$1]]-->"); | |
function u(s) { | |
return s.replace(h, | |
function(y, z, x, t) { | |
return "<" + z + x.replace(l, | |
function(B, A, E, D, C) { | |
var F; | |
A = A.toLowerCase(); | |
E = E || D || C || ""; | |
if (e[A]) { | |
if (E === "false" || E === "0") { | |
return | |
} | |
return A + '="' + A + '"' | |
} | |
if (f[A] && x.indexOf("_mce_" + A) == -1) { | |
F = p.decode(E); | |
if (q.url_converter && (A == "src" || A == "href")) { | |
F = q.url_converter.call(q.url_converter_scope || p, F, A, z) | |
} | |
if (A == "style") { | |
F = p.serializeStyle(p.parseStyle(F), A) | |
} | |
return A + '="' + E + '" _mce_' + A + '="' + p.encode(F) + '"' | |
} | |
return B | |
}) + t + ">" | |
}) | |
} | |
r = u(r); | |
r = r.replace(/MCE_SCRIPT:([0-9]+)/g, | |
function(t, s) { | |
return v[s] | |
}) | |
} | |
return r | |
}, | |
getOuterHTML: function(o) { | |
var p; | |
o = this.get(o); | |
if (!o) { | |
return null | |
} | |
if (o.outerHTML !== undefined) { | |
return o.outerHTML | |
} | |
p = (o.ownerDocument || this.doc).createElement("body"); | |
p.appendChild(o.cloneNode(true)); | |
return p.innerHTML | |
}, | |
setOuterHTML: function(r, p, s) { | |
var o = this; | |
function q(u, t, x) { | |
var y, | |
v; | |
v = x.createElement("body"); | |
v.innerHTML = t; | |
y = v.lastChild; | |
while (y) { | |
o.insertAfter(y.cloneNode(true), u); | |
y = y.previousSibling | |
} | |
o.remove(u) | |
} | |
return this.run(r, | |
function(u) { | |
u = o.get(u); | |
if (u.nodeType == 1) { | |
s = s || u.ownerDocument || o.doc; | |
if (d) { | |
try { | |
if (d && u.nodeType == 1) { | |
u.outerHTML = p | |
} else { | |
q(u, p, s) | |
} | |
} catch(t) { | |
q(u, p, s) | |
} | |
} else { | |
q(u, p, s) | |
} | |
} | |
}) | |
}, | |
decode: function(p) { | |
var q, | |
r, | |
o; | |
if (/&[\w#]+;/.test(p)) { | |
q = this.doc.createElement("div"); | |
q.innerHTML = p; | |
r = q.firstChild; | |
o = ""; | |
if (r) { | |
do { | |
o += r.nodeValue | |
} | |
while (r = r.nextSibling) | |
} | |
return o || p | |
} | |
return p | |
}, | |
encode: function(o) { | |
return ("" + o).replace(n, | |
function(p) { | |
return c[p] | |
}) | |
}, | |
insertAfter: function(o, p) { | |
p = this.get(p); | |
return this.run(o, | |
function(r) { | |
var q, | |
s; | |
q = p.parentNode; | |
s = p.nextSibling; | |
if (s) { | |
q.insertBefore(r, s) | |
} else { | |
q.appendChild(r) | |
} | |
return r | |
}) | |
}, | |
isBlock: function(o) { | |
if (o.nodeType && o.nodeType !== 1) { | |
return false | |
} | |
o = o.nodeName || o; | |
return a.test(o) | |
}, | |
replace: function(s, r, p) { | |
var q = this; | |
if (j(r, "array")) { | |
s = s.cloneNode(true) | |
} | |
return q.run(r, | |
function(t) { | |
if (p) { | |
k(m.grep(t.childNodes), | |
function(o) { | |
s.appendChild(o) | |
}) | |
} | |
return t.parentNode.replaceChild(s, t) | |
}) | |
}, | |
rename: function(r, o) { | |
var q = this, | |
p; | |
if (r.nodeName != o.toUpperCase()) { | |
p = q.create(o); | |
k(q.getAttribs(r), | |
function(s) { | |
q.setAttrib(p, s.nodeName, q.getAttrib(r, s.nodeName)) | |
}); | |
q.replace(p, r, 1) | |
} | |
return p || r | |
}, | |
findCommonAncestor: function(q, o) { | |
var r = q, | |
p; | |
while (r) { | |
p = o; | |
while (p && r != p) { | |
p = p.parentNode | |
} | |
if (r == p) { | |
break | |
} | |
r = r.parentNode | |
} | |
if (!r && q.ownerDocument) { | |
return q.ownerDocument.documentElement | |
} | |
return r | |
}, | |
toHex: function(o) { | |
var q = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(o); | |
function p(r) { | |
r = parseInt(r).toString(16); | |
return r.length > 1 ? r: "0" + r | |
} | |
if (q) { | |
o = "#" + p(q[1]) + p(q[2]) + p(q[3]); | |
return o | |
} | |
return o | |
}, | |
getClasses: function() { | |
var s = this, | |
o = [], | |
r, | |
u = {}, | |
v = s.settings.class_filter, | |
q; | |
if (s.classes) { | |
return s.classes | |
} | |
function x(t) { | |
k(t.imports, | |
function(y) { | |
x(y) | |
}); | |
k(t.cssRules || t.rules, | |
function(y) { | |
switch (y.type || 1) { | |
case 1: | |
if (y.selectorText) { | |
k(y.selectorText.split(","), | |
function(z) { | |
z = z.replace(/^\s*|\s*$|^\s\./g, ""); | |
if (/\.mce/.test(z) || !/\.[\w\-]+$/.test(z)) { | |
return | |
} | |
q = z; | |
z = z.replace(/.*\.([a-z0-9_\-]+).*/i, "$1"); | |
if (v && !(z = v(z, q))) { | |
return | |
} | |
if (!u[z]) { | |
o.push({ | |
"class": z | |
}); | |
u[z] = 1 | |
} | |
}) | |
} | |
break; | |
case 3: | |
x(y.styleSheet); | |
break | |
} | |
}) | |
} | |
try { | |
k(s.doc.styleSheets, x) | |
} catch(p) {} | |
if (o.length > 0) { | |
s.classes = o | |
} | |
return o | |
}, | |
run: function(u, r, q) { | |
var p = this, | |
v; | |
if (p.doc && typeof(u) === "string") { | |
u = p.get(u) | |
} | |
if (!u) { | |
return false | |
} | |
q = q || this; | |
if (!u.nodeType && (u.length || u.length === 0)) { | |
v = []; | |
k(u, | |
function(s, o) { | |
if (s) { | |
if (typeof(s) == "string") { | |
s = p.doc.getElementById(s) | |
} | |
v.push(r.call(q, s, o)) | |
} | |
}); | |
return v | |
} | |
return r.call(q, u) | |
}, | |
getAttribs: function(q) { | |
var p; | |
q = this.get(q); | |
if (!q) { | |
return [] | |
} | |
if (d) { | |
p = []; | |
if (q.nodeName == "OBJECT") { | |
return q.attributes | |
} | |
if (q.nodeName === "OPTION" && this.getAttrib(q, "selected")) { | |
p.push({ | |
specified: 1, | |
nodeName: "selected" | |
}) | |
} | |
q.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, "").replace(/[\w:\-]+/gi, | |
function(o) { | |
p.push({ | |
specified: 1, | |
nodeName: o | |
}) | |
}); | |
return p | |
} | |
return q.attributes | |
}, | |
destroy: function(p) { | |
var o = this; | |
if (o.events) { | |
o.events.destroy() | |
} | |
o.win = o.doc = o.root = o.events = null; | |
if (!p) { | |
m.removeUnload(o.destroy) | |
} | |
}, | |
createRng: function() { | |
var o = this.doc; | |
return o.createRange ? o.createRange() : new m.dom.Range(this) | |
}, | |
nodeIndex: function(s, t) { | |
var o = 0, | |
q, | |
r, | |
p; | |
if (s) { | |
for (q = s.nodeType, s = s.previousSibling, r = s; s; s = s.previousSibling) { | |
p = s.nodeType; | |
if (!t || p != 3 || (q != p && s.nodeValue.length)) { | |
o++ | |
} | |
q = p | |
} | |
} | |
return o | |
}, | |
split: function(u, s, y) { | |
var z = this, | |
o = z.createRng(), | |
v, | |
q, | |
x; | |
function p(A) { | |
var t, | |
r = A.childNodes; | |
if (A.nodeType == 1 && A.getAttribute("_mce_type") == "bookmark") { | |
return | |
} | |
for (t = r.length - 1; t >= 0; t--) { | |
p(r[t]) | |
} | |
if (A.nodeType != 9) { | |
if (A.nodeType == 3 && A.nodeValue.length > 0) { | |
return | |
} | |
if (A.nodeType == 1) { | |
r = A.childNodes; | |
if (r.length == 1 && r[0] && r[0].nodeType == 1 && r[0].getAttribute("_mce_type") == "bookmark") { | |
A.parentNode.insertBefore(r[0], A) | |
} | |
if (r.length || /^(br|hr|input|img)$/i.test(A.nodeName)) { | |
return | |
} | |
} | |
z.remove(A) | |
} | |
return A | |
} | |
if (u && s) { | |
o.setStart(u.parentNode, z.nodeIndex(u)); | |
o.setEnd(s.parentNode, z.nodeIndex(s)); | |
v = o.extractContents(); | |
o = z.createRng(); | |
o.setStart(s.parentNode, z.nodeIndex(s) + 1); | |
o.setEnd(u.parentNode, z.nodeIndex(u) + 1); | |
q = o.extractContents(); | |
x = u.parentNode; | |
x.insertBefore(p(v), u); | |
if (y) { | |
x.replaceChild(y, s) | |
} else { | |
x.insertBefore(s, u) | |
} | |
x.insertBefore(p(q), u); | |
z.remove(u); | |
return y || s | |
} | |
}, | |
bind: function(s, o, r, q) { | |
var p = this; | |
if (!p.events) { | |
p.events = new m.dom.EventUtils() | |
} | |
return p.events.add(s, o, r, q || this) | |
}, | |
unbind: function(r, o, q) { | |
var p = this; | |
if (!p.events) { | |
p.events = new m.dom.EventUtils() | |
} | |
return p.events.remove(r, o, q) | |
}, | |
_findSib: function(r, o, p) { | |
var q = this, | |
s = o; | |
if (r) { | |
if (j(s, "string")) { | |
s = function(t) { | |
return q.is(t, o) | |
} | |
} | |
for (r = r[p]; r; r = r[p]) { | |
if (s(r)) { | |
return r | |
} | |
} | |
} | |
return null | |
}, | |
_isRes: function(o) { | |
return /^(top|left|bottom|right|width|height)/i.test(o) || /;\s*(top|left|bottom|right|width|height)/i.test(o) | |
} | |
}); | |
m.DOM = new m.dom.DOMUtils(document, { | |
process_html: 0 | |
}) | |
})(tinymce); (function(a) { | |
function b(c) { | |
var N = this, | |
e = c.doc, | |
S = 0, | |
E = 1, | |
j = 2, | |
D = true, | |
R = false, | |
U = "startOffset", | |
h = "startContainer", | |
P = "endContainer", | |
z = "endOffset", | |
k = tinymce.extend, | |
n = c.nodeIndex; | |
k(N, { | |
startContainer: e, | |
startOffset: 0, | |
endContainer: e, | |
endOffset: 0, | |
collapsed: D, | |
commonAncestorContainer: e, | |
START_TO_START: 0, | |
START_TO_END: 1, | |
END_TO_END: 2, | |
END_TO_START: 3, | |
setStart: q, | |
setEnd: s, | |
setStartBefore: g, | |
setStartAfter: I, | |
setEndBefore: J, | |
setEndAfter: u, | |
collapse: A, | |
selectNode: x, | |
selectNodeContents: F, | |
compareBoundaryPoints: v, | |
deleteContents: p, | |
extractContents: H, | |
cloneContents: d, | |
insertNode: C, | |
surroundContents: M, | |
cloneRange: K | |
}); | |
function q(V, t) { | |
B(D, V, t) | |
} | |
function s(V, t) { | |
B(R, V, t) | |
} | |
function g(t) { | |
q(t.parentNode, n(t)) | |
} | |
function I(t) { | |
q(t.parentNode, n(t) + 1) | |
} | |
function J(t) { | |
s(t.parentNode, n(t)) | |
} | |
function u(t) { | |
s(t.parentNode, n(t) + 1) | |
} | |
function A(t) { | |
if (t) { | |
N[P] = N[h]; | |
N[z] = N[U] | |
} else { | |
N[h] = N[P]; | |
N[U] = N[z] | |
} | |
N.collapsed = D | |
} | |
function x(t) { | |
g(t); | |
u(t) | |
} | |
function F(t) { | |
q(t, 0); | |
s(t, t.nodeType === 1 ? t.childNodes.length: t.nodeValue.length) | |
} | |
function v(W, X) { | |
var Z = N[h], | |
Y = N[U], | |
V = N[P], | |
t = N[z]; | |
if (W === 0) { | |
return G(Z, Y, Z, Y) | |
} | |
if (W === 1) { | |
return G(Z, Y, V, t) | |
} | |
if (W === 2) { | |
return G(V, t, V, t) | |
} | |
if (W === 3) { | |
return G(V, t, Z, Y) | |
} | |
} | |
function p() { | |
m(j) | |
} | |
function H() { | |
return m(S) | |
} | |
function d() { | |
return m(E) | |
} | |
function C(Y) { | |
var V = this[h], | |
t = this[U], | |
X, | |
W; | |
if ((V.nodeType === 3 || V.nodeType === 4) && V.nodeValue) { | |
if (!t) { | |
V.parentNode.insertBefore(Y, V) | |
} else { | |
if (t >= V.nodeValue.length) { | |
c.insertAfter(Y, V) | |
} else { | |
X = V.splitText(t); | |
V.parentNode.insertBefore(Y, X) | |
} | |
} | |
} else { | |
if (V.childNodes.length > 0) { | |
W = V.childNodes[t] | |
} | |
if (W) { | |
V.insertBefore(Y, W) | |
} else { | |
V.appendChild(Y) | |
} | |
} | |
} | |
function M(V) { | |
var t = N.extractContents(); | |
N.insertNode(V); | |
V.appendChild(t); | |
N.selectNode(V) | |
} | |
function K() { | |
return k(new b(c), { | |
startContainer: N[h], | |
startOffset: N[U], | |
endContainer: N[P], | |
endOffset: N[z], | |
collapsed: N.collapsed, | |
commonAncestorContainer: N.commonAncestorContainer | |
}) | |
} | |
function O(t, V) { | |
var W; | |
if (t.nodeType == 3) { | |
return t | |
} | |
if (V < 0) { | |
return t | |
} | |
W = t.firstChild; | |
while (W && V > 0) {--V; | |
W = W.nextSibling | |
} | |
if (W) { | |
return W | |
} | |
return t | |
} | |
function l() { | |
return (N[h] == N[P] && N[U] == N[z]) | |
} | |
function G(X, Z, V, Y) { | |
var aa, | |
W, | |
t, | |
ab, | |
ad, | |
ac; | |
if (X == V) { | |
if (Z == Y) { | |
return 0 | |
} | |
if (Z < Y) { | |
return - 1 | |
} | |
return 1 | |
} | |
aa = V; | |
while (aa && aa.parentNode != X) { | |
aa = aa.parentNode | |
} | |
if (aa) { | |
W = 0; | |
t = X.firstChild; | |
while (t != aa && W < Z) { | |
W++; | |
t = t.nextSibling | |
} | |
if (Z <= W) { | |
return - 1 | |
} | |
return 1 | |
} | |
aa = X; | |
while (aa && aa.parentNode != V) { | |
aa = aa.parentNode | |
} | |
if (aa) { | |
W = 0; | |
t = V.firstChild; | |
while (t != aa && W < Y) { | |
W++; | |
t = t.nextSibling | |
} | |
if (W < Y) { | |
return - 1 | |
} | |
return 1 | |
} | |
ab = c.findCommonAncestor(X, V); | |
ad = X; | |
while (ad && ad.parentNode != ab) { | |
ad = ad.parentNode | |
} | |
if (!ad) { | |
ad = ab | |
} | |
ac = V; | |
while (ac && ac.parentNode != ab) { | |
ac = ac.parentNode | |
} | |
if (!ac) { | |
ac = ab | |
} | |
if (ad == ac) { | |
return 0 | |
} | |
t = ab.firstChild; | |
while (t) { | |
if (t == ad) { | |
return - 1 | |
} | |
if (t == ac) { | |
return 1 | |
} | |
t = t.nextSibling | |
} | |
} | |
function B(V, Y, X) { | |
var t, | |
W; | |
if (V) { | |
N[h] = Y; | |
N[U] = X | |
} else { | |
N[P] = Y; | |
N[z] = X | |
} | |
t = N[P]; | |
while (t.parentNode) { | |
t = t.parentNode | |
} | |
W = N[h]; | |
while (W.parentNode) { | |
W = W.parentNode | |
} | |
if (W == t) { | |
if (G(N[h], N[U], N[P], N[z]) > 0) { | |
N.collapse(V) | |
} | |
} else { | |
N.collapse(V) | |
} | |
N.collapsed = l(); | |
N.commonAncestorContainer = c.findCommonAncestor(N[h], N[P]) | |
} | |
function m(ab) { | |
var aa, | |
X = 0, | |
ad = 0, | |
V, | |
Z, | |
W, | |
Y, | |
t, | |
ac; | |
if (N[h] == N[P]) { | |
return f(ab) | |
} | |
for (aa = N[P], V = aa.parentNode; V; aa = V, V = V.parentNode) { | |
if (V == N[h]) { | |
return r(aa, ab) | |
}++X | |
} | |
for (aa = N[h], V = aa.parentNode; V; aa = V, V = V.parentNode) { | |
if (V == N[P]) { | |
return T(aa, ab) | |
}++ad | |
} | |
Z = ad - X; | |
W = N[h]; | |
while (Z > 0) { | |
W = W.parentNode; | |
Z-- | |
} | |
Y = N[P]; | |
while (Z < 0) { | |
Y = Y.parentNode; | |
Z++ | |
} | |
for (t = W.parentNode, ac = Y.parentNode; t != ac; t = t.parentNode, ac = ac.parentNode) { | |
W = t; | |
Y = ac | |
} | |
return o(W, Y, ab) | |
} | |
function f(Z) { | |
var ab, | |
Y, | |
X, | |
aa, | |
t, | |
W, | |
V; | |
if (Z != j) { | |
ab = e.createDocumentFragment() | |
} | |
if (N[U] == N[z]) { | |
return ab | |
} | |
if (N[h].nodeType == 3) { | |
Y = N[h].nodeValue; | |
X = Y.substring(N[U], N[z]); | |
if (Z != E) { | |
N[h].deleteData(N[U], N[z] - N[U]); | |
N.collapse(D) | |
} | |
if (Z == j) { | |
return | |
} | |
ab.appendChild(e.createTextNode(X)); | |
return ab | |
} | |
aa = O(N[h], N[U]); | |
t = N[z] - N[U]; | |
while (t > 0) { | |
W = aa.nextSibling; | |
V = y(aa, Z); | |
if (ab) { | |
ab.appendChild(V) | |
}--t; | |
aa = W | |
} | |
if (Z != E) { | |
N.collapse(D) | |
} | |
return ab | |
} | |
function r(ab, Y) { | |
var aa, | |
Z, | |
V, | |
t, | |
X, | |
W; | |
if (Y != j) { | |
aa = e.createDocumentFragment() | |
} | |
Z = i(ab, Y); | |
if (aa) { | |
aa.appendChild(Z) | |
} | |
V = n(ab); | |
t = V - N[U]; | |
if (t <= 0) { | |
if (Y != E) { | |
N.setEndBefore(ab); | |
N.collapse(R) | |
} | |
return aa | |
} | |
Z = ab.previousSibling; | |
while (t > 0) { | |
X = Z.previousSibling; | |
W = y(Z, Y); | |
if (aa) { | |
aa.insertBefore(W, aa.firstChild) | |
}--t; | |
Z = X | |
} | |
if (Y != E) { | |
N.setEndBefore(ab); | |
N.collapse(R) | |
} | |
return aa | |
} | |
function T(Z, Y) { | |
var ab, | |
V, | |
aa, | |
t, | |
X, | |
W; | |
if (Y != j) { | |
ab = e.createDocumentFragment() | |
} | |
aa = Q(Z, Y); | |
if (ab) { | |
ab.appendChild(aa) | |
} | |
V = n(Z); ++V; | |
t = N[z] - V; | |
aa = Z.nextSibling; | |
while (t > 0) { | |
X = aa.nextSibling; | |
W = y(aa, Y); | |
if (ab) { | |
ab.appendChild(W) | |
}--t; | |
aa = X | |
} | |
if (Y != E) { | |
N.setStartAfter(Z); | |
N.collapse(D) | |
} | |
return ab | |
} | |
function o(Z, t, ac) { | |
var W, | |
ae, | |
Y, | |
aa, | |
ab, | |
V, | |
ad, | |
X; | |
if (ac != j) { | |
ae = e.createDocumentFragment() | |
} | |
W = Q(Z, ac); | |
if (ae) { | |
ae.appendChild(W) | |
} | |
Y = Z.parentNode; | |
aa = n(Z); | |
ab = n(t); ++aa; | |
V = ab - aa; | |
ad = Z.nextSibling; | |
while (V > 0) { | |
X = ad.nextSibling; | |
W = y(ad, ac); | |
if (ae) { | |
ae.appendChild(W) | |
} | |
ad = X; --V | |
} | |
W = i(t, ac); | |
if (ae) { | |
ae.appendChild(W) | |
} | |
if (ac != E) { | |
N.setStartAfter(Z); | |
N.collapse(D) | |
} | |
return ae | |
} | |
function i(aa, ab) { | |
var W = O(N[P], N[z] - 1), | |
ac, | |
Z, | |
Y, | |
t, | |
V, | |
X = W != N[P]; | |
if (W == aa) { | |
return L(W, X, R, ab) | |
} | |
ac = W.parentNode; | |
Z = L(ac, R, R, ab); | |
while (ac) { | |
while (W) { | |
Y = W.previousSibling; | |
t = L(W, X, R, ab); | |
if (ab != j) { | |
Z.insertBefore(t, Z.firstChild) | |
} | |
X = D; | |
W = Y | |
} | |
if (ac == aa) { | |
return Z | |
} | |
W = ac.previousSibling; | |
ac = ac.parentNode; | |
V = L(ac, R, R, ab); | |
if (ab != j) { | |
V.appendChild(Z) | |
} | |
Z = V | |
} | |
} | |
function Q(aa, ab) { | |
var X = O(N[h], N[U]), | |
Y = X != N[h], | |
ac, | |
Z, | |
W, | |
t, | |
V; | |
if (X == aa) { | |
return L(X, Y, D, ab) | |
} | |
ac = X.parentNode; | |
Z = L(ac, R, D, ab); | |
while (ac) { | |
while (X) { | |
W = X.nextSibling; | |
t = L(X, Y, D, ab); | |
if (ab != j) { | |
Z.appendChild(t) | |
} | |
Y = D; | |
X = W | |
} | |
if (ac == aa) { | |
return Z | |
} | |
X = ac.nextSibling; | |
ac = ac.parentNode; | |
V = L(ac, R, D, ab); | |
if (ab != j) { | |
V.appendChild(Z) | |
} | |
Z = V | |
} | |
} | |
function L(t, Y, ab, ac) { | |
var X, | |
W, | |
Z, | |
V, | |
aa; | |
if (Y) { | |
return y(t, ac) | |
} | |
if (t.nodeType == 3) { | |
X = t.nodeValue; | |
if (ab) { | |
V = N[U]; | |
W = X.substring(V); | |
Z = X.substring(0, V) | |
} else { | |
V = N[z]; | |
W = X.substring(0, V); | |
Z = X.substring(V) | |
} | |
if (ac != E) { | |
t.nodeValue = Z | |
} | |
if (ac == j) { | |
return | |
} | |
aa = t.cloneNode(R); | |
aa.nodeValue = W; | |
return aa | |
} | |
if (ac == j) { | |
return | |
} | |
return t.cloneNode(R) | |
} | |
function y(V, t) { | |
if (t != j) { | |
return t == E ? V.cloneNode(D) : V | |
} | |
V.parentNode.removeChild(V) | |
} | |
} | |
a.Range = b | |
})(tinymce.dom); (function() { | |
function a(h) { | |
var j = this, | |
k = "\uFEFF", | |
f, | |
i, | |
e = h.dom, | |
d = true, | |
g = false; | |
function c(m, l) { | |
if (m && l) { | |
if (m.item && l.item && m.item(0) === l.item(0)) { | |
return d | |
} | |
if (m.isEqual && l.isEqual && l.isEqual(m)) { | |
try { | |
f.startContainer.nextSibling; | |
return d | |
} catch(n) {} | |
} | |
} | |
return g | |
} | |
function b() { | |
var p = h.getRng(), | |
l = e.createRng(), | |
m, | |
n, | |
r, | |
q; | |
n = p.item ? p.item(0) : p.parentElement(); | |
if (n.ownerDocument != e.doc) { | |
return l | |
} | |
if (p.item || !n.hasChildNodes()) { | |
l.setStart(n.parentNode, e.nodeIndex(n)); | |
l.setEnd(l.startContainer, l.startOffset + 1); | |
return l | |
} | |
m = p.duplicate(); | |
r = h.isCollapsed(); | |
p.collapse(); | |
p.pasteHTML('<span id="_mce_start" style="display:none;line-height:0">' + k + "</span>"); | |
if (!r) { | |
m.collapse(g); | |
m.pasteHTML('<span id="_mce_end" style="display:none;line-height:0">' + k + "</span>") | |
} | |
function o(x) { | |
var t, | |
v, | |
s, | |
u; | |
s = e.get("_mce_" + (x ? "start": "end")); | |
u = s.previousSibling; | |
if (u && u.nodeType == 3) { | |
t = u; | |
v = t.nodeValue.length; | |
e.remove(s); | |
u = t.nextSibling; | |
if (u && u.nodeType == 3) { | |
q = d; | |
t.appendData(u.nodeValue); | |
e.remove(u) | |
} | |
} else { | |
u = s.nextSibling; | |
if (u && u.nodeType == 3) { | |
t = u; | |
v = 0 | |
} else { | |
if (u) { | |
v = e.nodeIndex(u) - 1 | |
} else { | |
v = e.nodeIndex(s) | |
} | |
t = s.parentNode | |
} | |
e.remove(s) | |
} | |
if (x) { | |
l.setStart(t, v) | |
} | |
if (!x || r) { | |
l.setEnd(t, v) | |
} | |
} | |
o(d); | |
if (!r) { | |
o(g) | |
} | |
if (q) { | |
j.addRange(l) | |
} | |
return l | |
} | |
this.addRange = function(m) { | |
var u, | |
A, | |
z = h.dom.doc, | |
s = z.body, | |
v, | |
o, | |
y, | |
p, | |
t, | |
l, | |
q, | |
r, | |
x, | |
n; | |
this.destroy(); | |
y = m.startContainer; | |
p = m.startOffset; | |
t = m.endContainer; | |
l = m.endOffset; | |
u = s.createTextRange(); | |
if (y == z || t == z) { | |
u = s.createTextRange(); | |
u.collapse(); | |
u.select(); | |
return | |
} | |
if (y.nodeType == 1 && y.hasChildNodes()) { | |
r = y.childNodes.length - 1; | |
if (p > r) { | |
x = 1; | |
y = y.childNodes[r] | |
} else { | |
y = y.childNodes[p] | |
} | |
if (y.nodeType == 3) { | |
p = 0 | |
} | |
} | |
if (t.nodeType == 1 && t.hasChildNodes()) { | |
r = t.childNodes.length - 1; | |
if (l == 0) { | |
n = 1; | |
t = t.childNodes[0] | |
} else { | |
t = t.childNodes[Math.min(r, l - 1)]; | |
if (t.nodeType == 3) { | |
l = t.nodeValue.length | |
} | |
} | |
} | |
if (y == t && y.nodeType == 1) { | |
if (/^(IMG|TABLE)$/.test(y.nodeName) && p != l) { | |
u = s.createControlRange(); | |
u.addElement(y) | |
} else { | |
u = s.createTextRange(); | |
if (!y.hasChildNodes() && y.canHaveHTML) { | |
y.innerHTML = k | |
} | |
u.moveToElementText(y); | |
if (y.innerHTML == k) { | |
u.collapse(d); | |
y.removeChild(y.firstChild) | |
} | |
} | |
if (p == l) { | |
u.collapse(l <= m.endContainer.childNodes.length - 1) | |
} | |
u.select(); | |
u.scrollIntoView(); | |
return | |
} | |
u = s.createTextRange(); | |
q = z.createElement("span"); | |
q.innerHTML = " "; | |
if (y.nodeType == 3) { | |
if (x) { | |
e.insertAfter(q, y) | |
} else { | |
y.parentNode.insertBefore(q, y) | |
} | |
u.moveToElementText(q); | |
q.parentNode.removeChild(q); | |
u.move("character", p) | |
} else { | |
u.moveToElementText(y); | |
if (x) { | |
u.collapse(g) | |
} | |
} | |
if (y == t && y.nodeType == 3) { | |
u.moveEnd("character", l - p); | |
u.select(); | |
u.scrollIntoView(); | |
return | |
} | |
A = s.createTextRange(); | |
if (t.nodeType == 3) { | |
t.parentNode.insertBefore(q, t); | |
A.moveToElementText(q); | |
q.parentNode.removeChild(q); | |
A.move("character", l); | |
u.setEndPoint("EndToStart", A) | |
} else { | |
A.moveToElementText(t); | |
A.collapse( !! n); | |
u.setEndPoint("EndToEnd", A) | |
} | |
u.select(); | |
u.scrollIntoView() | |
}; | |
this.getRangeAt = function() { | |
if (!f || !c(i, h.getRng())) { | |
f = b(); | |
i = h.getRng() | |
} | |
return f | |
}; | |
this.destroy = function() { | |
i = f = null | |
}; | |
if (h.dom.boxModel) { (function() { | |
var r = e.doc, | |
m = r.body, | |
o, | |
p; | |
r.documentElement.unselectable = d; | |
function q(s, v) { | |
var t = m.createTextRange(); | |
try { | |
t.moveToPoint(s, v) | |
} catch(u) { | |
t = null | |
} | |
return t | |
} | |
function n(t) { | |
var s; | |
if (t.button) { | |
s = q(t.x, t.y); | |
if (s) { | |
if (s.compareEndPoints("StartToStart", p) > 0) { | |
s.setEndPoint("StartToStart", p) | |
} else { | |
s.setEndPoint("EndToEnd", p) | |
} | |
s.select() | |
} | |
} else { | |
l() | |
} | |
} | |
function l() { | |
e.unbind(r, "mouseup", l); | |
e.unbind(r, "mousemove", n); | |
o = 0 | |
} | |
e.bind(r, "mousedown", | |
function(s) { | |
if (s.target.nodeName === "HTML") { | |
if (o) { | |
l() | |
} | |
o = 1; | |
p = q(s.x, s.y); | |
if (p) { | |
e.bind(r, "mouseup", l); | |
e.bind(r, "mousemove", n); | |
p.select() | |
} | |
} | |
}) | |
})() | |
} | |
} | |
tinymce.dom.TridentSelection = a | |
})(); (function() { | |
var p = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, | |
i = 0, | |
d = Object.prototype.toString, | |
n = false; | |
var b = function(E, t, B, v) { | |
B = B || []; | |
var e = t = t || document; | |
if (t.nodeType !== 1 && t.nodeType !== 9) { | |
return [] | |
} | |
if (!E || typeof E !== "string") { | |
return B | |
} | |
var C = [], | |
D, | |
z, | |
H, | |
G, | |
A, | |
s, | |
r = true, | |
x = o(t); | |
p.lastIndex = 0; | |
while ((D = p.exec(E)) !== null) { | |
C.push(D[1]); | |
if (D[2]) { | |
s = RegExp.rightContext; | |
break | |
} | |
} | |
if (C.length > 1 && j.exec(E)) { | |
if (C.length === 2 && f.relative[C[0]]) { | |
z = g(C[0] + C[1], t) | |
} else { | |
z = f.relative[C[0]] ? [t] : b(C.shift(), t); | |
while (C.length) { | |
E = C.shift(); | |
if (f.relative[E]) { | |
E += C.shift() | |
} | |
z = g(E, z) | |
} | |
} | |
} else { | |
if (!v && C.length > 1 && t.nodeType === 9 && !x && f.match.ID.test(C[0]) && !f.match.ID.test(C[C.length - 1])) { | |
var I = b.find(C.shift(), t, x); | |
t = I.expr ? b.filter(I.expr, I.set)[0] : I.set[0] | |
} | |
if (t) { | |
var I = v ? { | |
expr: C.pop(), | |
set: a(v) | |
}: b.find(C.pop(), C.length === 1 && (C[0] === "~" || C[0] === "+") && t.parentNode ? t.parentNode: t, x); | |
z = I.expr ? b.filter(I.expr, I.set) : I.set; | |
if (C.length > 0) { | |
H = a(z) | |
} else { | |
r = false | |
} | |
while (C.length) { | |
var u = C.pop(), | |
y = u; | |
if (!f.relative[u]) { | |
u = "" | |
} else { | |
y = C.pop() | |
} | |
if (y == null) { | |
y = t | |
} | |
f.relative[u](H, y, x) | |
} | |
} else { | |
H = C = [] | |
} | |
} | |
if (!H) { | |
H = z | |
} | |
if (!H) { | |
throw "Syntax error, unrecognized expression: " + (u || E) | |
} | |
if (d.call(H) === "[object Array]") { | |
if (!r) { | |
B.push.apply(B, H) | |
} else { | |
if (t && t.nodeType === 1) { | |
for (var F = 0; H[F] != null; F++) { | |
if (H[F] && (H[F] === true || H[F].nodeType === 1 && h(t, H[F]))) { | |
B.push(z[F]) | |
} | |
} | |
} else { | |
for (var F = 0; H[F] != null; F++) { | |
if (H[F] && H[F].nodeType === 1) { | |
B.push(z[F]) | |
} | |
} | |
} | |
} | |
} else { | |
a(H, B) | |
} | |
if (s) { | |
b(s, e, B, v); | |
b.uniqueSort(B) | |
} | |
return B | |
}; | |
b.uniqueSort = function(r) { | |
if (c) { | |
n = false; | |
r.sort(c); | |
if (n) { | |
for (var e = 1; e < r.length; e++) { | |
if (r[e] === r[e - 1]) { | |
r.splice(e--, 1) | |
} | |
} | |
} | |
} | |
}; | |
b.matches = function(e, r) { | |
return b(e, null, null, r) | |
}; | |
b.find = function(y, e, z) { | |
var x, | |
u; | |
if (!y) { | |
return [] | |
} | |
for (var t = 0, s = f.order.length; t < s; t++) { | |
var v = f.order[t], | |
u; | |
if ((u = f.match[v].exec(y))) { | |
var r = RegExp.leftContext; | |
if (r.substr(r.length - 1) !== "\\") { | |
u[1] = (u[1] || "").replace(/\\/g, ""); | |
x = f.find[v](u, e, z); | |
if (x != null) { | |
y = y.replace(f.match[v], ""); | |
break | |
} | |
} | |
} | |
} | |
if (!x) { | |
x = e.getElementsByTagName("*") | |
} | |
return { | |
set: x, | |
expr: y | |
} | |
}; | |
b.filter = function(B, A, E, t) { | |
var s = B, | |
G = [], | |
y = A, | |
v, | |
e, | |
x = A && A[0] && o(A[0]); | |
while (B && A.length) { | |
for (var z in f.filter) { | |
if ((v = f.match[z].exec(B)) != null) { | |
var r = f.filter[z], | |
F, | |
D; | |
e = false; | |
if (y == G) { | |
G = [] | |
} | |
if (f.preFilter[z]) { | |
v = f.preFilter[z](v, y, E, G, t, x); | |
if (!v) { | |
e = F = true | |
} else { | |
if (v === true) { | |
continue | |
} | |
} | |
} | |
if (v) { | |
for (var u = 0; (D = y[u]) != null; u++) { | |
if (D) { | |
F = r(D, v, u, y); | |
var C = t ^ !!F; | |
if (E && F != null) { | |
if (C) { | |
e = true | |
} else { | |
y[u] = false | |
} | |
} else { | |
if (C) { | |
G.push(D); | |
e = true | |
} | |
} | |
} | |
} | |
} | |
if (F !== undefined) { | |
if (!E) { | |
y = G | |
} | |
B = B.replace(f.match[z], ""); | |
if (!e) { | |
return [] | |
} | |
break | |
} | |
} | |
} | |
if (B == s) { | |
if (e == null) { | |
throw "Syntax error, unrecognized expression: " + B | |
} else { | |
break | |
} | |
} | |
s = B | |
} | |
return y | |
}; | |
var f = b.selectors = { | |
order: ["ID", "NAME", "TAG"], | |
match: { | |
ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, | |
CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, | |
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/, | |
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, | |
TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/, | |
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, | |
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, | |
PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ | |
}, | |
attrMap: { | |
"class": "className", | |
"for": "htmlFor" | |
}, | |
attrHandle: { | |
href: function(e) { | |
return e.getAttribute("href") | |
} | |
}, | |
relative: { | |
"+": function(y, e, x) { | |
var u = typeof e === "string", | |
z = u && !/\W/.test(e), | |
v = u && !z; | |
if (z && !x) { | |
e = e.toUpperCase() | |
} | |
for (var t = 0, s = y.length, r; t < s; t++) { | |
if ((r = y[t])) { | |
while ((r = r.previousSibling) && r.nodeType !== 1) {} | |
y[t] = v || r && r.nodeName === e ? r || false: r === e | |
} | |
} | |
if (v) { | |
b.filter(e, y, true) | |
} | |
}, | |
">": function(x, r, y) { | |
var u = typeof r === "string"; | |
if (u && !/\W/.test(r)) { | |
r = y ? r: r.toUpperCase(); | |
for (var s = 0, e = x.length; s < e; s++) { | |
var v = x[s]; | |
if (v) { | |
var t = v.parentNode; | |
x[s] = t.nodeName === r ? t: false | |
} | |
} | |
} else { | |
for (var s = 0, e = x.length; s < e; s++) { | |
var v = x[s]; | |
if (v) { | |
x[s] = u ? v.parentNode: v.parentNode === r | |
} | |
} | |
if (u) { | |
b.filter(r, x, true) | |
} | |
} | |
}, | |
"": function(t, r, v) { | |
var s = i++, | |
e = q; | |
if (!r.match(/\W/)) { | |
var u = r = v ? r: r.toUpperCase(); | |
e = m | |
} | |
e("parentNode", r, s, t, u, v) | |
}, | |
"~": function(t, r, v) { | |
var s = i++, | |
e = q; | |
if (typeof r === "string" && !r.match(/\W/)) { | |
var u = r = v ? r: r.toUpperCase(); | |
e = m | |
} | |
e("previousSibling", r, s, t, u, v) | |
} | |
}, | |
find: { | |
ID: function(r, s, t) { | |
if (typeof s.getElementById !== "undefined" && !t) { | |
var e = s.getElementById(r[1]); | |
return e ? [e] : [] | |
} | |
}, | |
NAME: function(s, v, x) { | |
if (typeof v.getElementsByName !== "undefined") { | |
var r = [], | |
u = v.getElementsByName(s[1]); | |
for (var t = 0, e = u.length; t < e; t++) { | |
if (u[t].getAttribute("name") === s[1]) { | |
r.push(u[t]) | |
} | |
} | |
return r.length === 0 ? null: r | |
} | |
}, | |
TAG: function(e, r) { | |
return r.getElementsByTagName(e[1]) | |
} | |
}, | |
preFilter: { | |
CLASS: function(t, r, s, e, x, y) { | |
t = " " + t[1].replace(/\\/g, "") + " "; | |
if (y) { | |
return t | |
} | |
for (var u = 0, v; (v = r[u]) != null; u++) { | |
if (v) { | |
if (x ^ (v.className && (" " + v.className + " ").indexOf(t) >= 0)) { | |
if (!s) { | |
e.push(v) | |
} | |
} else { | |
if (s) { | |
r[u] = false | |
} | |
} | |
} | |
} | |
return false | |
}, | |
ID: function(e) { | |
return e[1].replace(/\\/g, "") | |
}, | |
TAG: function(r, e) { | |
for (var s = 0; e[s] === false; s++) {} | |
return e[s] && o(e[s]) ? r[1] : r[1].toUpperCase() | |
}, | |
CHILD: function(e) { | |
if (e[1] == "nth") { | |
var r = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2] == "even" && "2n" || e[2] == "odd" && "2n+1" || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]); | |
e[2] = (r[1] + (r[2] || 1)) - 0; | |
e[3] = r[3] - 0 | |
} | |
e[0] = i++; | |
return e | |
}, | |
ATTR: function(u, r, s, e, v, x) { | |
var t = u[1].replace(/\\/g, ""); | |
if (!x && f.attrMap[t]) { | |
u[1] = f.attrMap[t] | |
} | |
if (u[2] === "~=") { | |
u[4] = " " + u[4] + " " | |
} | |
return u | |
}, | |
PSEUDO: function(u, r, s, e, v) { | |
if (u[1] === "not") { | |
if (u[3].match(p).length > 1 || /^\w/.test(u[3])) { | |
u[3] = b(u[3], null, null, r) | |
} else { | |
var t = b.filter(u[3], r, s, true ^ v); | |
if (!s) { | |
e.push.apply(e, t) | |
} | |
return false | |
} | |
} else { | |
if (f.match.POS.test(u[0]) || f.match.CHILD.test(u[0])) { | |
return true | |
} | |
} | |
return u | |
}, | |
POS: function(e) { | |
e.unshift(true); | |
return e | |
} | |
}, | |
filters: { | |
enabled: function(e) { | |
return e.disabled === false && e.type !== "hidden" | |
}, | |
disabled: function(e) { | |
return e.disabled === true | |
}, | |
checked: function(e) { | |
return e.checked === true | |
}, | |
selected: function(e) { | |
e.parentNode.selectedIndex; | |
return e.selected === true | |
}, | |
parent: function(e) { | |
return !! e.firstChild | |
}, | |
empty: function(e) { | |
return ! e.firstChild | |
}, | |
has: function(s, r, e) { | |
return !! b(e[3], s).length | |
}, | |
header: function(e) { | |
return /h\d/i.test(e.nodeName) | |
}, | |
text: function(e) { | |
return "text" === e.type | |
}, | |
radio: function(e) { | |
return "radio" === e.type | |
}, | |
checkbox: function(e) { | |
return "checkbox" === e.type | |
}, | |
file: function(e) { | |
return "file" === e.type | |
}, | |
password: function(e) { | |
return "password" === e.type | |
}, | |
submit: function(e) { | |
return "submit" === e.type | |
}, | |
image: function(e) { | |
return "image" === e.type | |
}, | |
reset: function(e) { | |
return "reset" === e.type | |
}, | |
button: function(e) { | |
return "button" === e.type || e.nodeName.toUpperCase() === "BUTTON" | |
}, | |
input: function(e) { | |
return /input|select|textarea|button/i.test(e.nodeName) | |
} | |
}, | |
setFilters: { | |
first: function(r, e) { | |
return e === 0 | |
}, | |
last: function(s, r, e, t) { | |
return r === t.length - 1 | |
}, | |
even: function(r, e) { | |
return e % 2 === 0 | |
}, | |
odd: function(r, e) { | |
return e % 2 === 1 | |
}, | |
lt: function(s, r, e) { | |
return r < e[3] - 0 | |
}, | |
gt: function(s, r, e) { | |
return r > e[3] - 0 | |
}, | |
nth: function(s, r, e) { | |
return e[3] - 0 == r | |
}, | |
eq: function(s, r, e) { | |
return e[3] - 0 == r | |
} | |
}, | |
filter: { | |
PSEUDO: function(x, s, t, y) { | |
var r = s[1], | |
u = f.filters[r]; | |
if (u) { | |
return u(x, t, s, y) | |
} else { | |
if (r === "contains") { | |
return (x.textContent || x.innerText || "").indexOf(s[3]) >= 0 | |
} else { | |
if (r === "not") { | |
var v = s[3]; | |
for (var t = 0, e = v.length; t < e; t++) { | |
if (v[t] === x) { | |
return false | |
} | |
} | |
return true | |
} | |
} | |
} | |
}, | |
CHILD: function(e, t) { | |
var x = t[1], | |
r = e; | |
switch (x) { | |
case "only": | |
case "first": | |
while (r = r.previousSibling) { | |
if (r.nodeType === 1) { | |
return false | |
} | |
} | |
if (x == "first") { | |
return true | |
} | |
r = e; | |
case "last": | |
while (r = r.nextSibling) { | |
if (r.nodeType === 1) { | |
return false | |
} | |
} | |
return true; | |
case "nth": | |
var s = t[2], | |
A = t[3]; | |
if (s == 1 && A == 0) { | |
return true | |
} | |
var v = t[0], | |
z = e.parentNode; | |
if (z && (z.sizcache !== v || !e.nodeIndex)) { | |
var u = 0; | |
for (r = z.firstChild; r; r = r.nextSibling) { | |
if (r.nodeType === 1) { | |
r.nodeIndex = ++u | |
} | |
} | |
z.sizcache = v | |
} | |
var y = e.nodeIndex - A; | |
if (s == 0) { | |
return y == 0 | |
} else { | |
return (y % s == 0 && y / s >= 0) | |
} | |
} | |
}, | |
ID: function(r, e) { | |
return r.nodeType === 1 && r.getAttribute("id") === e | |
}, | |
TAG: function(r, e) { | |
return (e === "*" && r.nodeType === 1) || r.nodeName === e | |
}, | |
CLASS: function(r, e) { | |
return (" " + (r.className || r.getAttribute("class")) + " ").indexOf(e) > -1 | |
}, | |
ATTR: function(v, t) { | |
var s = t[1], | |
e = f.attrHandle[s] ? f.attrHandle[s](v) : v[s] != null ? v[s] : v.getAttribute(s), | |
x = e + "", | |
u = t[2], | |
r = t[4]; | |
return e == null ? u === "!=": u === "=" ? x === r: u === "*=" ? x.indexOf(r) >= 0: u === "~=" ? (" " + x + " ").indexOf(r) >= 0: !r ? x && e !== false: u === "!=" ? x != r: u === "^=" ? x.indexOf(r) === 0: u === "$=" ? x.substr(x.length - r.length) === r: u === "|=" ? x === r || x.substr(0, r.length + 1) === r + "-": false | |
}, | |
POS: function(u, r, s, v) { | |
var e = r[2], | |
t = f.setFilters[e]; | |
if (t) { | |
return t(u, s, r, v) | |
} | |
} | |
} | |
}; | |
var j = f.match.POS; | |
for (var l in f.match) { | |
f.match[l] = new RegExp(f.match[l].source + /(?![^\[]*\])(?![^\(]*\))/.source) | |
} | |
var a = function(r, e) { | |
r = Array.prototype.slice.call(r); | |
if (e) { | |
e.push.apply(e, r); | |
return e | |
} | |
return r | |
}; | |
try { | |
Array.prototype.slice.call(document.documentElement.childNodes) | |
} catch(k) { | |
a = function(u, t) { | |
var r = t || []; | |
if (d.call(u) === "[object Array]") { | |
Array.prototype.push.apply(r, u) | |
} else { | |
if (typeof u.length === "number") { | |
for (var s = 0, e = u.length; s < e; s++) { | |
r.push(u[s]) | |
} | |
} else { | |
for (var s = 0; u[s]; s++) { | |
r.push(u[s]) | |
} | |
} | |
} | |
return r | |
} | |
} | |
var c; | |
if (document.documentElement.compareDocumentPosition) { | |
c = function(r, e) { | |
var s = r.compareDocumentPosition(e) & 4 ? -1: r === e ? 0: 1; | |
if (s === 0) { | |
n = true | |
} | |
return s | |
} | |
} else { | |
if ("sourceIndex" in document.documentElement) { | |
c = function(r, e) { | |
var s = r.sourceIndex - e.sourceIndex; | |
if (s === 0) { | |
n = true | |
} | |
return s | |
} | |
} else { | |
if (document.createRange) { | |
c = function(t, r) { | |
var s = t.ownerDocument.createRange(), | |
e = r.ownerDocument.createRange(); | |
s.setStart(t, 0); | |
s.setEnd(t, 0); | |
e.setStart(r, 0); | |
e.setEnd(r, 0); | |
var u = s.compareBoundaryPoints(Range.START_TO_END, e); | |
if (u === 0) { | |
n = true | |
} | |
return u | |
} | |
} | |
} | |
} (function() { | |
var r = document.createElement("div"), | |
s = "script" + (new Date).getTime(); | |
r.innerHTML = "<a name='" + s + "'/>"; | |
var e = document.documentElement; | |
e.insertBefore(r, e.firstChild); | |
if ( !! document.getElementById(s)) { | |
f.find.ID = function(u, v, x) { | |
if (typeof v.getElementById !== "undefined" && !x) { | |
var t = v.getElementById(u[1]); | |
return t ? t.id === u[1] || typeof t.getAttributeNode !== "undefined" && t.getAttributeNode("id").nodeValue === u[1] ? [t] : undefined: [] | |
} | |
}; | |
f.filter.ID = function(v, t) { | |
var u = typeof v.getAttributeNode !== "undefined" && v.getAttributeNode("id"); | |
return v.nodeType === 1 && u && u.nodeValue === t | |
} | |
} | |
e.removeChild(r) | |
})(); (function() { | |
var e = document.createElement("div"); | |
e.appendChild(document.createComment("")); | |
if (e.getElementsByTagName("*").length > 0) { | |
f.find.TAG = function(r, v) { | |
var u = v.getElementsByTagName(r[1]); | |
if (r[1] === "*") { | |
var t = []; | |
for (var s = 0; u[s]; s++) { | |
if (u[s].nodeType === 1) { | |
t.push(u[s]) | |
} | |
} | |
u = t | |
} | |
return u | |
} | |
} | |
e.innerHTML = "<a href='#'></a>"; | |
if (e.firstChild && typeof e.firstChild.getAttribute !== "undefined" && e.firstChild.getAttribute("href") !== "#") { | |
f.attrHandle.href = function(r) { | |
return r.getAttribute("href", 2) | |
} | |
} | |
})(); | |
if (document.querySelectorAll) { (function() { | |
var e = b, | |
s = document.createElement("div"); | |
s.innerHTML = "<p class='TEST'></p>"; | |
if (s.querySelectorAll && s.querySelectorAll(".TEST").length === 0) { | |
return | |
} | |
b = function(x, v, t, u) { | |
v = v || document; | |
if (!u && v.nodeType === 9 && !o(v)) { | |
try { | |
return a(v.querySelectorAll(x), t) | |
} catch(y) {} | |
} | |
return e(x, v, t, u) | |
}; | |
for (var r in e) { | |
b[r] = e[r] | |
} | |
})() | |
} | |
if (document.getElementsByClassName && document.documentElement.getElementsByClassName) { (function() { | |
var e = document.createElement("div"); | |
e.innerHTML = "<div class='test e'></div><div class='test'></div>"; | |
if (e.getElementsByClassName("e").length === 0) { | |
return | |
} | |
e.lastChild.className = "e"; | |
if (e.getElementsByClassName("e").length === 1) { | |
return | |
} | |
f.order.splice(1, 0, "CLASS"); | |
f.find.CLASS = function(r, s, t) { | |
if (typeof s.getElementsByClassName !== "undefined" && !t) { | |
return s.getElementsByClassName(r[1]) | |
} | |
} | |
})() | |
} | |
function m(r, x, v, B, y, A) { | |
var z = r == "previousSibling" && !A; | |
for (var t = 0, s = B.length; t < s; t++) { | |
var e = B[t]; | |
if (e) { | |
if (z && e.nodeType === 1) { | |
e.sizcache = v; | |
e.sizset = t | |
} | |
e = e[r]; | |
var u = false; | |
while (e) { | |
if (e.sizcache === v) { | |
u = B[e.sizset]; | |
break | |
} | |
if (e.nodeType === 1 && !A) { | |
e.sizcache = v; | |
e.sizset = t | |
} | |
if (e.nodeName === x) { | |
u = e; | |
break | |
} | |
e = e[r] | |
} | |
B[t] = u | |
} | |
} | |
} | |
function q(r, x, v, B, y, A) { | |
var z = r == "previousSibling" && !A; | |
for (var t = 0, s = B.length; t < s; t++) { | |
var e = B[t]; | |
if (e) { | |
if (z && e.nodeType === 1) { | |
e.sizcache = v; | |
e.sizset = t | |
} | |
e = e[r]; | |
var u = false; | |
while (e) { | |
if (e.sizcache === v) { | |
u = B[e.sizset]; | |
break | |
} | |
if (e.nodeType === 1) { | |
if (!A) { | |
e.sizcache = v; | |
e.sizset = t | |
} | |
if (typeof x !== "string") { | |
if (e === x) { | |
u = true; | |
break | |
} | |
} else { | |
if (b.filter(x, [e]).length > 0) { | |
u = e; | |
break | |
} | |
} | |
} | |
e = e[r] | |
} | |
B[t] = u | |
} | |
} | |
} | |
var h = document.compareDocumentPosition ? | |
function(r, e) { | |
return r.compareDocumentPosition(e) & 16 | |
}: function(r, e) { | |
return r !== e && (r.contains ? r.contains(e) : true) | |
}; | |
var o = function(e) { | |
return e.nodeType === 9 && e.documentElement.nodeName !== "HTML" || !!e.ownerDocument && e.ownerDocument.documentElement.nodeName !== "HTML" | |
}; | |
var g = function(e, y) { | |
var t = [], | |
u = "", | |
v, | |
s = y.nodeType ? [y] : y; | |
while ((v = f.match.PSEUDO.exec(e))) { | |
u += v[0]; | |
e = e.replace(f.match.PSEUDO, "") | |
} | |
e = f.relative[e] ? e + "*": e; | |
for (var x = 0, r = s.length; x < r; x++) { | |
b(e, s[x], t) | |
} | |
return b.filter(u, t) | |
}; | |
window.tinymce.dom.Sizzle = b | |
})(); (function(d) { | |
var f = d.each, | |
c = d.DOM, | |
b = d.isIE, | |
e = d.isWebKit, | |
a; | |
d.create("tinymce.dom.EventUtils", { | |
EventUtils: function() { | |
this.inits = []; | |
this.events = [] | |
}, | |
add: function(m, p, l, j) { | |
var g, | |
h = this, | |
i = h.events, | |
k; | |
if (p instanceof Array) { | |
k = []; | |
f(p, | |
function(o) { | |
k.push(h.add(m, o, l, j)) | |
}); | |
return k | |
} | |
if (m && m.hasOwnProperty && m instanceof Array) { | |
k = []; | |
f(m, | |
function(n) { | |
n = c.get(n); | |
k.push(h.add(n, p, l, j)) | |
}); | |
return k | |
} | |
m = c.get(m); | |
if (!m) { | |
return | |
} | |
g = function(n) { | |
if (h.disabled) { | |
return | |
} | |
n = n || window.event; | |
if (n && b) { | |
if (!n.target) { | |
n.target = n.srcElement | |
} | |
d.extend(n, h._stoppers) | |
} | |
if (!j) { | |
return l(n) | |
} | |
return l.call(j, n) | |
}; | |
if (p == "unload") { | |
d.unloads.unshift({ | |
func: g | |
}); | |
return g | |
} | |
if (p == "init") { | |
if (h.domLoaded) { | |
g() | |
} else { | |
h.inits.push(g) | |
} | |
return g | |
} | |
i.push({ | |
obj: m, | |
name: p, | |
func: l, | |
cfunc: g, | |
scope: j | |
}); | |
h._add(m, p, g); | |
return l | |
}, | |
remove: function(l, m, k) { | |
var h = this, | |
g = h.events, | |
i = false, | |
j; | |
if (l && l.hasOwnProperty && l instanceof Array) { | |
j = []; | |
f(l, | |
function(n) { | |
n = c.get(n); | |
j.push(h.remove(n, m, k)) | |
}); | |
return j | |
} | |
l = c.get(l); | |
f(g, | |
function(o, n) { | |
if (o.obj == l && o.name == m && (!k || (o.func == k || o.cfunc == k))) { | |
g.splice(n, 1); | |
h._remove(l, m, o.cfunc); | |
i = true; | |
return false | |
} | |
}); | |
return i | |
}, | |
clear: function(l) { | |
var j = this, | |
g = j.events, | |
h, | |
k; | |
if (l) { | |
l = c.get(l); | |
for (h = g.length - 1; h >= 0; h--) { | |
k = g[h]; | |
if (k.obj === l) { | |
j._remove(k.obj, k.name, k.cfunc); | |
k.obj = k.cfunc = null; | |
g.splice(h, 1) | |
} | |
} | |
} | |
}, | |
cancel: function(g) { | |
if (!g) { | |
return false | |
} | |
this.stop(g); | |
return this.prevent(g) | |
}, | |
stop: function(g) { | |
if (g.stopPropagation) { | |
g.stopPropagation() | |
} else { | |
g.cancelBubble = true | |
} | |
return false | |
}, | |
prevent: function(g) { | |
if (g.preventDefault) { | |
g.preventDefault() | |
} else { | |
g.returnValue = false | |
} | |
return false | |
}, | |
destroy: function() { | |
var g = this; | |
f(g.events, | |
function(j, h) { | |
g._remove(j.obj, j.name, j.cfunc); | |
j.obj = j.cfunc = null | |
}); | |
g.events = []; | |
g = null | |
}, | |
_add: function(h, i, g) { | |
if (h.attachEvent) { | |
h.attachEvent("on" + i, g) | |
} else { | |
if (h.addEventListener) { | |
h.addEventListener(i, g, false) | |
} else { | |
h["on" + i] = g | |
} | |
} | |
}, | |
_remove: function(i, j, h) { | |
if (i) { | |
try { | |
if (i.detachEvent) { | |
i.detachEvent("on" + j, h) | |
} else { | |
if (i.removeEventListener) { | |
i.removeEventListener(j, h, false) | |
} else { | |
i["on" + j] = null | |
} | |
} | |
} catch(g) {} | |
} | |
}, | |
_pageInit: function(h) { | |
var g = this; | |
if (g.domLoaded) { | |
return | |
} | |
g.domLoaded = true; | |
f(g.inits, | |
function(i) { | |
i() | |
}); | |
g.inits = [] | |
}, | |
_wait: function(i) { | |
var g = this, | |
h = i.document; | |
if (i.tinyMCE_GZ && tinyMCE_GZ.loaded) { | |
g.domLoaded = 1; | |
return | |
} | |
if (h.attachEvent) { | |
h.attachEvent("onreadystatechange", | |
function() { | |
if (h.readyState === "complete") { | |
h.detachEvent("onreadystatechange", arguments.callee); | |
g._pageInit(i) | |
} | |
}); | |
if (h.documentElement.doScroll && i == i.top) { (function() { | |
if (g.domLoaded) { | |
return | |
} | |
try { | |
h.documentElement.doScroll("left") | |
} catch(j) { | |
setTimeout(arguments.callee, 0); | |
return | |
} | |
g._pageInit(i) | |
})() | |
} | |
} else { | |
if (h.addEventListener) { | |
g._add(i, "DOMContentLoaded", | |
function() { | |
g._pageInit(i) | |
}) | |
} | |
} | |
g._add(i, "load", | |
function() { | |
g._pageInit(i) | |
}) | |
}, | |
_stoppers: { | |
preventDefault: function() { | |
this.returnValue = false | |
}, | |
stopPropagation: function() { | |
this.cancelBubble = true | |
} | |
} | |
}); | |
a = d.dom.Event = new d.dom.EventUtils(); | |
a._wait(window); | |
d.addUnload(function() { | |
a.destroy() | |
}) | |
})(tinymce); (function(a) { | |
a.dom.Element = function(f, d) { | |
var b = this, | |
e, | |
c; | |
b.settings = d = d || {}; | |
b.id = f; | |
b.dom = e = d.dom || a.DOM; | |
if (!a.isIE) { | |
c = e.get(b.id) | |
} | |
a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/), | |
function(g) { | |
b[g] = function() { | |
var h = [f], | |
j; | |
for (j = 0; j < arguments.length; j++) { | |
h.push(arguments[j]) | |
} | |
h = e[g].apply(e, h); | |
b.update(g); | |
return h | |
} | |
}); | |
a.extend(b, { | |
on: function(i, h, g) { | |
return a.dom.Event.add(b.id, i, h, g) | |
}, | |
getXY: function() { | |
return { | |
x: parseInt(b.getStyle("left")), | |
y: parseInt(b.getStyle("top")) | |
} | |
}, | |
getSize: function() { | |
var g = e.get(b.id); | |
return { | |
w: parseInt(b.getStyle("width") || g.clientWidth), | |
h: parseInt(b.getStyle("height") || g.clientHeight) | |
} | |
}, | |
moveTo: function(g, h) { | |
b.setStyles({ | |
left: g, | |
top: h | |
}) | |
}, | |
moveBy: function(g, i) { | |
var h = b.getXY(); | |
b.moveTo(h.x + g, h.y + i) | |
}, | |
resizeTo: function(g, i) { | |
b.setStyles({ | |
width: g, | |
height: i | |
}) | |
}, | |
resizeBy: function(g, j) { | |
var i = b.getSize(); | |
b.resizeTo(i.w + g, i.h + j) | |
}, | |
update: function(h) { | |
var g; | |
if (a.isIE6 && d.blocker) { | |
h = h || ""; | |
if (h.indexOf("get") === 0 || h.indexOf("has") === 0 || h.indexOf("is") === 0) { | |
return | |
} | |
if (h == "remove") { | |
e.remove(b.blocker); | |
return | |
} | |
if (!b.blocker) { | |
b.blocker = e.uniqueId(); | |
g = e.add(d.container || e.getRoot(), "iframe", { | |
id: b.blocker, | |
style: "position:absolute;", | |
frameBorder: 0, | |
src: 'javascript:""' | |
}); | |
e.setStyle(g, "opacity", 0) | |
} else { | |
g = e.get(b.blocker) | |
} | |
e.setStyles(g, { | |
left: b.getStyle("left", 1), | |
top: b.getStyle("top", 1), | |
width: b.getStyle("width", 1), | |
height: b.getStyle("height", 1), | |
display: b.getStyle("display", 1), | |
zIndex: parseInt(b.getStyle("zIndex", 1) || 0) - 1 | |
}) | |
} | |
} | |
}) | |
} | |
})(tinymce); (function(c) { | |
function e(f) { | |
return f.replace(/[\n\r]+/g, "") | |
} | |
var b = c.is, | |
a = c.isIE, | |
d = c.each; | |
c.create("tinymce.dom.Selection", { | |
Selection: function(i, h, g) { | |
var f = this; | |
f.dom = i; | |
f.win = h; | |
f.serializer = g; | |
d(["onBeforeSetContent", "onBeforeGetContent", "onSetContent", "onGetContent"], | |
function(j) { | |
f[j] = new c.util.Dispatcher(f) | |
}); | |
if (!f.win.getSelection) { | |
f.tridentSel = new c.dom.TridentSelection(f) | |
} | |
c.addUnload(f.destroy, f) | |
}, | |
getContent: function(g) { | |
var f = this, | |
h = f.getRng(), | |
l = f.dom.create("body"), | |
j = f.getSel(), | |
i, | |
k, | |
m; | |
g = g || {}; | |
i = k = ""; | |
g.get = true; | |
g.format = g.format || "html"; | |
f.onBeforeGetContent.dispatch(f, g); | |
if (g.format == "text") { | |
return f.isCollapsed() ? "": (h.text || (j.toString ? j.toString() : "")) | |
} | |
if (h.cloneContents) { | |
m = h.cloneContents(); | |
if (m) { | |
l.appendChild(m) | |
} | |
} else { | |
if (b(h.item) || b(h.htmlText)) { | |
l.innerHTML = h.item ? h.item(0).outerHTML: h.htmlText | |
} else { | |
l.innerHTML = h.toString() | |
} | |
} | |
if (/^\s/.test(l.innerHTML)) { | |
i = " " | |
} | |
if (/\s+$/.test(l.innerHTML)) { | |
k = " " | |
} | |
g.getInner = true; | |
g.content = f.isCollapsed() ? "": i + f.serializer.serialize(l, g) + k; | |
f.onGetContent.dispatch(f, g); | |
return g.content | |
}, | |
setContent: function(i, g) { | |
var f = this, | |
j = f.getRng(), | |
l, | |
k = f.win.document; | |
g = g || { | |
format: "html" | |
}; | |
g.set = true; | |
i = g.content = f.dom.processHTML(i); | |
f.onBeforeSetContent.dispatch(f, g); | |
i = g.content; | |
if (j.insertNode) { | |
i += '<span id="__caret">_</span>'; | |
if (j.startContainer == k && j.endContainer == k) { | |
k.body.innerHTML = i | |
} else { | |
j.deleteContents(); | |
j.insertNode(f.getRng().createContextualFragment(i)) | |
} | |
l = f.dom.get("__caret"); | |
j = k.createRange(); | |
j.setStartBefore(l); | |
j.setEndBefore(l); | |
f.setRng(j); | |
f.dom.remove("__caret") | |
} else { | |
if (j.item) { | |
k.execCommand("Delete", false, null); | |
j = f.getRng() | |
} | |
j.pasteHTML(i) | |
} | |
f.onSetContent.dispatch(f, g) | |
}, | |
getStart: function() { | |
var f = this, | |
g = f.getRng(), | |
h; | |
if (g.duplicate || g.item) { | |
if (g.item) { | |
return g.item(0) | |
} | |
g = g.duplicate(); | |
g.collapse(1); | |
h = g.parentElement(); | |
if (h && h.nodeName == "BODY") { | |
return h.firstChild || h | |
} | |
return h | |
} else { | |
h = g.startContainer; | |
if (h.nodeType == 1 && h.hasChildNodes()) { | |
h = h.childNodes[Math.min(h.childNodes.length - 1, g.startOffset)] | |
} | |
if (h && h.nodeType == 3) { | |
return h.parentNode | |
} | |
return h | |
} | |
}, | |
getEnd: function() { | |
var g = this, | |
h = g.getRng(), | |
i, | |
f; | |
if (h.duplicate || h.item) { | |
if (h.item) { | |
return h.item(0) | |
} | |
h = h.duplicate(); | |
h.collapse(0); | |
i = h.parentElement(); | |
if (i && i.nodeName == "BODY") { | |
return i.lastChild || i | |
} | |
return i | |
} else { | |
i = h.endContainer; | |
f = h.endOffset; | |
if (i.nodeType == 1 && i.hasChildNodes()) { | |
i = i.childNodes[f > 0 ? f - 1: f] | |
} | |
if (i && i.nodeType == 3) { | |
return i.parentNode | |
} | |
return i | |
} | |
}, | |
getBookmark: function(q, r) { | |
var u = this, | |
m = u.dom, | |
g, | |
j, | |
i, | |
n, | |
h, | |
o, | |
p, | |
l = "\uFEFF", | |
s; | |
function f(v, x) { | |
var t = 0; | |
d(m.select(v), | |
function(z, y) { | |
if (z == x) { | |
t = y | |
} | |
}); | |
return t | |
} | |
if (q == 2) { | |
function k() { | |
var v = u.getRng(true), | |
t = m.getRoot(), | |
x = {}; | |
function y(B, G) { | |
var A = B[G ? "startContainer": "endContainer"], | |
F = B[G ? "startOffset": "endOffset"], | |
z = [], | |
C, | |
E, | |
D = 0; | |
if (A.nodeType == 3) { | |
if (r) { | |
for (C = A.previousSibling; C && C.nodeType == 3; C = C.previousSibling) { | |
F += C.nodeValue.length | |
} | |
} | |
z.push(F) | |
} else { | |
E = A.childNodes; | |
if (F >= E.length) { | |
D = 1; | |
F = E.length - 1 | |
} | |
z.push(u.dom.nodeIndex(E[F], r) + D) | |
} | |
for (; A && A != t; A = A.parentNode) { | |
z.push(u.dom.nodeIndex(A, r)) | |
} | |
return z | |
} | |
x.start = y(v, true); | |
if (!u.isCollapsed()) { | |
x.end = y(v) | |
} | |
return x | |
} | |
return k() | |
} | |
if (q) { | |
return { | |
rng: u.getRng() | |
} | |
} | |
g = u.getRng(); | |
i = m.uniqueId(); | |
n = tinyMCE.activeEditor.selection.isCollapsed(); | |
s = "overflow:hidden;line-height:0px"; | |
if (g.duplicate || g.item) { | |
if (!g.item) { | |
j = g.duplicate(); | |
g.collapse(); | |
g.pasteHTML('<span _mce_type="bookmark" id="' + i + '_start" style="' + s + '">' + l + "</span>"); | |
if (!n) { | |
j.collapse(false); | |
j.pasteHTML('<span _mce_type="bookmark" id="' + i + '_end" style="' + s + '">' + l + "</span>") | |
} | |
} else { | |
o = g.item(0); | |
h = o.nodeName; | |
return { | |
name: h, | |
index: f(h, o) | |
} | |
} | |
} else { | |
o = u.getNode(); | |
h = o.nodeName; | |
if (h == "IMG") { | |
return { | |
name: h, | |
index: f(h, o) | |
} | |
} | |
j = g.cloneRange(); | |
if (!n) { | |
j.collapse(false); | |
j.insertNode(m.create("span", { | |
_mce_type: "bookmark", | |
id: i + "_end", | |
style: s | |
}, | |
l)) | |
} | |
g.collapse(true); | |
g.insertNode(m.create("span", { | |
_mce_type: "bookmark", | |
id: i + "_start", | |
style: s | |
}, | |
l)) | |
} | |
u.moveToBookmark({ | |
id: i, | |
keep: 1 | |
}); | |
return { | |
id: i | |
} | |
}, | |
moveToBookmark: function(l) { | |
var n = this, | |
k = n.dom, | |
i, | |
h, | |
f, | |
m; | |
if (n.tridentSel) { | |
n.tridentSel.destroy() | |
} | |
if (l) { | |
if (l.start) { | |
f = k.createRng(); | |
m = k.getRoot(); | |
function g(s) { | |
var o = l[s ? "start": "end"], | |
p, | |
q, | |
r; | |
if (o) { | |
for (q = m, p = o.length - 1; p >= 1; p--) { | |
q = q.childNodes[o[p]] | |
} | |
if (s) { | |
f.setStart(q, o[0]) | |
} else { | |
f.setEnd(q, o[0]) | |
} | |
} | |
} | |
g(true); | |
g(); | |
n.setRng(f) | |
} else { | |
if (l.id) { | |
f = k.createRng(); | |
function j(u) { | |
var p = k.get(l.id + "_" + u), | |
t, | |
o, | |
r, | |
s, | |
q = l.keep; | |
if (p) { | |
t = p.parentNode; | |
if (u == "start") { | |
if (!q) { | |
o = k.nodeIndex(p) | |
} else { | |
t = p; | |
o = 1 | |
} | |
f.setStart(t, o); | |
f.setEnd(t, o) | |
} else { | |
if (!q) { | |
o = k.nodeIndex(p) | |
} else { | |
t = p; | |
o = 1 | |
} | |
f.setEnd(t, o) | |
} | |
if (!q) { | |
s = p.previousSibling; | |
r = p.nextSibling; | |
d(c.grep(p.childNodes), | |
function(v) { | |
if (v.nodeType == 3) { | |
v.nodeValue = v.nodeValue.replace(/\uFEFF/g, "") | |
} | |
}); | |
while (p = k.get(l.id + "_" + u)) { | |
k.remove(p, 1) | |
} | |
if (s && r && s.nodeType == r.nodeType && s.nodeType == 3) { | |
o = s.nodeValue.length; | |
s.appendData(r.nodeValue); | |
k.remove(r); | |
if (u == "start") { | |
f.setStart(s, o); | |
f.setEnd(s, o) | |
} else { | |
f.setEnd(s, o) | |
} | |
} | |
} | |
} | |
} | |
j("start"); | |
j("end"); | |
n.setRng(f) | |
} else { | |
if (l.name) { | |
n.select(k.select(l.name)[l.index]) | |
} else { | |
if (l.rng) { | |
n.setRng(l.rng) | |
} | |
} | |
} | |
} | |
} | |
}, | |
select: function(k, j) { | |
var i = this, | |
l = i.dom, | |
g = l.createRng(), | |
f; | |
f = l.nodeIndex(k); | |
g.setStart(k.parentNode, f); | |
g.setEnd(k.parentNode, f + 1); | |
if (j) { | |
function h(m, o) { | |
var n = new c.dom.TreeWalker(m, m); | |
do { | |
if (m.nodeType == 3 && c.trim(m.nodeValue).length != 0) { | |
if (o) { | |
g.setStart(m, 0) | |
} else { | |
g.setEnd(m, m.nodeValue.length) | |
} | |
return | |
} | |
if (m.nodeName == "BR") { | |
if (o) { | |
g.setStartBefore(m) | |
} else { | |
g.setEndBefore(m) | |
} | |
return | |
} | |
} | |
while (m = (o ? n.next() : n.prev())) | |
} | |
h(k, 1); | |
h(k) | |
} | |
i.setRng(g); | |
return k | |
}, | |
isCollapsed: function() { | |
var f = this, | |
h = f.getRng(), | |
g = f.getSel(); | |
if (!h || h.item) { | |
return false | |
} | |
if (h.compareEndPoints) { | |
return h.compareEndPoints("StartToEnd", h) === 0 | |
} | |
return ! g || h.collapsed | |
}, | |
collapse: function(f) { | |
var g = this, | |
h = g.getRng(), | |
i; | |
if (h.item) { | |
i = h.item(0); | |
h = this.win.document.body.createTextRange(); | |
h.moveToElementText(i) | |
} | |
h.collapse( !! f); | |
g.setRng(h) | |
}, | |
getSel: function() { | |
var g = this, | |
f = this.win; | |
return f.getSelection ? f.getSelection() : f.document.selection | |
}, | |
getRng: function(j) { | |
var g = this, | |
h, | |
i; | |
if (j && g.tridentSel) { | |
return g.tridentSel.getRangeAt(0) | |
} | |
try { | |
if (h = g.getSel()) { | |
i = h.rangeCount > 0 ? h.getRangeAt(0) : (h.createRange ? h.createRange() : g.win.document.createRange()) | |
} | |
} catch(f) {} | |
if (!i) { | |
i = g.win.document.createRange ? g.win.document.createRange() : g.win.document.body.createTextRange() | |
} | |
return i | |
}, | |
setRng: function(i) { | |
var h, | |
g = this; | |
if (!g.tridentSel) { | |
h = g.getSel(); | |
if (h) { | |
h.removeAllRanges(); | |
h.addRange(i) | |
} | |
} else { | |
if (i.cloneRange) { | |
g.tridentSel.addRange(i); | |
return | |
} | |
try { | |
i.select() | |
} catch(f) {} | |
} | |
}, | |
setNode: function(g) { | |
var f = this; | |
f.setContent(f.dom.getOuterHTML(g)); | |
return g | |
}, | |
getNode: function() { | |
var g = this, | |
f = g.getRng(), | |
h = g.getSel(), | |
i; | |
if (f.setStart) { | |
if (!f) { | |
return g.dom.getRoot() | |
} | |
i = f.commonAncestorContainer; | |
if (!f.collapsed) { | |
if (f.startContainer == f.endContainer) { | |
if (f.startOffset - f.endOffset < 2) { | |
if (f.startContainer.hasChildNodes()) { | |
i = f.startContainer.childNodes[f.startOffset] | |
} | |
} | |
} | |
if (c.isWebKit && h.anchorNode && h.anchorNode.nodeType == 1) { | |
return h.anchorNode.childNodes[h.anchorOffset] | |
} | |
} | |
if (i && i.nodeType == 3) { | |
return i.parentNode | |
} | |
return i | |
} | |
return f.item ? f.item(0) : f.parentElement() | |
}, | |
getSelectedBlocks: function(g, f) { | |
var i = this, | |
j = i.dom, | |
m, | |
h, | |
l, | |
k = []; | |
m = j.getParent(g || i.getStart(), j.isBlock); | |
h = j.getParent(f || i.getEnd(), j.isBlock); | |
if (m) { | |
k.push(m) | |
} | |
if (m && h && m != h) { | |
l = m; | |
while ((l = l.nextSibling) && l != h) { | |
if (j.isBlock(l)) { | |
k.push(l) | |
} | |
} | |
} | |
if (h && m != h) { | |
k.push(h) | |
} | |
return k | |
}, | |
destroy: function(g) { | |
var f = this; | |
f.win = null; | |
if (f.tridentSel) { | |
f.tridentSel.destroy() | |
} | |
if (!g) { | |
c.removeUnload(f.destroy) | |
} | |
} | |
}) | |
})(tinymce); (function(a) { | |
a.create("tinymce.dom.XMLWriter", { | |
node: null, | |
XMLWriter: function(c) { | |
function b() { | |
var e = document.implementation; | |
if (!e || !e.createDocument) { | |
try { | |
return new ActiveXObject("MSXML2.DOMDocument") | |
} catch(d) {} | |
try { | |
return new ActiveXObject("Microsoft.XmlDom") | |
} catch(d) {} | |
} else { | |
return e.createDocument("", "", null) | |
} | |
} | |
this.doc = b(); | |
this.valid = a.isOpera || a.isWebKit; | |
this.reset() | |
}, | |
reset: function() { | |
var b = this, | |
c = b.doc; | |
if (c.firstChild) { | |
c.removeChild(c.firstChild) | |
} | |
b.node = c.appendChild(c.createElement("html")) | |
}, | |
writeStartElement: function(c) { | |
var b = this; | |
b.node = b.node.appendChild(b.doc.createElement(c)) | |
}, | |
writeAttribute: function(c, b) { | |
if (this.valid) { | |
b = b.replace(/>/g, "%MCGT%") | |
} | |
this.node.setAttribute(c, b) | |
}, | |
writeEndElement: function() { | |
this.node = this.node.parentNode | |
}, | |
writeFullEndElement: function() { | |
var b = this, | |
c = b.node; | |
c.appendChild(b.doc.createTextNode("")); | |
b.node = c.parentNode | |
}, | |
writeText: function(b) { | |
if (this.valid) { | |
b = b.replace(/>/g, "%MCGT%") | |
} | |
this.node.appendChild(this.doc.createTextNode(b)) | |
}, | |
writeCDATA: function(b) { | |
this.node.appendChild(this.doc.createCDATASection(b)) | |
}, | |
writeComment: function(b) { | |
if (a.isIE) { | |
b = b.replace(/^\-|\-$/g, " ") | |
} | |
this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g, " "))) | |
}, | |
getContent: function() { | |
var b; | |
b = this.doc.xml || new XMLSerializer().serializeToString(this.doc); | |
b = b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g, ""); | |
b = b.replace(/ ?\/>/g, " />"); | |
if (this.valid) { | |
b = b.replace(/\%MCGT%/g, ">") | |
} | |
return b | |
} | |
}) | |
})(tinymce); (function(a) { | |
a.create("tinymce.dom.StringWriter", { | |
str: null, | |
tags: null, | |
count: 0, | |
settings: null, | |
indent: null, | |
StringWriter: function(b) { | |
this.settings = a.extend({ | |
indent_char: " ", | |
indentation: 0 | |
}, | |
b); | |
this.reset() | |
}, | |
reset: function() { | |
this.indent = ""; | |
this.str = ""; | |
this.tags = []; | |
this.count = 0 | |
}, | |
writeStartElement: function(b) { | |
this._writeAttributesEnd(); | |
this.writeRaw("<" + b); | |
this.tags.push(b); | |
this.inAttr = true; | |
this.count++; | |
this.elementCount = this.count | |
}, | |
writeAttribute: function(d, b) { | |
var c = this; | |
c.writeRaw(" " + c.encode(d) + '="' + c.encode(b) + '"') | |
}, | |
writeEndElement: function() { | |
var b; | |
if (this.tags.length > 0) { | |
b = this.tags.pop(); | |
if (this._writeAttributesEnd(1)) { | |
this.writeRaw("</" + b + ">") | |
} | |
if (this.settings.indentation > 0) { | |
this.writeRaw("\n") | |
} | |
} | |
}, | |
writeFullEndElement: function() { | |
if (this.tags.length > 0) { | |
this._writeAttributesEnd(); | |
this.writeRaw("</" + this.tags.pop() + ">"); | |
if (this.settings.indentation > 0) { | |
this.writeRaw("\n") | |
} | |
} | |
}, | |
writeText: function(b) { | |
this._writeAttributesEnd(); | |
this.writeRaw(this.encode(b)); | |
this.count++ | |
}, | |
writeCDATA: function(b) { | |
this._writeAttributesEnd(); | |
this.writeRaw("<![CDATA[" + b + "]]>"); | |
this.count++ | |
}, | |
writeComment: function(b) { | |
this._writeAttributesEnd(); | |
this.writeRaw("<!-- " + b + "-->"); | |
this.count++ | |
}, | |
writeRaw: function(b) { | |
this.str += b | |
}, | |
encode: function(b) { | |
return b.replace(/[<>&"]/g, | |
function(c) { | |
switch (c) { | |
case "<": | |
return "<"; | |
case ">": | |
return ">"; | |
case "&": | |
return "&"; | |
case '"': | |
return """ | |
} | |
return c | |
}) | |
}, | |
getContent: function() { | |
return this.str | |
}, | |
_writeAttributesEnd: function(b) { | |
if (!this.inAttr) { | |
return | |
} | |
this.inAttr = false; | |
if (b && this.elementCount == this.count) { | |
this.writeRaw(" />"); | |
return false | |
} | |
this.writeRaw(">"); | |
return true | |
} | |
}) | |
})(tinymce); (function(e) { | |
var g = e.extend, | |
f = e.each, | |
b = e.util.Dispatcher, | |
d = e.isIE, | |
a = e.isGecko; | |
function c(h) { | |
return h.replace(/([?+*])/g, ".$1") | |
} | |
e.create("tinymce.dom.Serializer", { | |
Serializer: function(j) { | |
var i = this; | |
i.key = 0; | |
i.onPreProcess = new b(i); | |
i.onPostProcess = new b(i); | |
try { | |
i.writer = new e.dom.XMLWriter() | |
} catch(h) { | |
i.writer = new e.dom.StringWriter() | |
} | |
i.settings = j = g({ | |
dom: e.DOM, | |
valid_nodes: 0, | |
node_filter: 0, | |
attr_filter: 0, | |
invalid_attrs: /^(_mce_|_moz_|sizset|sizcache)/, | |
closed: /^(br|hr|input|meta|img|link|param|area)$/, | |
entity_encoding: "named", | |
entities: "160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro", | |
valid_elements: "*[*]", | |
extended_valid_elements: 0, | |
invalid_elements: 0, | |
fix_table_elements: 1, | |
fix_list_elements: true, | |
fix_content_duplication: true, | |
convert_fonts_to_spans: false, | |
font_size_classes: 0, | |
apply_source_formatting: 0, | |
indent_mode: "simple", | |
indent_char: "\t", | |
indent_levels: 1, | |
remove_linebreaks: 1, | |
remove_redundant_brs: 1, | |
element_format: "xhtml" | |
}, | |
j); | |
i.dom = j.dom; | |
i.schema = j.schema; | |
if (j.entity_encoding == "named" && !j.entities) { | |
j.entity_encoding = "raw" | |
} | |
if (j.remove_redundant_brs) { | |
i.onPostProcess.add(function(k, l) { | |
l.content = l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi, | |
function(n, m, o) { | |
if (/^<br \/>\s*<\//.test(n)) { | |
return "</" + o + ">" | |
} | |
return n | |
}) | |
}) | |
} | |
if (j.element_format == "html") { | |
i.onPostProcess.add(function(k, l) { | |
l.content = l.content.replace(/<([^>]+) \/>/g, "<$1>") | |
}) | |
} | |
if (j.fix_list_elements) { | |
i.onPreProcess.add(function(v, s) { | |
var l, | |
z, | |
y = ["ol", "ul"], | |
u, | |
t, | |
q, | |
k = /^(OL|UL)$/, | |
A; | |
function m(r, x) { | |
var o = x.split(","), | |
p; | |
while ((r = r.previousSibling) != null) { | |
for (p = 0; p < o.length; p++) { | |
if (r.nodeName == o[p]) { | |
return r | |
} | |
} | |
} | |
return null | |
} | |
for (z = 0; z < y.length; z++) { | |
l = i.dom.select(y[z], s.node); | |
for (u = 0; u < l.length; u++) { | |
t = l[u]; | |
q = t.parentNode; | |
if (k.test(q.nodeName)) { | |
A = m(t, "LI"); | |
if (!A) { | |
A = i.dom.create("li"); | |
A.innerHTML = " "; | |
A.appendChild(t); | |
q.insertBefore(A, q.firstChild) | |
} else { | |
A.appendChild(t) | |
} | |
} | |
} | |
} | |
}) | |
} | |
if (j.fix_table_elements) { | |
i.onPreProcess.add(function(k, l) { | |
if (!e.isOpera || opera.buildNumber() >= 1767) { | |
f(i.dom.select("p table", l.node).reverse(), | |
function(p) { | |
var o = i.dom.getParent(p.parentNode, "table,p"); | |
if (o.nodeName != "TABLE") { | |
try { | |
i.dom.split(o, p) | |
} catch(m) {} | |
} | |
}) | |
} | |
}) | |
} | |
}, | |
setEntities: function(o) { | |
var n = this, | |
j, | |
m, | |
h = {}, | |
k; | |
if (n.entityLookup) { | |
return | |
} | |
j = o.split(","); | |
for (m = 0; m < j.length; m += 2) { | |
k = j[m]; | |
if (k == 34 || k == 38 || k == 60 || k == 62) { | |
continue | |
} | |
h[String.fromCharCode(j[m])] = j[m + 1]; | |
k = parseInt(j[m]).toString(16) | |
} | |
n.entityLookup = h | |
}, | |
setRules: function(i) { | |
var h = this; | |
h._setup(); | |
h.rules = {}; | |
h.wildRules = []; | |
h.validElements = {}; | |
return h.addRules(i) | |
}, | |
addRules: function(i) { | |
var h = this, | |
j; | |
if (!i) { | |
return | |
} | |
h._setup(); | |
f(i.split(","), | |
function(m) { | |
var q = m.split(/\[|\]/), | |
l = q[0].split("/"), | |
r, | |
k, | |
o, | |
n = []; | |
if (j) { | |
k = e.extend([], j.attribs) | |
} | |
if (q.length > 1) { | |
f(q[1].split("|"), | |
function(u) { | |
var p = {}, | |
t; | |
k = k || []; | |
u = u.replace(/::/g, "~"); | |
u = /^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u); | |
u[2] = u[2].replace(/~/g, ":"); | |
if (u[1] == "!") { | |
r = r || []; | |
r.push(u[2]) | |
} | |
if (u[1] == "-") { | |
for (t = 0; t < k.length; t++) { | |
if (k[t].name == u[2]) { | |
k.splice(t, 1); | |
return | |
} | |
} | |
} | |
switch (u[3]) { | |
case "=": | |
p.defaultVal = u[4] || ""; | |
break; | |
case ":": | |
p.forcedVal = u[4]; | |
break; | |
case "<": | |
p.validVals = u[4].split("?"); | |
break | |
} | |
if (/[*.?]/.test(u[2])) { | |
o = o || []; | |
p.nameRE = new RegExp("^" + c(u[2]) + "$"); | |
o.push(p) | |
} else { | |
p.name = u[2]; | |
k.push(p) | |
} | |
n.push(u[2]) | |
}) | |
} | |
f(l, | |
function(v, u) { | |
var y = v.charAt(0), | |
t = 1, | |
p = {}; | |
if (j) { | |
if (j.noEmpty) { | |
p.noEmpty = j.noEmpty | |
} | |
if (j.fullEnd) { | |
p.fullEnd = j.fullEnd | |
} | |
if (j.padd) { | |
p.padd = j.padd | |
} | |
} | |
switch (y) { | |
case "-": | |
p.noEmpty = true; | |
break; | |
case "+": | |
p.fullEnd = true; | |
break; | |
case "#": | |
p.padd = true; | |
break; | |
default: | |
t = 0 | |
} | |
l[u] = v = v.substring(t); | |
h.validElements[v] = 1; | |
if (/[*.?]/.test(l[0])) { | |
p.nameRE = new RegExp("^" + c(l[0]) + "$"); | |
h.wildRules = h.wildRules || {}; | |
h.wildRules.push(p) | |
} else { | |
p.name = l[0]; | |
if (l[0] == "@") { | |
j = p | |
} | |
h.rules[v] = p | |
} | |
p.attribs = k; | |
if (r) { | |
p.requiredAttribs = r | |
} | |
if (o) { | |
v = ""; | |
f(n, | |
function(s) { | |
if (v) { | |
v += "|" | |
} | |
v += "(" + c(s) + ")" | |
}); | |
p.validAttribsRE = new RegExp("^" + v.toLowerCase() + "$"); | |
p.wildAttribs = o | |
} | |
}) | |
}); | |
i = ""; | |
f(h.validElements, | |
function(m, l) { | |
if (i) { | |
i += "|" | |
} | |
if (l != "@") { | |
i += l | |
} | |
}); | |
h.validElementsRE = new RegExp("^(" + c(i.toLowerCase()) + ")$") | |
}, | |
findRule: function(m) { | |
var j = this, | |
l = j.rules, | |
h, | |
k; | |
j._setup(); | |
k = l[m]; | |
if (k) { | |
return k | |
} | |
l = j.wildRules; | |
for (h = 0; h < l.length; h++) { | |
if (l[h].nameRE.test(m)) { | |
return l[h] | |
} | |
} | |
return null | |
}, | |
findAttribRule: function(h, l) { | |
var j, | |
k = h.wildAttribs; | |
for (j = 0; j < k.length; j++) { | |
if (k[j].nameRE.test(l)) { | |
return k[j] | |
} | |
} | |
return null | |
}, | |
serialize: function(r, q) { | |
var m, | |
k = this, | |
p, | |
i, | |
j, | |
l; | |
k._setup(); | |
q = q || {}; | |
q.format = q.format || "html"; | |
k.processObj = q; | |
if (d) { | |
l = []; | |
f(r.getElementsByTagName("option"), | |
function(o) { | |
var h = k.dom.getAttrib(o, "selected"); | |
l.push(h ? h: null) | |
}) | |
} | |
r = r.cloneNode(true); | |
if (d) { | |
f(r.getElementsByTagName("option"), | |
function(o, h) { | |
k.dom.setAttrib(o, "selected", l[h]) | |
}) | |
} | |
j = r.ownerDocument.implementation; | |
if (j.createHTMLDocument && (e.isOpera && opera.buildNumber() >= 1767)) { | |
p = j.createHTMLDocument(""); | |
f(r.nodeName == "BODY" ? r.childNodes: [r], | |
function(h) { | |
p.body.appendChild(p.importNode(h, true)) | |
}); | |
if (r.nodeName != "BODY") { | |
r = p.body.firstChild | |
} else { | |
r = p.body | |
} | |
i = k.dom.doc; | |
k.dom.doc = p | |
} | |
k.key = "" + (parseInt(k.key) + 1); | |
if (!q.no_events) { | |
q.node = r; | |
k.onPreProcess.dispatch(k, q) | |
} | |
k.writer.reset(); | |
k._info = q; | |
k._serializeNode(r, q.getInner); | |
q.content = k.writer.getContent(); | |
if (i) { | |
k.dom.doc = i | |
} | |
if (!q.no_events) { | |
k.onPostProcess.dispatch(k, q) | |
} | |
k._postProcess(q); | |
q.node = null; | |
return e.trim(q.content) | |
}, | |
_postProcess: function(n) { | |
var i = this, | |
k = i.settings, | |
j = n.content, | |
m = [], | |
l; | |
if (n.format == "html") { | |
l = i._protect({ | |
content: j, | |
patterns: [{ | |
pattern: /(<script[^>]*>)(.*?)(<\/script>)/g | |
}, | |
{ | |
pattern: /(<noscript[^>]*>)(.*?)(<\/noscript>)/g | |
}, | |
{ | |
pattern: /(<style[^>]*>)(.*?)(<\/style>)/g | |
}, | |
{ | |
pattern: /(<pre[^>]*>)(.*?)(<\/pre>)/g, | |
encode: 1 | |
}, | |
{ | |
pattern: /(<!--\[CDATA\[)(.*?)(\]\]-->)/g | |
}] | |
}); | |
j = l.content; | |
if (k.entity_encoding !== "raw") { | |
j = i._encode(j) | |
} | |
if (!n.set) { | |
j = j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g, k.entity_encoding == "numeric" ? "<p$1> </p>": "<p$1> </p>"); | |
if (k.remove_linebreaks) { | |
j = j.replace(/\r?\n|\r/g, " "); | |
j = j.replace(/(<[^>]+>)\s+/g, "$1 "); | |
j = j.replace(/\s+(<\/[^>]+>)/g, " $1"); | |
j = j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g, "<$1 $2>"); | |
j = j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g, "<$1>"); | |
j = j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g, "</$1>") | |
} | |
if (k.apply_source_formatting && k.indent_mode == "simple") { | |
j = j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g, "\n<$1$2$3>\n"); | |
j = j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g, "\n<$1$2>"); | |
j = j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g, "</$1>\n"); | |
j = j.replace(/\n\n/g, "\n") | |
} | |
} | |
j = i._unprotect(j, l); | |
j = j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g, "<![CDATA[$1]]>"); | |
if (k.entity_encoding == "raw") { | |
j = j.replace(/<p> <\/p>|<p([^>]+)> <\/p>/g, "<p$1>\u00a0</p>") | |
} | |
j = j.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g, | |
function(h, p, o) { | |
return "<noscript" + p + ">" + i.dom.decode(o.replace(/<!--|-->/g, "")) + "</noscript>" | |
}) | |
} | |
n.content = j | |
}, | |
_serializeNode: function(D, I) { | |
var z = this, | |
A = z.settings, | |
x = z.writer, | |
q, | |
j, | |
u, | |
F, | |
E, | |
H, | |
B, | |
h, | |
y, | |
k, | |
r, | |
C, | |
p, | |
m, | |
G, | |
o; | |
if (!A.node_filter || A.node_filter(D)) { | |
switch (D.nodeType) { | |
case 1: | |
if (D.hasAttribute ? D.hasAttribute("_mce_bogus") : D.getAttribute("_mce_bogus")) { | |
return | |
} | |
p = G = false; | |
q = D.hasChildNodes(); | |
k = D.getAttribute("_mce_name") || D.nodeName.toLowerCase(); | |
o = D.getAttribute("_mce_type"); | |
if (o) { | |
if (!z._info.cleanup) { | |
p = true; | |
return | |
} else { | |
G = 1 | |
} | |
} | |
if (d) { | |
if (D.scopeName !== "HTML" && D.scopeName !== "html") { | |
k = D.scopeName + ":" + k | |
} | |
} | |
if (k.indexOf("mce:") === 0) { | |
k = k.substring(4) | |
} | |
if (!G) { | |
if (!z.validElementsRE || !z.validElementsRE.test(k) || (z.invalidElementsRE && z.invalidElementsRE.test(k)) || I) { | |
p = true; | |
break | |
} | |
} | |
if (d) { | |
if (A.fix_content_duplication) { | |
if (D._mce_serialized == z.key) { | |
return | |
} | |
D._mce_serialized = z.key | |
} | |
if (k.charAt(0) == "/") { | |
k = k.substring(1) | |
} | |
} else { | |
if (a) { | |
if (D.nodeName === "BR" && D.getAttribute("type") == "_moz") { | |
return | |
} | |
} | |
} | |
if (A.validate_children) { | |
if (z.elementName && !z.schema.isValid(z.elementName, k)) { | |
p = true; | |
break | |
} | |
z.elementName = k | |
} | |
r = z.findRule(k); | |
if (!r) { | |
p = true; | |
break | |
} | |
k = r.name || k; | |
m = A.closed.test(k); | |
if ((!q && r.noEmpty) || (d && !k)) { | |
p = true; | |
break | |
} | |
if (r.requiredAttribs) { | |
H = r.requiredAttribs; | |
for (F = H.length - 1; F >= 0; F--) { | |
if (this.dom.getAttrib(D, H[F]) !== "") { | |
break | |
} | |
} | |
if (F == -1) { | |
p = true; | |
break | |
} | |
} | |
x.writeStartElement(k); | |
if (r.attribs) { | |
for (F = 0, B = r.attribs, E = B.length; F < E; F++) { | |
H = B[F]; | |
y = z._getAttrib(D, H); | |
if (y !== null) { | |
x.writeAttribute(H.name, y) | |
} | |
} | |
} | |
if (r.validAttribsRE) { | |
B = z.dom.getAttribs(D); | |
for (F = B.length - 1; F > -1; F--) { | |
h = B[F]; | |
if (h.specified) { | |
H = h.nodeName.toLowerCase(); | |
if (A.invalid_attrs.test(H) || !r.validAttribsRE.test(H)) { | |
continue | |
} | |
C = z.findAttribRule(r, H); | |
y = z._getAttrib(D, C, H); | |
if (y !== null) { | |
x.writeAttribute(H, y) | |
} | |
} | |
} | |
} | |
if (o && G) { | |
x.writeAttribute("_mce_type", o) | |
} | |
if (k === "script" && e.trim(D.innerHTML)) { | |
x.writeText("// "); | |
x.writeCDATA(D.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g, "")); | |
q = false; | |
break | |
} | |
if (r.padd) { | |
if (q && (u = D.firstChild) && u.nodeType === 1 && D.childNodes.length === 1) { | |
if (u.hasAttribute ? u.hasAttribute("_mce_bogus") : u.getAttribute("_mce_bogus")) { | |
x.writeText("\u00a0") | |
} | |
} else { | |
if (!q) { | |
x.writeText("\u00a0") | |
} | |
} | |
} | |
break; | |
case 3: | |
if (A.validate_children && z.elementName && !z.schema.isValid(z.elementName, "#text")) { | |
return | |
} | |
return x.writeText(D.nodeValue); | |
case 4: | |
return x.writeCDATA(D.nodeValue); | |
case 8: | |
return x.writeComment(D.nodeValue) | |
} | |
} else { | |
if (D.nodeType == 1) { | |
q = D.hasChildNodes() | |
} | |
} | |
if (q && !m) { | |
u = D.firstChild; | |
while (u) { | |
z._serializeNode(u); | |
z.elementName = k; | |
u = u.nextSibling | |
} | |
} | |
if (!p) { | |
if (!m) { | |
x.writeFullEndElement() | |
} else { | |
x.writeEndElement() | |
} | |
} | |
}, | |
_protect: function(j) { | |
var i = this; | |
j.items = j.items || []; | |
function h(l) { | |
return l.replace(/[\r\n\\]/g, | |
function(m) { | |
if (m === "\n") { | |
return "\\n" | |
} else { | |
if (m === "\\") { | |
return "\\\\" | |
} | |
} | |
return "\\r" | |
}) | |
} | |
function k(l) { | |
return l.replace(/\\[\\rn]/g, | |
function(m) { | |
if (m === "\\n") { | |
return "\n" | |
} else { | |
if (m === "\\\\") { | |
return "\\" | |
} | |
} | |
return "\r" | |
}) | |
} | |
f(j.patterns, | |
function(l) { | |
j.content = k(h(j.content).replace(l.pattern, | |
function(n, o, m, p) { | |
m = k(m); | |
if (l.encode) { | |
m = i._encode(m) | |
} | |
j.items.push(m); | |
return o + "<!--mce:" + (j.items.length - 1) + "-->" + p | |
})) | |
}); | |
return j | |
}, | |
_unprotect: function(i, j) { | |
i = i.replace(/\<!--mce:([0-9]+)--\>/g, | |
function(k, h) { | |
return j.items[parseInt(h)] | |
}); | |
j.items = []; | |
return i | |
}, | |
_encode: function(m) { | |
var j = this, | |
k = j.settings, | |
i; | |
if (k.entity_encoding !== "raw") { | |
if (k.entity_encoding.indexOf("named") != -1) { | |
j.setEntities(k.entities); | |
i = j.entityLookup; | |
m = m.replace(/[\u007E-\uFFFF]/g, | |
function(h) { | |
var l; | |
if (l = i[h]) { | |
h = "&" + l + ";" | |
} | |
return h | |
}) | |
} | |
if (k.entity_encoding.indexOf("numeric") != -1) { | |
m = m.replace(/[\u007E-\uFFFF]/g, | |
function(h) { | |
return "&#" + h.charCodeAt(0) + ";" | |
}) | |
} | |
} | |
return m | |
}, | |
_setup: function() { | |
var h = this, | |
i = this.settings; | |
if (h.done) { | |
return | |
} | |
h.done = 1; | |
h.setRules(i.valid_elements); | |
h.addRules(i.extended_valid_elements); | |
if (i.invalid_elements) { | |
h.invalidElementsRE = new RegExp("^(" + c(i.invalid_elements.replace(/,/g, "|").toLowerCase()) + ")$") | |
} | |
if (i.attrib_value_filter) { | |
h.attribValueFilter = i.attribValueFilter | |
} | |
}, | |
_getAttrib: function(m, j, h) { | |
var l, | |
k; | |
h = h || j.name; | |
if (j.forcedVal && (k = j.forcedVal)) { | |
if (k === "{$uid}") { | |
return this.dom.uniqueId() | |
} | |
return k | |
} | |
k = this.dom.getAttrib(m, h); | |
switch (h) { | |
case "rowspan": | |
case "colspan": | |
if (k == "1") { | |
k = "" | |
} | |
break | |
} | |
if (this.attribValueFilter) { | |
k = this.attribValueFilter(h, k, m) | |
} | |
if (j.validVals) { | |
for (l = j.validVals.length - 1; l >= 0; l--) { | |
if (k == j.validVals[l]) { | |
break | |
} | |
} | |
if (l == -1) { | |
return null | |
} | |
} | |
if (k === "" && typeof(j.defaultVal) != "undefined") { | |
k = j.defaultVal; | |
if (k === "{$uid}") { | |
return this.dom.uniqueId() | |
} | |
return k | |
} else { | |
if (h == "class" && this.processObj.get) { | |
k = k.replace(/\s?mceItem\w+\s?/g, "") | |
} | |
} | |
if (k === "") { | |
return null | |
} | |
return k | |
} | |
}) | |
})(tinymce); (function(a) { | |
a.dom.ScriptLoader = function(h) { | |
var c = 0, | |
k = 1, | |
i = 2, | |
l = {}, | |
j = [], | |
f = {}, | |
d = [], | |
g = 0, | |
e; | |
function b(m, u) { | |
var v = this, | |
q = a.DOM, | |
s, | |
o, | |
r, | |
n; | |
function p() { | |
q.remove(n); | |
if (s) { | |
s.onreadystatechange = s.onload = s = null | |
} | |
u() | |
} | |
n = q.uniqueId(); | |
if (a.isIE6) { | |
o = new a.util.URI(m); | |
r = location; | |
if (o.host == r.hostname && o.port == r.port && (o.protocol + ":") == r.protocol) { | |
a.util.XHR.send({ | |
url: a._addVer(o.getURI()), | |
success: function(x) { | |
var t = q.create("script", { | |
type: "text/javascript" | |
}); | |
t.text = x; | |
document.getElementsByTagName("head")[0].appendChild(t); | |
q.remove(t); | |
p() | |
} | |
}); | |
return | |
} | |
} | |
s = q.create("script", { | |
id: n, | |
type: "text/javascript", | |
src: a._addVer(m) | |
}); | |
s.onload = p; | |
s.onreadystatechange = function() { | |
var t = s.readyState; | |
if (t == "complete" || t == "loaded") { | |
p() | |
} | |
}; (document.getElementsByTagName("head")[0] || document.body).appendChild(s) | |
} | |
this.isDone = function(m) { | |
return l[m] == i | |
}; | |
this.markDone = function(m) { | |
l[m] = i | |
}; | |
this.add = this.load = function(m, q, n) { | |
var o, | |
p = l[m]; | |
if (p == e) { | |
j.push(m); | |
l[m] = c | |
} | |
if (q) { | |
if (!f[m]) { | |
f[m] = [] | |
} | |
f[m].push({ | |
func: q, | |
scope: n || this | |
}) | |
} | |
}; | |
this.loadQueue = function(n, m) { | |
this.loadScripts(j, n, m) | |
}; | |
this.loadScripts = function(m, q, p) { | |
var o; | |
function n(r) { | |
a.each(f[r], | |
function(s) { | |
s.func.call(s.scope) | |
}); | |
f[r] = e | |
} | |
d.push({ | |
func: q, | |
scope: p || this | |
}); | |
o = function() { | |
var r = a.grep(m); | |
m.length = 0; | |
a.each(r, | |
function(s) { | |
if (l[s] == i) { | |
n(s); | |
return | |
} | |
if (l[s] != k) { | |
l[s] = k; | |
g++; | |
b(s, | |
function() { | |
l[s] = i; | |
g--; | |
n(s); | |
o() | |
}) | |
} | |
}); | |
if (!g) { | |
a.each(d, | |
function(s) { | |
s.func.call(s.scope) | |
}); | |
d.length = 0 | |
} | |
}; | |
o() | |
} | |
}; | |
a.ScriptLoader = new a.dom.ScriptLoader() | |
})(tinymce); | |
tinymce.dom.TreeWalker = function(a, c) { | |
var b = a; | |
function d(i, f, e, j) { | |
var h, | |
g; | |
if (i) { | |
if (!j && i[f]) { | |
return i[f] | |
} | |
if (i != c) { | |
h = i[e]; | |
if (h) { | |
return h | |
} | |
for (g = i.parentNode; g && g != c; g = g.parentNode) { | |
h = g[e]; | |
if (h) { | |
return h | |
} | |
} | |
} | |
} | |
} | |
this.current = function() { | |
return b | |
}; | |
this.next = function(e) { | |
return (b = d(b, "firstChild", "nextSibling", e)) | |
}; | |
this.prev = function(e) { | |
return (b = d(b, "lastChild", "lastSibling", e)) | |
} | |
}; (function() { | |
var a = {}; | |
function b(f, e) { | |
var d; | |
function c(g) { | |
return g.replace(/[A-Z]+/g, | |
function(h) { | |
return c(f[h]) | |
}) | |
} | |
for (d in f) { | |
if (f.hasOwnProperty(d)) { | |
f[d] = c(f[d]) | |
} | |
} | |
c(e).replace(/#/g, "#text").replace(/(\w+)\[([^\]]+)\]/g, | |
function(l, g, j) { | |
var h, | |
k = {}; | |
j = j.split(/\|/); | |
for (h = j.length - 1; h >= 0; h--) { | |
k[j[h]] = 1 | |
} | |
a[g] = k | |
}) | |
} | |
b({ | |
Z: "#|H|K|N|O|P", | |
Y: "#|X|form|R|Q", | |
X: "p|T|div|U|W|isindex|fieldset|table", | |
W: "pre|hr|blockquote|address|center|noframes", | |
U: "ul|ol|dl|menu|dir", | |
ZC: "#|p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q", | |
T: "h1|h2|h3|h4|h5|h6", | |
ZB: "#|X|S|Q", | |
S: "R|P", | |
ZA: "#|a|G|J|M|O|P", | |
R: "#|a|H|K|N|O", | |
Q: "noscript|P", | |
P: "ins|del|script", | |
O: "input|select|textarea|label|button", | |
N: "M|L", | |
M: "em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym", | |
L: "sub|sup", | |
K: "J|I", | |
J: "tt|i|b|u|s|strike", | |
I: "big|small|font|basefont", | |
H: "G|F", | |
G: "br|span|bdo", | |
F: "object|applet|img|map|iframe" | |
}, | |
"script[]style[]object[#|param|X|form|a|H|K|N|O|Q]param[]p[S]a[Z]br[]span[S]bdo[S]applet[#|param|X|form|a|H|K|N|O|Q]h1[S]img[]map[X|form|Q|area]h2[S]iframe[#|X|form|a|H|K|N|O|Q]h3[S]tt[S]i[S]b[S]u[S]s[S]strike[S]big[S]small[S]font[S]basefont[]em[S]strong[S]dfn[S]code[S]q[S]samp[S]kbd[S]var[S]cite[S]abbr[S]acronym[S]sub[S]sup[S]input[]select[optgroup|option]optgroup[option]option[]textarea[]label[S]button[#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[S]ins[#|X|form|a|H|K|N|O|Q]h5[S]del[#|X|form|a|H|K|N|O|Q]h6[S]div[#|X|form|a|H|K|N|O|Q]ul[li]li[#|X|form|a|H|K|N|O|Q]ol[li]dl[dt|dd]dt[S]dd[#|X|form|a|H|K|N|O|Q]menu[li]dir[li]pre[ZA]hr[]blockquote[#|X|form|a|H|K|N|O|Q]address[S|p]center[#|X|form|a|H|K|N|O|Q]noframes[#|X|form|a|H|K|N|O|Q]isindex[]fieldset[#|legend|X|form|a|H|K|N|O|Q]legend[S]table[caption|col|colgroup|thead|tfoot|tbody|tr]caption[S]col[]colgroup[col]thead[tr]tr[th|td]th[#|X|form|a|H|K|N|O|Q]form[#|X|a|H|K|N|O|Q]noscript[#|X|form|a|H|K|N|O|Q]td[#|X|form|a|H|K|N|O|Q]tfoot[tr]tbody[tr]area[]base[]body[#|X|form|a|H|K|N|O|Q]"); | |
tinymce.dom.Schema = function() { | |
var c = this, | |
d = a; | |
c.isValid = function(f, e) { | |
var g = d[f]; | |
return !! (g && (!e || g[e])) | |
} | |
} | |
})(); (function(a) { | |
a.dom.RangeUtils = function(c) { | |
var b = "\uFEFF"; | |
this.walk = function(d, r) { | |
var h = d.startContainer, | |
k = d.startOffset, | |
s = d.endContainer, | |
l = d.endOffset, | |
i, | |
f, | |
n, | |
g, | |
q, | |
p, | |
e; | |
e = c.select("td.mceSelected,th.mceSelected"); | |
if (e.length > 0) { | |
a.each(e, | |
function(t) { | |
r([t]) | |
}); | |
return | |
} | |
function o(v, u, t) { | |
var x = []; | |
for (; v && v != t; v = v[u]) { | |
x.push(v) | |
} | |
return x | |
} | |
function m(u, t) { | |
do { | |
if (u.parentNode == t) { | |
return u | |
} | |
u = u.parentNode | |
} | |
while (u) | |
} | |
function j(v, u, x) { | |
var t = x ? "nextSibling": "previousSibling"; | |
for (g = v, q = g.parentNode; g && g != u; g = q) { | |
q = g.parentNode; | |
p = o(g == v ? g: g[t], t); | |
if (p.length) { | |
if (!x) { | |
p.reverse() | |
} | |
r(p) | |
} | |
} | |
} | |
if (h.nodeType == 1 && h.hasChildNodes()) { | |
h = h.childNodes[k] | |
} | |
if (s.nodeType == 1 && s.hasChildNodes()) { | |
s = s.childNodes[Math.min(k == l ? l: l - 1, s.childNodes.length - 1)] | |
} | |
i = c.findCommonAncestor(h, s); | |
if (h == s) { | |
return r([h]) | |
} | |
for (g = h; g; g = g.parentNode) { | |
if (g == s) { | |
return j(h, i, true) | |
} | |
if (g == i) { | |
break | |
} | |
} | |
for (g = s; g; g = g.parentNode) { | |
if (g == h) { | |
return j(s, i) | |
} | |
if (g == i) { | |
break | |
} | |
} | |
f = m(h, i) || h; | |
n = m(s, i) || s; | |
j(h, f, true); | |
p = o(f == h ? f: f.nextSibling, "nextSibling", n == s ? n.nextSibling: n); | |
if (p.length) { | |
r(p) | |
} | |
j(s, n) | |
} | |
} | |
})(tinymce); (function(c) { | |
var b = c.DOM, | |
a = c.is; | |
c.create("tinymce.ui.Control", { | |
Control: function(e, d) { | |
this.id = e; | |
this.settings = d = d || {}; | |
this.rendered = false; | |
this.onRender = new c.util.Dispatcher(this); | |
this.classPrefix = ""; | |
this.scope = d.scope || this; | |
this.disabled = 0; | |
this.active = 0 | |
}, | |
setDisabled: function(d) { | |
var f; | |
if (d != this.disabled) { | |
f = b.get(this.id); | |
if (f && this.settings.unavailable_prefix) { | |
if (d) { | |
this.prevTitle = f.title; | |
f.title = this.settings.unavailable_prefix + ": " + f.title | |
} else { | |
f.title = this.prevTitle | |
} | |
} | |
this.setState("Disabled", d); | |
this.setState("Enabled", !d); | |
this.disabled = d | |
} | |
}, | |
isDisabled: function() { | |
return this.disabled | |
}, | |
setActive: function(d) { | |
if (d != this.active) { | |
this.setState("Active", d); | |
this.active = d | |
} | |
}, | |
isActive: function() { | |
return this.active | |
}, | |
setState: function(f, d) { | |
var e = b.get(this.id); | |
f = this.classPrefix + f; | |
if (d) { | |
b.addClass(e, f) | |
} else { | |
b.removeClass(e, f) | |
} | |
}, | |
isRendered: function() { | |
return this.rendered | |
}, | |
renderHTML: function() {}, | |
renderTo: function(d) { | |
b.setHTML(d, this.renderHTML()) | |
}, | |
postRender: function() { | |
var e = this, | |
d; | |
if (a(e.disabled)) { | |
d = e.disabled; | |
e.disabled = -1; | |
e.setDisabled(d) | |
} | |
if (a(e.active)) { | |
d = e.active; | |
e.active = -1; | |
e.setActive(d) | |
} | |
}, | |
remove: function() { | |
b.remove(this.id); | |
this.destroy() | |
}, | |
destroy: function() { | |
c.dom.Event.clear(this.id) | |
} | |
}) | |
})(tinymce); | |
tinymce.create("tinymce.ui.Container:tinymce.ui.Control", { | |
Container: function(b, a) { | |
this.parent(b, a); | |
this.controls = []; | |
this.lookup = {} | |
}, | |
add: function(a) { | |
this.lookup[a.id] = a; | |
this.controls.push(a); | |
return a | |
}, | |
get: function(a) { | |
return this.lookup[a] | |
} | |
}); | |
tinymce.create("tinymce.ui.Separator:tinymce.ui.Control", { | |
Separator: function(b, a) { | |
this.parent(b, a); | |
this.classPrefix = "mceSeparator" | |
}, | |
renderHTML: function() { | |
return tinymce.DOM.createHTML("span", { | |
"class": this.classPrefix | |
}) | |
} | |
}); (function(d) { | |
var c = d.is, | |
b = d.DOM, | |
e = d.each, | |
a = d.walk; | |
d.create("tinymce.ui.MenuItem:tinymce.ui.Control", { | |
MenuItem: function(g, f) { | |
this.parent(g, f); | |
this.classPrefix = "mceMenuItem" | |
}, | |
setSelected: function(f) { | |
this.setState("Selected", f); | |
this.selected = f | |
}, | |
isSelected: function() { | |
return this.selected | |
}, | |
postRender: function() { | |
var f = this; | |
f.parent(); | |
if (c(f.selected)) { | |
f.setSelected(f.selected) | |
} | |
} | |
}) | |
})(tinymce); (function(d) { | |
var c = d.is, | |
b = d.DOM, | |
e = d.each, | |
a = d.walk; | |
d.create("tinymce.ui.Menu:tinymce.ui.MenuItem", { | |
Menu: function(h, g) { | |
var f = this; | |
f.parent(h, g); | |
f.items = {}; | |
f.collapsed = false; | |
f.menuCount = 0; | |
f.onAddItem = new d.util.Dispatcher(this) | |
}, | |
expand: function(g) { | |
var f = this; | |
if (g) { | |
a(f, | |
function(h) { | |
if (h.expand) { | |
h.expand() | |
} | |
}, | |
"items", f) | |
} | |
f.collapsed = false | |
}, | |
collapse: function(g) { | |
var f = this; | |
if (g) { | |
a(f, | |
function(h) { | |
if (h.collapse) { | |
h.collapse() | |
} | |
}, | |
"items", f) | |
} | |
f.collapsed = true | |
}, | |
isCollapsed: function() { | |
return this.collapsed | |
}, | |
add: function(f) { | |
if (!f.settings) { | |
f = new d.ui.MenuItem(f.id || b.uniqueId(), f) | |
} | |
this.onAddItem.dispatch(this, f); | |
return this.items[f.id] = f | |
}, | |
addSeparator: function() { | |
return this.add({ | |
separator: true | |
}) | |
}, | |
addMenu: function(f) { | |
if (!f.collapse) { | |
f = this.createMenu(f) | |
} | |
this.menuCount++; | |
return this.add(f) | |
}, | |
hasMenus: function() { | |
return this.menuCount !== 0 | |
}, | |
remove: function(f) { | |
delete this.items[f.id] | |
}, | |
removeAll: function() { | |
var f = this; | |
a(f, | |
function(g) { | |
if (g.removeAll) { | |
g.removeAll() | |
} else { | |
g.remove() | |
} | |
g.destroy() | |
}, | |
"items", f); | |
f.items = {} | |
}, | |
createMenu: function(g) { | |
var f = new d.ui.Menu(g.id || b.uniqueId(), g); | |
f.onAddItem.add(this.onAddItem.dispatch, this.onAddItem); | |
return f | |
} | |
}) | |
})(tinymce); (function(e) { | |
var d = e.is, | |
c = e.DOM, | |
f = e.each, | |
a = e.dom.Event, | |
b = e.dom.Element; | |
e.create("tinymce.ui.DropMenu:tinymce.ui.Menu", { | |
DropMenu: function(h, g) { | |
g = g || {}; | |
g.container = g.container || c.doc.body; | |
g.offset_x = g.offset_x || 0; | |
g.offset_y = g.offset_y || 0; | |
g.vp_offset_x = g.vp_offset_x || 0; | |
g.vp_offset_y = g.vp_offset_y || 0; | |
if (d(g.icons) && !g.icons) { | |
g["class"] += " mceNoIcons" | |
} | |
this.parent(h, g); | |
this.onShowMenu = new e.util.Dispatcher(this); | |
this.onHideMenu = new e.util.Dispatcher(this); | |
this.classPrefix = "mceMenu" | |
}, | |
createMenu: function(j) { | |
var h = this, | |
i = h.settings, | |
g; | |
j.container = j.container || i.container; | |
j.parent = h; | |
j.constrain = j.constrain || i.constrain; | |
j["class"] = j["class"] || i["class"]; | |
j.vp_offset_x = j.vp_offset_x || i.vp_offset_x; | |
j.vp_offset_y = j.vp_offset_y || i.vp_offset_y; | |
g = new e.ui.DropMenu(j.id || c.uniqueId(), j); | |
g.onAddItem.add(h.onAddItem.dispatch, h.onAddItem); | |
return g | |
}, | |
update: function() { | |
var i = this, | |
j = i.settings, | |
g = c.get("menu_" + i.id + "_tbl"), | |
l = c.get("menu_" + i.id + "_co"), | |
h, | |
k; | |
h = j.max_width ? Math.min(g.clientWidth, j.max_width) : g.clientWidth; | |
k = j.max_height ? Math.min(g.clientHeight, j.max_height) : g.clientHeight; | |
if (!c.boxModel) { | |
i.element.setStyles({ | |
width: h + 2, | |
height: k + 2 | |
}) | |
} else { | |
i.element.setStyles({ | |
width: h, | |
height: k | |
}) | |
} | |
if (j.max_width) { | |
c.setStyle(l, "width", h) | |
} | |
if (j.max_height) { | |
c.setStyle(l, "height", k); | |
if (g.clientHeight < j.max_height) { | |
c.setStyle(l, "overflow", "hidden") | |
} | |
} | |
}, | |
showMenu: function(p, n, r) { | |
var z = this, | |
A = z.settings, | |
o, | |
g = c.getViewPort(), | |
u, | |
l, | |
v, | |
q, | |
i = 2, | |
k, | |
j, | |
m = z.classPrefix; | |
z.collapse(1); | |
if (z.isMenuVisible) { | |
return | |
} | |
if (!z.rendered) { | |
o = c.add(z.settings.container, z.renderNode()); | |
f(z.items, | |
function(h) { | |
h.postRender() | |
}); | |
z.element = new b("menu_" + z.id, { | |
blocker: 1, | |
container: A.container | |
}) | |
} else { | |
o = c.get("menu_" + z.id) | |
} | |
if (!e.isOpera) { | |
c.setStyles(o, { | |
left: -65535, | |
top: -65535 | |
}) | |
} | |
c.show(o); | |
z.update(); | |
p += A.offset_x || 0; | |
n += A.offset_y || 0; | |
g.w -= 4; | |
g.h -= 4; | |
if (A.constrain) { | |
u = o.clientWidth - i; | |
l = o.clientHeight - i; | |
v = g.x + g.w; | |
q = g.y + g.h; | |
if ((p + A.vp_offset_x + u) > v) { | |
p = r ? r - u: Math.max(0, (v - A.vp_offset_x) - u) | |
} | |
if ((n + A.vp_offset_y + l) > q) { | |
n = Math.max(0, (q - A.vp_offset_y) - l) | |
} | |
} | |
c.setStyles(o, { | |
left: p, | |
top: n | |
}); | |
z.element.update(); | |
z.isMenuVisible = 1; | |
z.mouseClickFunc = a.add(o, "click", | |
function(s) { | |
var h; | |
s = s.target; | |
if (s && (s = c.getParent(s, "tr")) && !c.hasClass(s, m + "ItemSub")) { | |
h = z.items[s.id]; | |
if (h.isDisabled()) { | |
return | |
} | |
k = z; | |
while (k) { | |
if (k.hideMenu) { | |
k.hideMenu() | |
} | |
k = k.settings.parent | |
} | |
if (h.settings.onclick) { | |
h.settings.onclick(s) | |
} | |
return a.cancel(s) | |
} | |
}); | |
if (z.hasMenus()) { | |
z.mouseOverFunc = a.add(o, "mouseover", | |
function(x) { | |
var h, | |
t, | |
s; | |
x = x.target; | |
if (x && (x = c.getParent(x, "tr"))) { | |
h = z.items[x.id]; | |
if (z.lastMenu) { | |
z.lastMenu.collapse(1) | |
} | |
if (h.isDisabled()) { | |
return | |
} | |
if (x && c.hasClass(x, m + "ItemSub")) { | |
t = c.getRect(x); | |
h.showMenu((t.x + t.w - i), t.y - i, t.x); | |
z.lastMenu = h; | |
c.addClass(c.get(h.id).firstChild, m + "ItemActive") | |
} | |
} | |
}) | |
} | |
z.onShowMenu.dispatch(z); | |
if (A.keyboard_focus) { | |
a.add(o, "keydown", z._keyHandler, z); | |
c.select("a", "menu_" + z.id)[0].focus(); | |
z._focusIdx = 0 | |
} | |
}, | |
hideMenu: function(j) { | |
var g = this, | |
i = c.get("menu_" + g.id), | |
h; | |
if (!g.isMenuVisible) { | |
return | |
} | |
a.remove(i, "mouseover", g.mouseOverFunc); | |
a.remove(i, "click", g.mouseClickFunc); | |
a.remove(i, "keydown", g._keyHandler); | |
c.hide(i); | |
g.isMenuVisible = 0; | |
if (!j) { | |
g.collapse(1) | |
} | |
if (g.element) { | |
g.element.hide() | |
} | |
if (h = c.get(g.id)) { | |
c.removeClass(h.firstChild, g.classPrefix + "ItemActive") | |
} | |
g.onHideMenu.dispatch(g) | |
}, | |
add: function(i) { | |
var g = this, | |
h; | |
i = g.parent(i); | |
if (g.isRendered && (h = c.get("menu_" + g.id))) { | |
g._add(c.select("tbody", h)[0], i) | |
} | |
return i | |
}, | |
collapse: function(g) { | |
this.parent(g); | |
this.hideMenu(1) | |
}, | |
remove: function(g) { | |
c.remove(g.id); | |
this.destroy(); | |
return this.parent(g) | |
}, | |
destroy: function() { | |
var g = this, | |
h = c.get("menu_" + g.id); | |
a.remove(h, "mouseover", g.mouseOverFunc); | |
a.remove(h, "click", g.mouseClickFunc); | |
if (g.element) { | |
g.element.remove() | |
} | |
c.remove(h) | |
}, | |
renderNode: function() { | |
var i = this, | |
j = i.settings, | |
l, | |
h, | |
k, | |
g; | |
g = c.create("div", { | |
id: "menu_" + i.id, | |
"class": j["class"], | |
style: "position:absolute;left:0;top:0;z-index:200000" | |
}); | |
k = c.add(g, "div", { | |
id: "menu_" + i.id + "_co", | |
"class": i.classPrefix + (j["class"] ? " " + j["class"] : "") | |
}); | |
i.element = new b("menu_" + i.id, { | |
blocker: 1, | |
container: j.container | |
}); | |
if (j.menu_line) { | |
c.add(k, "span", { | |
"class": i.classPrefix + "Line" | |
}) | |
} | |
l = c.add(k, "table", { | |
id: "menu_" + i.id + "_tbl", | |
border: 0, | |
cellPadding: 0, | |
cellSpacing: 0 | |
}); | |
h = c.add(l, "tbody"); | |
f(i.items, | |
function(m) { | |
i._add(h, m) | |
}); | |
i.rendered = true; | |
return g | |
}, | |
_keyHandler: function(j) { | |
var i = this, | |
h = j.keyCode; | |
function g(m) { | |
var k = i._focusIdx + m, | |
l = c.select("a", "menu_" + i.id)[k]; | |
if (l) { | |
i._focusIdx = k; | |
l.focus() | |
} | |
} | |
switch (h) { | |
case 38: | |
g( - 1); | |
return; | |
case 40: | |
g(1); | |
return; | |
case 13: | |
return; | |
case 27: | |
return this.hideMenu() | |
} | |
}, | |
_add: function(j, h) { | |
var i, | |
q = h.settings, | |
p, | |
l, | |
k, | |
m = this.classPrefix, | |
g; | |
if (q.separator) { | |
l = c.add(j, "tr", { | |
id: h.id, | |
"class": m + "ItemSeparator" | |
}); | |
c.add(l, "td", { | |
"class": m + "ItemSeparator" | |
}); | |
if (i = l.previousSibling) { | |
c.addClass(i, "mceLast") | |
} | |
return | |
} | |
i = l = c.add(j, "tr", { | |
id: h.id, | |
"class": m + "Item " + m + "ItemEnabled" | |
}); | |
i = k = c.add(i, "td"); | |
i = p = c.add(i, "a", { | |
href: "javascript:;", | |
onclick: "return false;", | |
onmousedown: "return false;" | |
}); | |
c.addClass(k, q["class"]); | |
g = c.add(i, "span", { | |
"class": "mceIcon" + (q.icon ? " mce_" + q.icon: "") | |
}); | |
if (q.icon_src) { | |
c.add(g, "img", { | |
src: q.icon_src | |
}) | |
} | |
i = c.add(i, q.element || "span", { | |
"class": "mceText", | |
title: h.settings.title | |
}, | |
h.settings.title); | |
if (h.settings.style) { | |
c.setAttrib(i, "style", h.settings.style) | |
} | |
if (j.childNodes.length == 1) { | |
c.addClass(l, "mceFirst") | |
} | |
if ((i = l.previousSibling) && c.hasClass(i, m + "ItemSeparator")) { | |
c.addClass(l, "mceFirst") | |
} | |
if (h.collapse) { | |
c.addClass(l, m + "ItemSub") | |
} | |
if (i = l.previousSibling) { | |
c.removeClass(i, "mceLast") | |
} | |
c.addClass(l, "mceLast") | |
} | |
}) | |
})(tinymce); (function(b) { | |
var a = b.DOM; | |
b.create("tinymce.ui.Button:tinymce.ui.Control", { | |
Button: function(d, c) { | |
this.parent(d, c); | |
this.classPrefix = "mceButton" | |
}, | |
renderHTML: function() { | |
var f = this.classPrefix, | |
e = this.settings, | |
d, | |
c; | |
c = a.encode(e.label || ""); | |
d = '<a id="' + this.id + '" href="javascript:;" class="' + f + " " + f + "Enabled " + e["class"] + (c ? " " + f + "Labeled": "") + '" onmousedown="return false;" onclick="return false;" title="' + a.encode(e.title) + '">'; | |
if (e.image) { | |
d += '<img class="mceIcon" src="' + e.image + '" />' + c + "</a>" | |
} else { | |
d += '<span class="mceIcon ' + e["class"] + '"></span>' + (c ? '<span class="' + f + 'Label">' + c + "</span>": "") + "</a>" | |
} | |
return d | |
}, | |
postRender: function() { | |
var c = this, | |
d = c.settings; | |
b.dom.Event.add(c.id, "click", | |
function(f) { | |
if (!c.isDisabled()) { | |
return d.onclick.call(d.scope, f) | |
} | |
}) | |
} | |
}) | |
})(tinymce); (function(d) { | |
var c = d.DOM, | |
b = d.dom.Event, | |
e = d.each, | |
a = d.util.Dispatcher; | |
d.create("tinymce.ui.ListBox:tinymce.ui.Control", { | |
ListBox: function(h, g) { | |
var f = this; | |
f.parent(h, g); | |
f.items = []; | |
f.onChange = new a(f); | |
f.onPostRender = new a(f); | |
f.onAdd = new a(f); | |
f.onRenderMenu = new d.util.Dispatcher(this); | |
f.classPrefix = "mceListBox" | |
}, | |
select: function(h) { | |
var g = this, | |
j, | |
i; | |
if (h == undefined) { | |
return g.selectByIndex( - 1) | |
} | |
if (h && h.call) { | |
i = h | |
} else { | |
i = function(f) { | |
return f == h | |
} | |
} | |
if (h != g.selectedValue) { | |
e(g.items, | |
function(k, f) { | |
if (i(k.value)) { | |
j = 1; | |
g.selectByIndex(f); | |
return false | |
} | |
}); | |
if (!j) { | |
g.selectByIndex( - 1) | |
} | |
} | |
}, | |
selectByIndex: function(f) { | |
var g = this, | |
h, | |
i; | |
if (f != g.selectedIndex) { | |
h = c.get(g.id + "_text"); | |
i = g.items[f]; | |
if (i) { | |
g.selectedValue = i.value; | |
g.selectedIndex = f; | |
c.setHTML(h, c.encode(i.title)); | |
c.removeClass(h, "mceTitle") | |
} else { | |
c.setHTML(h, c.encode(g.settings.title)); | |
c.addClass(h, "mceTitle"); | |
g.selectedValue = g.selectedIndex = null | |
} | |
h = 0 | |
} | |
}, | |
add: function(i, f, h) { | |
var g = this; | |
h = h || {}; | |
h = d.extend(h, { | |
title: i, | |
value: f | |
}); | |
g.items.push(h); | |
g.onAdd.dispatch(g, h) | |
}, | |
getLength: function() { | |
return this.items.length | |
}, | |
renderHTML: function() { | |
var i = "", | |
f = this, | |
g = f.settings, | |
j = f.classPrefix; | |
i = '<table id="' + f.id + '" cellpadding="0" cellspacing="0" class="' + j + " " + j + "Enabled" + (g["class"] ? (" " + g["class"]) : "") + '"><tbody><tr>'; | |
i += "<td>" + c.createHTML("a", { | |
id: f.id + "_text", | |
href: "javascript:;", | |
"class": "mceText", | |
onclick: "return false;", | |
onmousedown: "return false;" | |
}, | |
c.encode(f.settings.title)) + "</td>"; | |
i += "<td>" + c.createHTML("a", { | |
id: f.id + "_open", | |
tabindex: -1, | |
href: "javascript:;", | |
"class": "mceOpen", | |
onclick: "return false;", | |
onmousedown: "return false;" | |
}, | |
"<span></span>") + "</td>"; | |
i += "</tr></tbody></table>"; | |
return i | |
}, | |
showMenu: function() { | |
var g = this, | |
j, | |
i, | |
h = c.get(this.id), | |
f; | |
if (g.isDisabled() || g.items.length == 0) { | |
return | |
} | |
if (g.menu && g.menu.isMenuVisible) { | |
return g.hideMenu() | |
} | |
if (!g.isMenuRendered) { | |
g.renderMenu(); | |
g.isMenuRendered = true | |
} | |
j = c.getPos(this.settings.menu_container); | |
i = c.getPos(h); | |
f = g.menu; | |
f.settings.offset_x = i.x; | |
f.settings.offset_y = i.y; | |
f.settings.keyboard_focus = !d.isOpera; | |
if (g.oldID) { | |
f.items[g.oldID].setSelected(0) | |
} | |
e(g.items, | |
function(k) { | |
if (k.value === g.selectedValue) { | |
f.items[k.id].setSelected(1); | |
g.oldID = k.id | |
} | |
}); | |
f.showMenu(0, h.clientHeight); | |
b.add(c.doc, "mousedown", g.hideMenu, g); | |
c.addClass(g.id, g.classPrefix + "Selected") | |
}, | |
hideMenu: function(g) { | |
var f = this; | |
if (f.menu && f.menu.isMenuVisible) { | |
if (g && g.type == "mousedown" && (g.target.id == f.id + "_text" || g.target.id == f.id + "_open")) { | |
return | |
} | |
if (!g || !c.getParent(g.target, ".mceMenu")) { | |
c.removeClass(f.id, f.classPrefix + "Selected"); | |
b.remove(c.doc, "mousedown", f.hideMenu, f); | |
f.menu.hideMenu() | |
} | |
} | |
}, | |
renderMenu: function() { | |
var g = this, | |
f; | |
f = g.settings.control_manager.createDropMenu(g.id + "_menu", { | |
menu_line: 1, | |
"class": g.classPrefix + "Menu mceNoIcons", | |
max_width: 150, | |
max_height: 150 | |
}); | |
f.onHideMenu.add(g.hideMenu, g); | |
f.add({ | |
title: g.settings.title, | |
"class": "mceMenuItemTitle", | |
onclick: function() { | |
if (g.settings.onselect("") !== false) { | |
g.select("") | |
} | |
} | |
}); | |
e(g.items, | |
function(h) { | |
if (h.value === undefined) { | |
f.add({ | |
title: h.title, | |
"class": "mceMenuItemTitle", | |
onclick: function() { | |
if (g.settings.onselect("") !== false) { | |
g.select("") | |
} | |
} | |
}) | |
} else { | |
h.id = c.uniqueId(); | |
h.onclick = function() { | |
if (g.settings.onselect(h.value) !== false) { | |
g.select(h.value) | |
} | |
}; | |
f.add(h) | |
} | |
}); | |
g.onRenderMenu.dispatch(g, f); | |
g.menu = f | |
}, | |
postRender: function() { | |
var f = this, | |
g = f.classPrefix; | |
b.add(f.id, "click", f.showMenu, f); | |
b.add(f.id + "_text", "focus", | |
function(h) { | |
if (!f._focused) { | |
f.keyDownHandler = b.add(f.id + "_text", "keydown", | |
function(l) { | |
var i = -1, | |
j, | |
k = l.keyCode; | |
e(f.items, | |
function(m, n) { | |
if (f.selectedValue == m.value) { | |
i = n | |
} | |
}); | |
if (k == 38) { | |
j = f.items[i - 1] | |
} else { | |
if (k == 40) { | |
j = f.items[i + 1] | |
} else { | |
if (k == 13) { | |
j = f.selectedValue; | |
f.selectedValue = null; | |
f.settings.onselect(j); | |
return b.cancel(l) | |
} | |
} | |
} | |
if (j) { | |
f.hideMenu(); | |
f.select(j.value) | |
} | |
}) | |
} | |
f._focused = 1 | |
}); | |
b.add(f.id + "_text", "blur", | |
function() { | |
b.remove(f.id + "_text", "keydown", f.keyDownHandler); | |
f._focused = 0 | |
}); | |
if (d.isIE6 || !c.boxModel) { | |
b.add(f.id, "mouseover", | |
function() { | |
if (!c.hasClass(f.id, g + "Disabled")) { | |
c.addClass(f.id, g + "Hover") | |
} | |
}); | |
b.add(f.id, "mouseout", | |
function() { | |
if (!c.hasClass(f.id, g + "Disabled")) { | |
c.removeClass(f.id, g + "Hover") | |
} | |
}) | |
} | |
f.onPostRender.dispatch(f, c.get(f.id)) | |
}, | |
destroy: function() { | |
this.parent(); | |
b.clear(this.id + "_text"); | |
b.clear(this.id + "_open") | |
} | |
}) | |
})(tinymce); (function(d) { | |
var c = d.DOM, | |
b = d.dom.Event, | |
e = d.each, | |
a = d.util.Dispatcher; | |
d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox", { | |
NativeListBox: function(g, f) { | |
this.parent(g, f); | |
this.classPrefix = "mceNativeListBox" | |
}, | |
setDisabled: function(f) { | |
c.get(this.id).disabled = f | |
}, | |
isDisabled: function() { | |
return c.get(this.id).disabled | |
}, | |
select: function(h) { | |
var g = this, | |
j, | |
i; | |
if (h == undefined) { | |
return g.selectByIndex( - 1) | |
} | |
if (h && h.call) { | |
i = h | |
} else { | |
i = function(f) { | |
return f == h | |
} | |
} | |
if (h != g.selectedValue) { | |
e(g.items, | |
function(k, f) { | |
if (i(k.value)) { | |
j = 1; | |
g.selectByIndex(f); | |
return false | |
} | |
}); | |
if (!j) { | |
g.selectByIndex( - 1) | |
} | |
} | |
}, | |
selectByIndex: function(f) { | |
c.get(this.id).selectedIndex = f + 1; | |
this.selectedValue = this.items[f] ? this.items[f].value: null | |
}, | |
add: function(j, g, f) { | |
var i, | |
h = this; | |
f = f || {}; | |
f.value = g; | |
if (h.isRendered()) { | |
c.add(c.get(this.id), "option", f, j) | |
} | |
i = { | |
title: j, | |
value: g, | |
attribs: f | |
}; | |
h.items.push(i); | |
h.onAdd.dispatch(h, i) | |
}, | |
getLength: function() { | |
return this.items.length | |
}, | |
renderHTML: function() { | |
var g, | |
f = this; | |
g = c.createHTML("option", { | |
value: "" | |
}, | |
"-- " + f.settings.title + " --"); | |
e(f.items, | |
function(h) { | |
g += c.createHTML("option", { | |
value: h.value | |
}, | |
h.title) | |
}); | |
g = c.createHTML("select", { | |
id: f.id, | |
"class": "mceNativeListBox" | |
}, | |
g); | |
return g | |
}, | |
postRender: function() { | |
var g = this, | |
h; | |
g.rendered = true; | |
function f(j) { | |
var i = g.items[j.target.selectedIndex - 1]; | |
if (i && (i = i.value)) { | |
g.onChange.dispatch(g, i); | |
if (g.settings.onselect) { | |
g.settings.onselect(i) | |
} | |
} | |
} | |
b.add(g.id, "change", f); | |
b.add(g.id, "keydown", | |
function(j) { | |
var i; | |
b.remove(g.id, "change", h); | |
i = b.add(g.id, "blur", | |
function() { | |
b.add(g.id, "change", f); | |
b.remove(g.id, "blur", i) | |
}); | |
if (j.keyCode == 13 || j.keyCode == 32) { | |
f(j); | |
return b.cancel(j) | |
} | |
}); | |
g.onPostRender.dispatch(g, c.get(g.id)) | |
} | |
}) | |
})(tinymce); (function(c) { | |
var b = c.DOM, | |
a = c.dom.Event, | |
d = c.each; | |
c.create("tinymce.ui.MenuButton:tinymce.ui.Button", { | |
MenuButton: function(f, e) { | |
this.parent(f, e); | |
this.onRenderMenu = new c.util.Dispatcher(this); | |
e.menu_container = e.menu_container || b.doc.body | |
}, | |
showMenu: function() { | |
var g = this, | |
j, | |
i, | |
h = b.get(g.id), | |
f; | |
if (g.isDisabled()) { | |
return | |
} | |
if (!g.isMenuRendered) { | |
g.renderMenu(); | |
g.isMenuRendered = true | |
} | |
if (g.isMenuVisible) { | |
return g.hideMenu() | |
} | |
j = b.getPos(g.settings.menu_container); | |
i = b.getPos(h); | |
f = g.menu; | |
f.settings.offset_x = i.x; | |
f.settings.offset_y = i.y; | |
f.settings.vp_offset_x = i.x; | |
f.settings.vp_offset_y = i.y; | |
f.settings.keyboard_focus = g._focused; | |
f.showMenu(0, h.clientHeight); | |
a.add(b.doc, "mousedown", g.hideMenu, g); | |
g.setState("Selected", 1); | |
g.isMenuVisible = 1 | |
}, | |
renderMenu: function() { | |
var f = this, | |
e; | |
e = f.settings.control_manager.createDropMenu(f.id + "_menu", { | |
menu_line: 1, | |
"class": this.classPrefix + "Menu", | |
icons: f.settings.icons | |
}); | |
e.onHideMenu.add(f.hideMenu, f); | |
f.onRenderMenu.dispatch(f, e); | |
f.menu = e | |
}, | |
hideMenu: function(g) { | |
var f = this; | |
if (g && g.type == "mousedown" && b.getParent(g.target, | |
function(h) { | |
return h.id === f.id || h.id === f.id + "_open" | |
})) { | |
return | |
} | |
if (!g || !b.getParent(g.target, ".mceMenu")) { | |
f.setState("Selected", 0); | |
a.remove(b.doc, "mousedown", f.hideMenu, f); | |
if (f.menu) { | |
f.menu.hideMenu() | |
} | |
} | |
f.isMenuVisible = 0 | |
}, | |
postRender: function() { | |
var e = this, | |
f = e.settings; | |
a.add(e.id, "click", | |
function() { | |
if (!e.isDisabled()) { | |
if (f.onclick) { | |
f.onclick(e.value) | |
} | |
e.showMenu() | |
} | |
}) | |
} | |
}) | |
})(tinymce); (function(c) { | |
var b = c.DOM, | |
a = c.dom.Event, | |
d = c.each; | |
c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton", { | |
SplitButton: function(f, e) { | |
this.parent(f, e); | |
this.classPrefix = "mceSplitButton" | |
}, | |
renderHTML: function() { | |
var i, | |
f = this, | |
g = f.settings, | |
e; | |
i = "<tbody><tr>"; | |
if (g.image) { | |
e = b.createHTML("img ", { | |
src: g.image, | |
"class": "mceAction " + g["class"] | |
}) | |
} else { | |
e = b.createHTML("span", { | |
"class": "mceAction " + g["class"] | |
}, | |
"") | |
} | |
i += "<td>" + b.createHTML("a", { | |
id: f.id + "_action", | |
href: "javascript:;", | |
"class": "mceAction " + g["class"], | |
onclick: "return false;", | |
onmousedown: "return false;", | |
title: g.title | |
}, | |
e) + "</td>"; | |
e = b.createHTML("span", { | |
"class": "mceOpen " + g["class"] | |
}); | |
i += "<td>" + b.createHTML("a", { | |
id: f.id + "_open", | |
href: "javascript:;", | |
"class": "mceOpen " + g["class"], | |
onclick: "return false;", | |
onmousedown: "return false;", | |
title: g.title | |
}, | |
e) + "</td>"; | |
i += "</tr></tbody>"; | |
return b.createHTML("table", { | |
id: f.id, | |
"class": "mceSplitButton mceSplitButtonEnabled " + g["class"], | |
cellpadding: "0", | |
cellspacing: "0", | |
onmousedown: "return false;", | |
title: g.title | |
}, | |
i) | |
}, | |
postRender: function() { | |
var e = this, | |
f = e.settings; | |
if (f.onclick) { | |
a.add(e.id + "_action", "click", | |
function() { | |
if (!e.isDisabled()) { | |
f.onclick(e.value) | |
} | |
}) | |
} | |
a.add(e.id + "_open", "click", e.showMenu, e); | |
a.add(e.id + "_open", "focus", | |
function() { | |
e._focused = 1 | |
}); | |
a.add(e.id + "_open", "blur", | |
function() { | |
e._focused = 0 | |
}); | |
if (c.isIE6 || !b.boxModel) { | |
a.add(e.id, "mouseover", | |
function() { | |
if (!b.hasClass(e.id, "mceSplitButtonDisabled")) { | |
b.addClass(e.id, "mceSplitButtonHover") | |
} | |
}); | |
a.add(e.id, "mouseout", | |
function() { | |
if (!b.hasClass(e.id, "mceSplitButtonDisabled")) { | |
b.removeClass(e.id, "mceSplitButtonHover") | |
} | |
}) | |
} | |
}, | |
destroy: function() { | |
this.parent(); | |
a.clear(this.id + "_action"); | |
a.clear(this.id + "_open") | |
} | |
}) | |
})(tinymce); (function(d) { | |
var c = d.DOM, | |
a = d.dom.Event, | |
b = d.is, | |
e = d.each; | |
d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton", { | |
ColorSplitButton: function(h, g) { | |
var f = this; | |
f.parent(h, g); | |
f.settings = g = d.extend({ | |
colors: "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF", | |
grid_width: 8, | |
default_color: "#888888" | |
}, | |
f.settings); | |
f.onShowMenu = new d.util.Dispatcher(f); | |
f.onHideMenu = new d.util.Dispatcher(f); | |
f.value = g.default_color | |
}, | |
showMenu: function() { | |
var f = this, | |
g, | |
j, | |
i, | |
h; | |
if (f.isDisabled()) { | |
return | |
} | |
if (!f.isMenuRendered) { | |
f.renderMenu(); | |
f.isMenuRendered = true | |
} | |
if (f.isMenuVisible) { | |
return f.hideMenu() | |
} | |
i = c.get(f.id); | |
c.show(f.id + "_menu"); | |
c.addClass(i, "mceSplitButtonSelected"); | |
h = c.getPos(i); | |
c.setStyles(f.id + "_menu", { | |
left: h.x, | |
top: h.y + i.clientHeight, | |
zIndex: 200000 | |
}); | |
i = 0; | |
a.add(c.doc, "mousedown", f.hideMenu, f); | |
f.onShowMenu.dispatch(f); | |
if (f._focused) { | |
f._keyHandler = a.add(f.id + "_menu", "keydown", | |
function(k) { | |
if (k.keyCode == 27) { | |
f.hideMenu() | |
} | |
}); | |
c.select("a", f.id + "_menu")[0].focus() | |
} | |
f.isMenuVisible = 1 | |
}, | |
hideMenu: function(g) { | |
var f = this; | |
if (g && g.type == "mousedown" && c.getParent(g.target, | |
function(h) { | |
return h.id === f.id + "_open" | |
})) { | |
return | |
} | |
if (!g || !c.getParent(g.target, ".mceSplitButtonMenu")) { | |
c.removeClass(f.id, "mceSplitButtonSelected"); | |
a.remove(c.doc, "mousedown", f.hideMenu, f); | |
a.remove(f.id + "_menu", "keydown", f._keyHandler); | |
c.hide(f.id + "_menu") | |
} | |
f.onHideMenu.dispatch(f); | |
f.isMenuVisible = 0 | |
}, | |
renderMenu: function() { | |
var k = this, | |
f, | |
j = 0, | |
l = k.settings, | |
p, | |
h, | |
o, | |
g; | |
g = c.add(l.menu_container, "div", { | |
id: k.id + "_menu", | |
"class": l.menu_class + " " + l["class"], | |
style: "position:absolute;left:0;top:-1000px;" | |
}); | |
f = c.add(g, "div", { | |
"class": l["class"] + " mceSplitButtonMenu" | |
}); | |
c.add(f, "span", { | |
"class": "mceMenuLine" | |
}); | |
p = c.add(f, "table", { | |
"class": "mceColorSplitMenu" | |
}); | |
h = c.add(p, "tbody"); | |
j = 0; | |
e(b(l.colors, "array") ? l.colors: l.colors.split(","), | |
function(i) { | |
i = i.replace(/^#/, ""); | |
if (!j--) { | |
o = c.add(h, "tr"); | |
j = l.grid_width - 1 | |
} | |
p = c.add(o, "td"); | |
p = c.add(p, "a", { | |
href: "javascript:;", | |
style: { | |
backgroundColor: "#" + i | |
}, | |
_mce_color: "#" + i | |
}) | |
}); | |
if (l.more_colors_func) { | |
p = c.add(h, "tr"); | |
p = c.add(p, "td", { | |
colspan: l.grid_width, | |
"class": "mceMoreColors" | |
}); | |
p = c.add(p, "a", { | |
id: k.id + "_more", | |
href: "javascript:;", | |
onclick: "return false;", | |
"class": "mceMoreColors" | |
}, | |
l.more_colors_title); | |
a.add(p, "click", | |
function(i) { | |
l.more_colors_func.call(l.more_colors_scope || this); | |
return a.cancel(i) | |
}) | |
} | |
c.addClass(f, "mceColorSplitMenu"); | |
a.add(k.id + "_menu", "click", | |
function(i) { | |
var m; | |
i = i.target; | |
if (i.nodeName == "A" && (m = i.getAttribute("_mce_color"))) { | |
k.setColor(m) | |
} | |
return a.cancel(i) | |
}); | |
return g | |
}, | |
setColor: function(g) { | |
var f = this; | |
c.setStyle(f.id + "_preview", "backgroundColor", g); | |
f.value = g; | |
f.hideMenu(); | |
f.settings.onselect(g) | |
}, | |
postRender: function() { | |
var f = this, | |
g = f.id; | |
f.parent(); | |
c.add(g + "_action", "div", { | |
id: g + "_preview", | |
"class": "mceColorPreview" | |
}); | |
c.setStyle(f.id + "_preview", "backgroundColor", f.value) | |
}, | |
destroy: function() { | |
this.parent(); | |
a.clear(this.id + "_menu"); | |
a.clear(this.id + "_more"); | |
c.remove(this.id + "_menu") | |
} | |
}) | |
})(tinymce); | |
tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container", { | |
renderHTML: function() { | |
var l = this, | |
e = "", | |
g, | |
j, | |
b = tinymce.DOM, | |
m = l.settings, | |
d, | |
a, | |
f, | |
k; | |
k = l.controls; | |
for (d = 0; d < k.length; d++) { | |
j = k[d]; | |
a = k[d - 1]; | |
f = k[d + 1]; | |
if (d === 0) { | |
g = "mceToolbarStart"; | |
if (j.Button) { | |
g += " mceToolbarStartButton" | |
} else { | |
if (j.SplitButton) { | |
g += " mceToolbarStartSplitButton" | |
} else { | |
if (j.ListBox) { | |
g += " mceToolbarStartListBox" | |
} | |
} | |
} | |
e += b.createHTML("td", { | |
"class": g | |
}, | |
b.createHTML("span", null, "<!-- IE -->")) | |
} | |
if (a && j.ListBox) { | |
if (a.Button || a.SplitButton) { | |
e += b.createHTML("td", { | |
"class": "mceToolbarEnd" | |
}, | |
b.createHTML("span", null, "<!-- IE -->")) | |
} | |
} | |
if (b.stdMode) { | |
e += '<td style="position: relative">' + j.renderHTML() + "</td>" | |
} else { | |
e += "<td>" + j.renderHTML() + "</td>" | |
} | |
if (f && j.ListBox) { | |
if (f.Button || f.SplitButton) { | |
e += b.createHTML("td", { | |
"class": "mceToolbarStart" | |
}, | |
b.createHTML("span", null, "<!-- IE -->")) | |
} | |
} | |
} | |
g = "mceToolbarEnd"; | |
if (j.Button) { | |
g += " mceToolbarEndButton" | |
} else { | |
if (j.SplitButton) { | |
g += " mceToolbarEndSplitButton" | |
} else { | |
if (j.ListBox) { | |
g += " mceToolbarEndListBox" | |
} | |
} | |
} | |
e += b.createHTML("td", { | |
"class": g | |
}, | |
b.createHTML("span", null, "<!-- IE -->")); | |
return b.createHTML("table", { | |
id: l.id, | |
"class": "mceToolbar" + (m["class"] ? " " + m["class"] : ""), | |
cellpadding: "0", | |
cellspacing: "0", | |
align: l.settings.align || "" | |
}, | |
"<tbody><tr>" + e + "</tr></tbody>") | |
} | |
}); (function(b) { | |
var a = b.util.Dispatcher, | |
c = b.each; | |
b.create("tinymce.AddOnManager", { | |
items: [], | |
urls: {}, | |
lookup: {}, | |
onAdd: new a(this), | |
get: function(d) { | |
return this.lookup[d] | |
}, | |
requireLangPack: function(e) { | |
var d = b.settings; | |
if (d && d.language) { | |
b.ScriptLoader.add(this.urls[e] + "/langs/" + d.language + ".js") | |
} | |
}, | |
add: function(e, d) { | |
this.items.push(d); | |
this.lookup[e] = d; | |
this.onAdd.dispatch(this, e, d); | |
return d | |
}, | |
load: function(h, e, d, g) { | |
var f = this; | |
if (f.urls[h]) { | |
return | |
} | |
if (e.indexOf("/") != 0 && e.indexOf("://") == -1) { | |
e = b.baseURL + "/" + e | |
} | |
f.urls[h] = e.substring(0, e.lastIndexOf("/")); | |
b.ScriptLoader.add(e, d, g) | |
} | |
}); | |
b.PluginManager = new b.AddOnManager(); | |
b.ThemeManager = new b.AddOnManager() | |
} (tinymce)); (function(j) { | |
var g = j.each, | |
d = j.extend, | |
k = j.DOM, | |
i = j.dom.Event, | |
f = j.ThemeManager, | |
b = j.PluginManager, | |
e = j.explode, | |
h = j.util.Dispatcher, | |
a, | |
c = 0; | |
j.documentBaseURL = window.location.href.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""); | |
if (!/[\/\\]$/.test(j.documentBaseURL)) { | |
j.documentBaseURL += "/" | |
} | |
j.baseURL = new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL); | |
j.baseURI = new j.util.URI(j.baseURL); | |
j.onBeforeUnload = new h(j); | |
i.add(window, "beforeunload", | |
function(l) { | |
j.onBeforeUnload.dispatch(j, l) | |
}); | |
j.onAddEditor = new h(j); | |
j.onRemoveEditor = new h(j); | |
j.EditorManager = d(j, { | |
editors: [], | |
i18n: {}, | |
activeEditor: null, | |
init: function(q) { | |
var n = this, | |
p, | |
l = j.ScriptLoader, | |
u, | |
o = [], | |
m; | |
function r(x, y, t) { | |
var v = x[y]; | |
if (!v) { | |
return | |
} | |
if (j.is(v, "string")) { | |
t = v.replace(/\.\w+$/, ""); | |
t = t ? j.resolve(t) : 0; | |
v = j.resolve(v) | |
} | |
return v.apply(t || this, Array.prototype.slice.call(arguments, 2)) | |
} | |
q = d({ | |
theme: "simple", | |
language: "en" | |
}, | |
q); | |
n.settings = q; | |
i.add(document, "init", | |
function() { | |
var s, | |
v; | |
r(q, "onpageload"); | |
switch (q.mode) { | |
case "exact": | |
s = q.elements || ""; | |
if (s.length > 0) { | |
g(e(s), | |
function(x) { | |
if (k.get(x)) { | |
m = new j.Editor(x, q); | |
o.push(m); | |
m.render(1) | |
} else { | |
g(document.forms, | |
function(y) { | |
g(y.elements, | |
function(z) { | |
if (z.name === x) { | |
x = "mce_editor_" + c++; | |
k.setAttrib(z, "id", x); | |
m = new j.Editor(x, q); | |
o.push(m); | |
m.render(1) | |
} | |
}) | |
}) | |
} | |
}) | |
} | |
break; | |
case "textareas": | |
case "specific_textareas": | |
function t(y, x) { | |
return x.constructor === RegExp ? x.test(y.className) : k.hasClass(y, x) | |
} | |
g(k.select("textarea"), | |
function(x) { | |
if (q.editor_deselector && t(x, q.editor_deselector)) { | |
return | |
} | |
if (!q.editor_selector || t(x, q.editor_selector)) { | |
u = k.get(x.name); | |
if (!x.id && !u) { | |
x.id = x.name | |
} | |
if (!x.id || n.get(x.id)) { | |
x.id = k.uniqueId() | |
} | |
m = new j.Editor(x.id, q); | |
o.push(m); | |
m.render(1) | |
} | |
}); | |
break | |
} | |
if (q.oninit) { | |
s = v = 0; | |
g(o, | |
function(x) { | |
v++; | |
if (!x.initialized) { | |
x.onInit.add(function() { | |
s++; | |
if (s == v) { | |
r(q, "oninit") | |
} | |
}) | |
} else { | |
s++ | |
} | |
if (s == v) { | |
r(q, "oninit") | |
} | |
}) | |
} | |
}) | |
}, | |
get: function(l) { | |
if (l === a) { | |
return this.editors | |
} | |
return this.editors[l] | |
}, | |
getInstanceById: function(l) { | |
return this.get(l) | |
}, | |
add: function(m) { | |
var l = this, | |
n = l.editors; | |
n[m.id] = m; | |
n.push(m); | |
l._setActive(m); | |
l.onAddEditor.dispatch(l, m); | |
return m | |
}, | |
remove: function(n) { | |
var m = this, | |
l, | |
o = m.editors; | |
if (!o[n.id]) { | |
return null | |
} | |
delete o[n.id]; | |
for (l = 0; l < o.length; l++) { | |
if (o[l] == n) { | |
o.splice(l, 1); | |
break | |
} | |
} | |
if (m.activeEditor == n) { | |
m._setActive(o[0]) | |
} | |
n.destroy(); | |
m.onRemoveEditor.dispatch(m, n); | |
return n | |
}, | |
execCommand: function(r, p, o) { | |
var q = this, | |
n = q.get(o), | |
l; | |
switch (r) { | |
case "mceFocus": | |
n.focus(); | |
return true; | |
case "mceAddEditor": | |
case "mceAddControl": | |
if (!q.get(o)) { | |
new j.Editor(o, q.settings).render() | |
} | |
return true; | |
case "mceAddFrameControl": | |
l = o.window; | |
l.tinyMCE = tinyMCE; | |
l.tinymce = j; | |
j.DOM.doc = l.document; | |
j.DOM.win = l; | |
n = new j.Editor(o.element_id, o); | |
n.render(); | |
if (j.isIE) { | |
function m() { | |
n.destroy(); | |
l.detachEvent("onunload", m); | |
l = l.tinyMCE = l.tinymce = null | |
} | |
l.attachEvent("onunload", m) | |
} | |
o.page_window = null; | |
return true; | |
case "mceRemoveEditor": | |
case "mceRemoveControl": | |
if (n) { | |
n.remove() | |
} | |
return true; | |
case "mceToggleEditor": | |
if (!n) { | |
q.execCommand("mceAddControl", 0, o); | |
return true | |
} | |
if (n.isHidden()) { | |
n.show() | |
} else { | |
n.hide() | |
} | |
return true | |
} | |
if (q.activeEditor) { | |
return q.activeEditor.execCommand(r, p, o) | |
} | |
return false | |
}, | |
execInstanceCommand: function(p, o, n, m) { | |
var l = this.get(p); | |
if (l) { | |
return l.execCommand(o, n, m) | |
} | |
return false | |
}, | |
triggerSave: function() { | |
g(this.editors, | |
function(l) { | |
l.save() | |
}) | |
}, | |
addI18n: function(n, q) { | |
var l, | |
m = this.i18n; | |
if (!j.is(n, "string")) { | |
g(n, | |
function(r, p) { | |
g(r, | |
function(t, s) { | |
g(t, | |
function(v, u) { | |
if (s === "common") { | |
m[p + "." + u] = v | |
} else { | |
m[p + "." + s + "." + u] = v | |
} | |
}) | |
}) | |
}) | |
} else { | |
g(q, | |
function(r, p) { | |
m[n + "." + p] = r | |
}) | |
} | |
}, | |
_setActive: function(l) { | |
this.selectedInstance = this.activeEditor = l | |
} | |
}) | |
})(tinymce); (function(m) { | |
var n = m.DOM, | |
j = m.dom.Event, | |
f = m.extend, | |
k = m.util.Dispatcher, | |
i = m.each, | |
a = m.isGecko, | |
b = m.isIE, | |
e = m.isWebKit, | |
d = m.is, | |
h = m.ThemeManager, | |
c = m.PluginManager, | |
o = m.inArray, | |
l = m.grep, | |
g = m.explode; | |
m.create("tinymce.Editor", { | |
Editor: function(r, q) { | |
var p = this; | |
p.id = p.editorId = r; | |
p.execCommands = {}; | |
p.queryStateCommands = {}; | |
p.queryValueCommands = {}; | |
p.isNotDirty = false; | |
p.plugins = {}; | |
i(["onPreInit", "onBeforeRenderUI", "onPostRender", "onInit", "onRemove", "onActivate", "onDeactivate", "onClick", "onEvent", "onMouseUp", "onMouseDown", "onDblClick", "onKeyDown", "onKeyUp", "onKeyPress", "onContextMenu", "onSubmit", "onReset", "onPaste", "onPreProcess", "onPostProcess", "onBeforeSetContent", "onBeforeGetContent", "onSetContent", "onGetContent", "onLoadContent", "onSaveContent", "onNodeChange", "onChange", "onBeforeExecCommand", "onExecCommand", "onUndo", "onRedo", "onVisualAid", "onSetProgressState"], | |
function(s) { | |
p[s] = new k(p) | |
}); | |
p.settings = q = f({ | |
id: r, | |
language: "en", | |
docs_language: "en", | |
theme: "simple", | |
skin: "default", | |
delta_width: 0, | |
delta_height: 0, | |
popup_css: "", | |
plugins: "", | |
document_base_url: m.documentBaseURL, | |
add_form_submit_trigger: 1, | |
submit_patch: 1, | |
add_unload_trigger: 1, | |
convert_urls: 1, | |
relative_urls: 1, | |
remove_script_host: 1, | |
table_inline_editing: 0, | |
object_resizing: 1, | |
cleanup: 1, | |
accessibility_focus: 1, | |
custom_shortcuts: 1, | |
custom_undo_redo_keyboard_shortcuts: 1, | |
custom_undo_redo_restore_selection: 1, | |
custom_undo_redo: 1, | |
doctype: m.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">': "<!DOCTYPE>", | |
visual_table_class: "mceItemTable", | |
visual: 1, | |
font_size_style_values: "xx-small,x-small,small,medium,large,x-large,xx-large", | |
apply_source_formatting: 1, | |
directionality: "ltr", | |
forced_root_block: "p", | |
valid_elements: "@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big", | |
hidden_input: 1, | |
padd_empty_editor: 1, | |
render_ui: 1, | |
init_theme: 1, | |
force_p_newlines: 1, | |
indentation: "30px", | |
keep_styles: 1, | |
fix_table_elements: 1, | |
inline_styles: 1, | |
convert_fonts_to_spans: true | |
}, | |
q); | |
p.documentBaseURI = new m.util.URI(q.document_base_url || m.documentBaseURL, { | |
base_uri: tinyMCE.baseURI | |
}); | |
p.baseURI = m.baseURI; | |
p.execCallback("setup", p) | |
}, | |
render: function(r) { | |
var u = this, | |
v = u.settings, | |
x = u.id, | |
p = m.ScriptLoader; | |
if (!j.domLoaded) { | |
j.add(document, "init", | |
function() { | |
u.render() | |
}); | |
return | |
} | |
tinyMCE.settings = v; | |
if (!u.getElement()) { | |
return | |
} | |
if (!/TEXTAREA|INPUT/i.test(u.getElement().nodeName) && v.hidden_input && n.getParent(x, "form")) { | |
n.insertAfter(n.create("input", { | |
type: "hidden", | |
name: x | |
}), x) | |
} | |
if (m.WindowManager) { | |
u.windowManager = new m.WindowManager(u) | |
} | |
if (v.encoding == "xml") { | |
u.onGetContent.add(function(s, t) { | |
if (t.save) { | |
t.content = n.encode(t.content) | |
} | |
}) | |
} | |
if (v.add_form_submit_trigger) { | |
u.onSubmit.addToTop(function() { | |
if (u.initialized) { | |
u.save(); | |
u.isNotDirty = 1 | |
} | |
}) | |
} | |
if (v.add_unload_trigger) { | |
u._beforeUnload = tinyMCE.onBeforeUnload.add(function() { | |
if (u.initialized && !u.destroyed && !u.isHidden()) { | |
u.save({ | |
format: "raw", | |
no_events: true | |
}) | |
} | |
}) | |
} | |
m.addUnload(u.destroy, u); | |
if (v.submit_patch) { | |
u.onBeforeRenderUI.add(function() { | |
var s = u.getElement().form; | |
if (!s) { | |
return | |
} | |
if (s._mceOldSubmit) { | |
return | |
} | |
if (!s.submit.nodeType && !s.submit.length) { | |
u.formElement = s; | |
s._mceOldSubmit = s.submit; | |
s.submit = function() { | |
m.triggerSave(); | |
u.isNotDirty = 1; | |
return u.formElement._mceOldSubmit(u.formElement) | |
} | |
} | |
s = null | |
}) | |
} | |
function q() { | |
if (v.language) { | |
p.add(m.baseURL + "/langs/" + v.language + ".js") | |
} | |
if (v.theme && v.theme.charAt(0) != "-" && !h.urls[v.theme]) { | |
h.load(v.theme, "themes/" + v.theme + "/editor_template" + m.suffix + ".js") | |
} | |
i(g(v.plugins), | |
function(s) { | |
if (s && s.charAt(0) != "-" && !c.urls[s]) { | |
if (s == "safari") { | |
return | |
} | |
c.load(s, "plugins/" + s + "/editor_plugin" + m.suffix + ".js") | |
} | |
}); | |
p.loadQueue(function() { | |
if (!u.removed) { | |
u.init() | |
} | |
}) | |
} | |
q() | |
}, | |
init: function() { | |
var r, | |
E = this, | |
F = E.settings, | |
B, | |
y, | |
A = E.getElement(), | |
q, | |
p, | |
C, | |
x, | |
z, | |
D; | |
m.add(E); | |
if (F.theme) { | |
F.theme = F.theme.replace(/-/, ""); | |
q = h.get(F.theme); | |
E.theme = new q(); | |
if (E.theme.init && F.init_theme) { | |
E.theme.init(E, h.urls[F.theme] || m.documentBaseURL.replace(/\/$/, "")) | |
} | |
} | |
i(g(F.plugins.replace(/\-/g, "")), | |
function(G) { | |
var H = c.get(G), | |
t = c.urls[G] || m.documentBaseURL.replace(/\/$/, ""), | |
s; | |
if (H) { | |
s = new H(E, t); | |
E.plugins[G] = s; | |
if (s.init) { | |
s.init(E, t) | |
} | |
} | |
}); | |
if (F.popup_css !== false) { | |
if (F.popup_css) { | |
F.popup_css = E.documentBaseURI.toAbsolute(F.popup_css) | |
} else { | |
F.popup_css = E.baseURI.toAbsolute("themes/" + F.theme + "/skins/" + F.skin + "/dialog.css") | |
} | |
} | |
if (F.popup_css_add) { | |
F.popup_css += "," + E.documentBaseURI.toAbsolute(F.popup_css_add) | |
} | |
E.controlManager = new m.ControlManager(E); | |
if (F.custom_undo_redo) { | |
E.onBeforeExecCommand.add(function(t, G, u, H, s) { | |
if (G != "Undo" && G != "Redo" && G != "mceRepaint" && (!s || !s.skip_undo)) { | |
if (!E.undoManager.hasUndo()) { | |
E.undoManager.add() | |
} | |
} | |
}); | |
E.onExecCommand.add(function(t, G, u, H, s) { | |
if (G != "Undo" && G != "Redo" && G != "mceRepaint" && (!s || !s.skip_undo)) { | |
E.undoManager.add() | |
} | |
}) | |
} | |
E.onExecCommand.add(function(s, t) { | |
if (!/^(FontName|FontSize)$/.test(t)) { | |
E.nodeChanged() | |
} | |
}); | |
if (a) { | |
function v(s, t) { | |
if (!t || !t.initial) { | |
E.execCommand("mceRepaint") | |
} | |
} | |
E.onUndo.add(v); | |
E.onRedo.add(v); | |
E.onSetContent.add(v) | |
} | |
E.onBeforeRenderUI.dispatch(E, E.controlManager); | |
if (F.render_ui) { | |
B = F.width || A.style.width || A.offsetWidth; | |
y = F.height || A.style.height || A.offsetHeight; | |
E.orgDisplay = A.style.display; | |
D = /^[0-9\.]+(|px)$/i; | |
if (D.test("" + B)) { | |
B = Math.max(parseInt(B) + (q.deltaWidth || 0), 100) | |
} | |
if (D.test("" + y)) { | |
y = Math.max(parseInt(y) + (q.deltaHeight || 0), 100) | |
} | |
q = E.theme.renderUI({ | |
targetNode: A, | |
width: B, | |
height: y, | |
deltaWidth: F.delta_width, | |
deltaHeight: F.delta_height | |
}); | |
E.editorContainer = q.editorContainer | |
} | |
if (document.domain && location.hostname != document.domain) { | |
m.relaxedDomain = document.domain | |
} | |
n.setStyles(q.sizeContainer || q.editorContainer, { | |
width: B, | |
height: y | |
}); | |
y = (q.iframeHeight || y) + (typeof(y) == "number" ? (q.deltaHeight || 0) : ""); | |
if (y < 100) { | |
y = 100 | |
} | |
E.iframeHTML = F.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">'; | |
if (F.document_base_url != m.documentBaseURL) { | |
E.iframeHTML += '<base href="' + E.documentBaseURI.getURI() + '" />' | |
} | |
E.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; | |
if (m.relaxedDomain) { | |
E.iframeHTML += '<script type="text/javascript">document.domain = "' + m.relaxedDomain + '";<\/script>' | |
} | |
x = F.body_id || "tinymce"; | |
if (x.indexOf("=") != -1) { | |
x = E.getParam("body_id", "", "hash"); | |
x = x[E.id] || x | |
} | |
z = F.body_class || ""; | |
if (z.indexOf("=") != -1) { | |
z = E.getParam("body_class", "", "hash"); | |
z = z[E.id] || "" | |
} | |
E.iframeHTML += '</head><body id="' + x + '" class="mceContentBody ' + z + '"></body></html>'; | |
if (m.relaxedDomain) { | |
if (b || (m.isOpera && parseFloat(opera.version()) >= 9.5)) { | |
C = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + E.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()' | |
} else { | |
if (m.isOpera) { | |
C = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()' | |
} | |
} | |
} | |
r = n.add(q.iframeContainer, "iframe", { | |
id: E.id + "_ifr", | |
src: C || 'javascript:""', | |
frameBorder: "0", | |
style: { | |
width: "100%", | |
height: y | |
} | |
}); | |
E.contentAreaContainer = q.iframeContainer; | |
n.get(q.editorContainer).style.display = E.orgDisplay; | |
n.get(E.id).style.display = "none"; | |
if (!b || !m.relaxedDomain) { | |
E.setupIframe() | |
} | |
A = r = q = null | |
}, | |
setupIframe: function() { | |
var z = this, | |
A = z.settings, | |
r = n.get(z.id), | |
u = z.getDoc(), | |
q, | |
x; | |
if (!b || !m.relaxedDomain) { | |
u.open(); | |
u.write(z.iframeHTML); | |
u.close() | |
} | |
if (!b) { | |
try { | |
if (!A.readonly) { | |
u.designMode = "On" | |
} | |
} catch(v) {} | |
} | |
if (b) { | |
x = z.getBody(); | |
n.hide(x); | |
if (!A.readonly) { | |
x.contentEditable = true | |
} | |
n.show(x) | |
} | |
z.dom = new m.dom.DOMUtils(z.getDoc(), { | |
keep_values: true, | |
url_converter: z.convertURL, | |
url_converter_scope: z, | |
hex_colors: A.force_hex_style_colors, | |
class_filter: A.class_filter, | |
update_styles: 1, | |
fix_ie_paragraphs: 1, | |
valid_styles: A.valid_styles | |
}); | |
z.schema = new m.dom.Schema(); | |
z.serializer = new m.dom.Serializer(f(A, { | |
valid_elements: A.verify_html === false ? "*[*]": A.valid_elements, | |
dom: z.dom, | |
schema: z.schema | |
})); | |
z.selection = new m.dom.Selection(z.dom, z.getWin(), z.serializer); | |
z.formatter = new m.Formatter(this); | |
z.formatter.register({ | |
alignleft: [{ | |
selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", | |
styles: { | |
textAlign: "left" | |
} | |
}, | |
{ | |
selector: "img,table", | |
styles: { | |
"float": "left" | |
} | |
}], | |
aligncenter: [{ | |
selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", | |
styles: { | |
textAlign: "center" | |
} | |
}, | |
{ | |
selector: "img", | |
styles: { | |
display: "block", | |
marginLeft: "auto", | |
marginRight: "auto" | |
} | |
}, | |
{ | |
selector: "table", | |
styles: { | |
marginLeft: "auto", | |
marginRight: "auto" | |
} | |
}], | |
alignright: [{ | |
selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", | |
styles: { | |
textAlign: "right" | |
} | |
}, | |
{ | |
selector: "img,table", | |
styles: { | |
"float": "right" | |
} | |
}], | |
alignfull: [{ | |
selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", | |
styles: { | |
textAlign: "justify" | |
} | |
}], | |
bold: [{ | |
inline: "strong" | |
}, | |
{ | |
inline: "span", | |
styles: { | |
fontWeight: "bold" | |
} | |
}, | |
{ | |
inline: "b" | |
}], | |
italic: [{ | |
inline: "em" | |
}, | |
{ | |
inline: "span", | |
styles: { | |
fontStyle: "italic" | |
} | |
}, | |
{ | |
inline: "i" | |
}], | |
underline: [{ | |
inline: "span", | |
styles: { | |
textDecoration: "underline" | |
}, | |
exact: true | |
}, | |
{ | |
inline: "u" | |
}], | |
strikethrough: [{ | |
inline: "span", | |
styles: { | |
textDecoration: "line-through" | |
}, | |
exact: true | |
}, | |
{ | |
inline: "u" | |
}], | |
forecolor: { | |
inline: "span", | |
styles: { | |
color: "%value" | |
} | |
}, | |
hilitecolor: { | |
inline: "span", | |
styles: { | |
backgroundColor: "%value" | |
} | |
}, | |
fontname: { | |
inline: "span", | |
styles: { | |
fontFamily: "%value" | |
} | |
}, | |
fontsize: { | |
inline: "span", | |
styles: { | |
fontSize: "%value" | |
} | |
}, | |
blockquote: { | |
block: "blockquote", | |
wrapper: 1, | |
remove: "all" | |
}, | |
removeformat: [{ | |
selector: "b,strong,em,i,font,u,strike", | |
remove: "all", | |
split: true, | |
expand: false, | |
block_expand: true, | |
deep: true | |
}, | |
{ | |
selector: "span", | |
attributes: ["style", "class"], | |
remove: "empty", | |
split: true, | |
expand: false, | |
deep: true | |
}, | |
{ | |
selector: "*", | |
attributes: ["style", "class"], | |
split: false, | |
expand: false, | |
deep: true | |
}] | |
}); | |
i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/), | |
function(s) { | |
z.formatter.register(s, { | |
block: s, | |
remove: "all" | |
}) | |
}); | |
z.formatter.register(z.settings.formats); | |
z.undoManager = new m.UndoManager(z); | |
z.undoManager.onAdd.add(function(t, s) { | |
if (!s.initial) { | |
return z.onChange.dispatch(z, s, t) | |
} | |
}); | |
z.undoManager.onUndo.add(function(t, s) { | |
return z.onUndo.dispatch(z, s, t) | |
}); | |
z.undoManager.onRedo.add(function(t, s) { | |
return z.onRedo.dispatch(z, s, t) | |
}); | |
z.forceBlocks = new m.ForceBlocks(z, { | |
forced_root_block: A.forced_root_block | |
}); | |
z.editorCommands = new m.EditorCommands(z); | |
z.serializer.onPreProcess.add(function(s, t) { | |
return z.onPreProcess.dispatch(z, t, s) | |
}); | |
z.serializer.onPostProcess.add(function(s, t) { | |
return z.onPostProcess.dispatch(z, t, s) | |
}); | |
z.onPreInit.dispatch(z); | |
if (!A.gecko_spellcheck) { | |
z.getBody().spellcheck = 0 | |
} | |
if (!A.readonly) { | |
z._addEvents() | |
} | |
z.controlManager.onPostRender.dispatch(z, z.controlManager); | |
z.onPostRender.dispatch(z); | |
if (A.directionality) { | |
z.getBody().dir = A.directionality | |
} | |
if (A.nowrap) { | |
z.getBody().style.whiteSpace = "nowrap" | |
} | |
if (A.custom_elements) { | |
function y(s, t) { | |
i(g(A.custom_elements), | |
function(B) { | |
var C; | |
if (B.indexOf("~") === 0) { | |
B = B.substring(1); | |
C = "span" | |
} else { | |
C = "div" | |
} | |
t.content = t.content.replace(new RegExp("<(" + B + ")([^>]*)>", "g"), "<" + C + ' _mce_name="$1"$2>'); | |
t.content = t.content.replace(new RegExp("</(" + B + ")>", "g"), "</" + C + ">") | |
}) | |
} | |
z.onBeforeSetContent.add(y); | |
z.onPostProcess.add(function(s, t) { | |
if (t.set) { | |
y(s, t) | |
} | |
}) | |
} | |
if (A.handle_node_change_callback) { | |
z.onNodeChange.add(function(t, s, B) { | |
z.execCallback("handle_node_change_callback", z.id, B, -1, -1, true, z.selection.isCollapsed()) | |
}) | |
} | |
if (A.save_callback) { | |
z.onSaveContent.add(function(s, B) { | |
var t = z.execCallback("save_callback", z.id, B.content, z.getBody()); | |
if (t) { | |
B.content = t | |
} | |
}) | |
} | |
if (A.onchange_callback) { | |
z.onChange.add(function(t, s) { | |
z.execCallback("onchange_callback", z, s) | |
}) | |
} | |
if (A.convert_newlines_to_brs) { | |
z.onBeforeSetContent.add(function(s, t) { | |
if (t.initial) { | |
t.content = t.content.replace(/\r?\n/g, "<br />") | |
} | |
}) | |
} | |
if (A.fix_nesting && b) { | |
z.onBeforeSetContent.add(function(s, t) { | |
t.content = z._fixNesting(t.content) | |
}) | |
} | |
if (A.preformatted) { | |
z.onPostProcess.add(function(s, t) { | |
t.content = t.content.replace(/^\s*<pre.*?>/, ""); | |
t.content = t.content.replace(/<\/pre>\s*$/, ""); | |
if (t.set) { | |
t.content = '<pre class="mceItemHidden">' + t.content + "</pre>" | |
} | |
}) | |
} | |
if (A.verify_css_classes) { | |
z.serializer.attribValueFilter = function(D, B) { | |
var C, | |
t; | |
if (D == "class") { | |
if (!z.classesRE) { | |
t = z.dom.getClasses(); | |
if (t.length > 0) { | |
C = ""; | |
i(t, | |
function(s) { | |
C += (C ? "|": "") + s["class"] | |
}); | |
z.classesRE = new RegExp("(" + C + ")", "gi") | |
} | |
} | |
return ! z.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B) || z.classesRE.test(B) ? B: "" | |
} | |
return B | |
} | |
} | |
if (A.cleanup_callback) { | |
z.onBeforeSetContent.add(function(s, t) { | |
t.content = z.execCallback("cleanup_callback", "insert_to_editor", t.content, t) | |
}); | |
z.onPreProcess.add(function(s, t) { | |
if (t.set) { | |
z.execCallback("cleanup_callback", "insert_to_editor_dom", t.node, t) | |
} | |
if (t.get) { | |
z.execCallback("cleanup_callback", "get_from_editor_dom", t.node, t) | |
} | |
}); | |
z.onPostProcess.add(function(s, t) { | |
if (t.set) { | |
t.content = z.execCallback("cleanup_callback", "insert_to_editor", t.content, t) | |
} | |
if (t.get) { | |
t.content = z.execCallback("cleanup_callback", "get_from_editor", t.content, t) | |
} | |
}) | |
} | |
if (A.save_callback) { | |
z.onGetContent.add(function(s, t) { | |
if (t.save) { | |
t.content = z.execCallback("save_callback", z.id, t.content, z.getBody()) | |
} | |
}) | |
} | |
if (A.handle_event_callback) { | |
z.onEvent.add(function(s, t, B) { | |
if (z.execCallback("handle_event_callback", t, s, B) === false) { | |
j.cancel(t) | |
} | |
}) | |
} | |
z.onSetContent.add(function() { | |
z.addVisual(z.getBody()) | |
}); | |
if (A.padd_empty_editor) { | |
z.onPostProcess.add(function(s, t) { | |
t.content = t.content.replace(/^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, "") | |
}) | |
} | |
if (a) { | |
function p(s, t) { | |
i(s.dom.select("a"), | |
function(C) { | |
var B = C.parentNode; | |
if (s.dom.isBlock(B) && B.lastChild === C) { | |
s.dom.add(B, "br", { | |
_mce_bogus: 1 | |
}) | |
} | |
}) | |
} | |
z.onExecCommand.add(function(s, t) { | |
if (t === "CreateLink") { | |
p(s) | |
} | |
}); | |
z.onSetContent.add(z.selection.onSetContent.add(p)); | |
if (!A.readonly) { | |
try { | |
u.designMode = "Off"; | |
u.designMode = "On" | |
} catch(v) {} | |
} | |
} | |
setTimeout(function() { | |
if (z.removed) { | |
return | |
} | |
z.load({ | |
initial: true, | |
format: (A.cleanup_on_startup ? "html": "raw") | |
}); | |
z.startContent = z.getContent({ | |
format: "raw" | |
}); | |
z.initialized = true; | |
z.onInit.dispatch(z); | |
z.execCallback("setupcontent_callback", z.id, z.getBody(), z.getDoc()); | |
z.execCallback("init_instance_callback", z); | |
z.focus(true); | |
z.nodeChanged({ | |
initial: 1 | |
}); | |
if (A.content_css) { | |
m.each(g(A.content_css), | |
function(s) { | |
z.dom.loadCSS(z.documentBaseURI.toAbsolute(s)) | |
}) | |
} | |
if (A.auto_focus) { | |
setTimeout(function() { | |
var s = m.get(A.auto_focus); | |
s.selection.select(s.getBody(), 1); | |
s.selection.collapse(1); | |
s.getWin().focus() | |
}, | |
100) | |
} | |
}, | |
1); | |
r = null | |
}, | |
focus: function(q) { | |
var s, | |
p = this, | |
r = p.settings.content_editable; | |
if (!q) { | |
if (!r) { | |
p.getWin().focus() | |
} | |
} | |
if (m.activeEditor != p) { | |
if ((s = m.activeEditor) != null) { | |
s.onDeactivate.dispatch(s, p) | |
} | |
p.onActivate.dispatch(p, s) | |
} | |
m._setActive(p) | |
}, | |
execCallback: function(u) { | |
var p = this, | |
r = p.settings[u], | |
q; | |
if (!r) { | |
return | |
} | |
if (p.callbackLookup && (q = p.callbackLookup[u])) { | |
r = q.func; | |
q = q.scope | |
} | |
if (d(r, "string")) { | |
q = r.replace(/\.\w+$/, ""); | |
q = q ? m.resolve(q) : 0; | |
r = m.resolve(r); | |
p.callbackLookup = p.callbackLookup || {}; | |
p.callbackLookup[u] = { | |
func: r, | |
scope: q | |
} | |
} | |
return r.apply(q || p, Array.prototype.slice.call(arguments, 1)) | |
}, | |
translate: function(p) { | |
var r = this.settings.language || "en", | |
q = m.i18n; | |
if (!p) { | |
return "" | |
} | |
return q[r + "." + p] || p.replace(/{\#([^}]+)\}/g, | |
function(t, s) { | |
return q[r + "." + s] || "{#" + s + "}" | |
}) | |
}, | |
getLang: function(q, p) { | |
return m.i18n[(this.settings.language || "en") + "." + q] || (d(p) ? p: "{#" + q + "}") | |
}, | |
getParam: function(u, r, p) { | |
var s = m.trim, | |
q = d(this.settings[u]) ? this.settings[u] : r, | |
t; | |
if (p === "hash") { | |
t = {}; | |
if (d(q, "string")) { | |
i(q.indexOf("=") > 0 ? q.split(/[;,](?![^=;,]*(?:[;,]|$))/) : q.split(","), | |
function(x) { | |
x = x.split("="); | |
if (x.length > 1) { | |
t[s(x[0])] = s(x[1]) | |
} else { | |
t[s(x[0])] = s(x) | |
} | |
}) | |
} else { | |
t = q | |
} | |
return t | |
} | |
return q | |
}, | |
nodeChanged: function(r) { | |
var p = this, | |
q = p.selection, | |
u = (b ? q.getNode() : q.getStart()) || p.getBody(); | |
if (p.initialized) { | |
r = r || {}; | |
u = b && u.ownerDocument != p.getDoc() ? p.getBody() : u; | |
r.parents = []; | |
p.dom.getParent(u, | |
function(s) { | |
if (s.nodeName == "BODY") { | |
return true | |
} | |
r.parents.push(s) | |
}); | |
p.onNodeChange.dispatch(p, r ? r.controlManager || p.controlManager: p.controlManager, u, q.isCollapsed(), r) | |
} | |
}, | |
addButton: function(r, q) { | |
var p = this; | |
p.buttons = p.buttons || {}; | |
p.buttons[r] = q | |
}, | |
addCommand: function(r, q, p) { | |
this.execCommands[r] = { | |
func: q, | |
scope: p || this | |
} | |
}, | |
addQueryStateHandler: function(r, q, p) { | |
this.queryStateCommands[r] = { | |
func: q, | |
scope: p || this | |
} | |
}, | |
addQueryValueHandler: function(r, q, p) { | |
this.queryValueCommands[r] = { | |
func: q, | |
scope: p || this | |
} | |
}, | |
addShortcut: function(r, u, p, s) { | |
var q = this, | |
v; | |
if (!q.settings.custom_shortcuts) { | |
return false | |
} | |
q.shortcuts = q.shortcuts || {}; | |
if (d(p, "string")) { | |
v = p; | |
p = function() { | |
q.execCommand(v, false, null) | |
} | |
} | |
if (d(p, "object")) { | |
v = p; | |
p = function() { | |
q.execCommand(v[0], v[1], v[2]) | |
} | |
} | |
i(g(r), | |
function(t) { | |
var x = { | |
func: p, | |
scope: s || this, | |
desc: u, | |
alt: false, | |
ctrl: false, | |
shift: false | |
}; | |
i(g(t, "+"), | |
function(y) { | |
switch (y) { | |
case "alt": | |
case "ctrl": | |
case "shift": | |
x[y] = true; | |
break; | |
default: | |
x.charCode = y.charCodeAt(0); | |
x.keyCode = y.toUpperCase().charCodeAt(0) | |
} | |
}); | |
q.shortcuts[(x.ctrl ? "ctrl": "") + "," + (x.alt ? "alt": "") + "," + (x.shift ? "shift": "") + "," + x.keyCode] = x | |
}); | |
return true | |
}, | |
execCommand: function(x, v, z, p) { | |
var r = this, | |
u = 0, | |
y, | |
q; | |
if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x) && (!p || !p.skip_focus)) { | |
r.focus() | |
} | |
y = {}; | |
r.onBeforeExecCommand.dispatch(r, x, v, z, y); | |
if (y.terminate) { | |
return false | |
} | |
if (r.execCallback("execcommand_callback", r.id, r.selection.getNode(), x, v, z)) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
return true | |
} | |
if (y = r.execCommands[x]) { | |
q = y.func.call(y.scope, v, z); | |
if (q !== true) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
return q | |
} | |
} | |
i(r.plugins, | |
function(s) { | |
if (s.execCommand && s.execCommand(x, v, z)) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
u = 1; | |
return false | |
} | |
}); | |
if (u) { | |
return true | |
} | |
if (r.theme && r.theme.execCommand && r.theme.execCommand(x, v, z)) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
return true | |
} | |
if (m.GlobalCommands.execCommand(r, x, v, z)) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
return true | |
} | |
if (r.editorCommands.execCommand(x, v, z)) { | |
r.onExecCommand.dispatch(r, x, v, z, p); | |
return true | |
} | |
r.getDoc().execCommand(x, v, z); | |
r.onExecCommand.dispatch(r, x, v, z, p) | |
}, | |
queryCommandState: function(u) { | |
var q = this, | |
v, | |
r; | |
if (q._isHidden()) { | |
return | |
} | |
if (v = q.queryStateCommands[u]) { | |
r = v.func.call(v.scope); | |
if (r !== true) { | |
return r | |
} | |
} | |
v = q.editorCommands.queryCommandState(u); | |
if (v !== -1) { | |
return v | |
} | |
try { | |
return this.getDoc().queryCommandState(u) | |
} catch(p) {} | |
}, | |
queryCommandValue: function(v) { | |
var q = this, | |
u, | |
r; | |
if (q._isHidden()) { | |
return | |
} | |
if (u = q.queryValueCommands[v]) { | |
r = u.func.call(u.scope); | |
if (r !== true) { | |
return r | |
} | |
} | |
u = q.editorCommands.queryCommandValue(v); | |
if (d(u)) { | |
return u | |
} | |
try { | |
return this.getDoc().queryCommandValue(v) | |
} catch(p) {} | |
}, | |
show: function() { | |
var p = this; | |
n.show(p.getContainer()); | |
n.hide(p.id); | |
p.load() | |
}, | |
hide: function() { | |
var p = this, | |
q = p.getDoc(); | |
if (b && q) { | |
q.execCommand("SelectAll") | |
} | |
p.save(); | |
n.hide(p.getContainer()); | |
n.setStyle(p.id, "display", p.orgDisplay) | |
}, | |
isHidden: function() { | |
return ! n.isHidden(this.id) | |
}, | |
setProgressState: function(p, q, r) { | |
this.onSetProgressState.dispatch(this, p, q, r); | |
return p | |
}, | |
load: function(s) { | |
var p = this, | |
r = p.getElement(), | |
q; | |
if (r) { | |
s = s || {}; | |
s.load = true; | |
q = p.setContent(d(r.value) ? r.value: r.innerHTML, s); | |
s.element = r; | |
if (!s.no_events) { | |
p.onLoadContent.dispatch(p, s) | |
} | |
s.element = r = null; | |
return q | |
} | |
}, | |
save: function(u) { | |
var p = this, | |
s = p.getElement(), | |
q, | |
r; | |
if (!s || !p.initialized) { | |
return | |
} | |
u = u || {}; | |
u.save = true; | |
if (!u.no_events) { | |
p.undoManager.typing = 0; | |
p.undoManager.add() | |
} | |
u.element = s; | |
q = u.content = p.getContent(u); | |
if (!u.no_events) { | |
p.onSaveContent.dispatch(p, u) | |
} | |
q = u.content; | |
if (!/TEXTAREA|INPUT/i.test(s.nodeName)) { | |
s.innerHTML = q; | |
if (r = n.getParent(p.id, "form")) { | |
i(r.elements, | |
function(t) { | |
if (t.name == p.id) { | |
t.value = q; | |
return false | |
} | |
}) | |
} | |
} else { | |
s.value = q | |
} | |
u.element = s = null; | |
return q | |
}, | |
setContent: function(q, r) { | |
var p = this; | |
r = r || {}; | |
r.format = r.format || "html"; | |
r.set = true; | |
r.content = q; | |
if (!r.no_events) { | |
p.onBeforeSetContent.dispatch(p, r) | |
} | |
if (!m.isIE && (q.length === 0 || /^\s+$/.test(q))) { | |
r.content = p.dom.setHTML(p.getBody(), '<br _mce_bogus="1" />'); | |
r.format = "raw" | |
} | |
r.content = p.dom.setHTML(p.getBody(), m.trim(r.content)); | |
if (r.format != "raw" && p.settings.cleanup) { | |
r.getInner = true; | |
r.content = p.dom.setHTML(p.getBody(), p.serializer.serialize(p.getBody(), r)) | |
} | |
if (!r.no_events) { | |
p.onSetContent.dispatch(p, r) | |
} | |
return r.content | |
}, | |
getContent: function(r) { | |
var p = this, | |
q; | |
r = r || {}; | |
r.format = r.format || "html"; | |
r.get = true; | |
if (!r.no_events) { | |
p.onBeforeGetContent.dispatch(p, r) | |
} | |
if (r.format != "raw" && p.settings.cleanup) { | |
r.getInner = true; | |
q = p.serializer.serialize(p.getBody(), r) | |
} else { | |
q = p.getBody().innerHTML | |
} | |
q = q.replace(/^\s*|\s*$/g, ""); | |
r.content = q; | |
if (!r.no_events) { | |
p.onGetContent.dispatch(p, r) | |
} | |
return r.content | |
}, | |
isDirty: function() { | |
var p = this; | |
return m.trim(p.startContent) != m.trim(p.getContent({ | |
format: "raw", | |
no_events: 1 | |
})) && !p.isNotDirty | |
}, | |
getContainer: function() { | |
var p = this; | |
if (!p.container) { | |
p.container = n.get(p.editorContainer || p.id + "_parent") | |
} | |
return p.container | |
}, | |
getContentAreaContainer: function() { | |
return this.contentAreaContainer | |
}, | |
getElement: function() { | |
return n.get(this.settings.content_element || this.id) | |
}, | |
getWin: function() { | |
var p = this, | |
q; | |
if (!p.contentWindow) { | |
q = n.get(p.id + "_ifr"); | |
if (q) { | |
p.contentWindow = q.contentWindow | |
} | |
} | |
return p.contentWindow | |
}, | |
getDoc: function() { | |
var q = this, | |
p; | |
if (!q.contentDocument) { | |
p = q.getWin(); | |
if (p) { | |
q.contentDocument = p.document | |
} | |
} | |
return q.contentDocument | |
}, | |
getBody: function() { | |
return this.bodyElement || this.getDoc().body | |
}, | |
convertURL: function(p, x, v) { | |
var q = this, | |
r = q.settings; | |
if (r.urlconverter_callback) { | |
return q.execCallback("urlconverter_callback", p, v, true, x) | |
} | |
if (!r.convert_urls || (v && v.nodeName == "LINK") || p.indexOf("file:") === 0) { | |
return p | |
} | |
if (r.relative_urls) { | |
return q.documentBaseURI.toRelative(p) | |
} | |
p = q.documentBaseURI.toAbsolute(p, r.remove_script_host); | |
return p | |
}, | |
addVisual: function(r) { | |
var p = this, | |
q = p.settings; | |
r = r || p.getBody(); | |
if (!d(p.hasVisual)) { | |
p.hasVisual = q.visual | |
} | |
i(p.dom.select("table,a", r), | |
function(t) { | |
var s; | |
switch (t.nodeName) { | |
case "TABLE": | |
s = p.dom.getAttrib(t, "border"); | |
if (!s || s == "0") { | |
if (p.hasVisual) { | |
p.dom.addClass(t, q.visual_table_class) | |
} else { | |
p.dom.removeClass(t, q.visual_table_class) | |
} | |
} | |
return; | |
case "A": | |
s = p.dom.getAttrib(t, "name"); | |
if (s) { | |
if (p.hasVisual) { | |
p.dom.addClass(t, "mceItemAnchor") | |
} else { | |
p.dom.removeClass(t, "mceItemAnchor") | |
} | |
} | |
return | |
} | |
}); | |
p.onVisualAid.dispatch(p, r, p.hasVisual) | |
}, | |
remove: function() { | |
var p = this, | |
q = p.getContainer(); | |
p.removed = 1; | |
p.hide(); | |
p.execCallback("remove_instance_callback", p); | |
p.onRemove.dispatch(p); | |
p.onExecCommand.listeners = []; | |
m.remove(p); | |
n.remove(q) | |
}, | |
destroy: function(q) { | |
var p = this; | |
if (p.destroyed) { | |
return | |
} | |
if (!q) { | |
m.removeUnload(p.destroy); | |
tinyMCE.onBeforeUnload.remove(p._beforeUnload); | |
if (p.theme && p.theme.destroy) { | |
p.theme.destroy() | |
} | |
p.controlManager.destroy(); | |
p.selection.destroy(); | |
p.dom.destroy(); | |
if (!p.settings.content_editable) { | |
j.clear(p.getWin()); | |
j.clear(p.getDoc()) | |
} | |
j.clear(p.getBody()); | |
j.clear(p.formElement) | |
} | |
if (p.formElement) { | |
p.formElement.submit = p.formElement._mceOldSubmit; | |
p.formElement._mceOldSubmit = null | |
} | |
p.contentAreaContainer = p.formElement = p.container = p.settings.content_element = p.bodyElement = p.contentDocument = p.contentWindow = null; | |
if (p.selection) { | |
p.selection = p.selection.win = p.selection.dom = p.selection.dom.doc = null | |
} | |
p.destroyed = 1 | |
}, | |
_addEvents: function() { | |
var v = this, | |
u, | |
y = v.settings, | |
x = { | |
mouseup: "onMouseUp", | |
mousedown: "onMouseDown", | |
click: "onClick", | |
keyup: "onKeyUp", | |
keydown: "onKeyDown", | |
keypress: "onKeyPress", | |
submit: "onSubmit", | |
reset: "onReset", | |
contextmenu: "onContextMenu", | |
dblclick: "onDblClick", | |
paste: "onPaste" | |
}; | |
function r(t, A) { | |
var s = t.type; | |
if (v.removed) { | |
return | |
} | |
if (v.onEvent.dispatch(v, t, A) !== false) { | |
v[x[t.fakeType || t.type]].dispatch(v, t, A) | |
} | |
} | |
i(x, | |
function(t, s) { | |
switch (s) { | |
case "contextmenu": | |
if (m.isOpera) { | |
v.dom.bind(v.getBody(), "mousedown", | |
function(A) { | |
if (A.ctrlKey) { | |
A.fakeType = "contextmenu"; | |
r(A) | |
} | |
}) | |
} else { | |
v.dom.bind(v.getBody(), s, r) | |
} | |
break; | |
case "paste": | |
v.dom.bind(v.getBody(), s, | |
function(A) { | |
r(A) | |
}); | |
break; | |
case "submit": | |
case "reset": | |
v.dom.bind(v.getElement().form || n.getParent(v.id, "form"), s, r); | |
break; | |
default: | |
v.dom.bind(y.content_editable ? v.getBody() : v.getDoc(), s, r) | |
} | |
}); | |
v.dom.bind(y.content_editable ? v.getBody() : (a ? v.getDoc() : v.getWin()), "focus", | |
function(s) { | |
v.focus(true) | |
}); | |
if (m.isGecko) { | |
v.dom.bind(v.getDoc(), "DOMNodeInserted", | |
function(t) { | |
var s; | |
t = t.target; | |
if (t.nodeType === 1 && t.nodeName === "IMG" && (s = t.getAttribute("_mce_src"))) { | |
t.src = v.documentBaseURI.toAbsolute(s) | |
} | |
}) | |
} | |
if (a) { | |
function p() { | |
var B = this, | |
D = B.getDoc(), | |
C = B.settings; | |
if (a && !C.readonly) { | |
if (B._isHidden()) { | |
try { | |
if (!C.content_editable) { | |
D.designMode = "On" | |
} | |
} catch(A) {} | |
} | |
try { | |
D.execCommand("styleWithCSS", 0, false) | |
} catch(A) { | |
if (!B._isHidden()) { | |
try { | |
D.execCommand("useCSS", 0, true) | |
} catch(A) {} | |
} | |
} | |
if (!C.table_inline_editing) { | |
try { | |
D.execCommand("enableInlineTableEditing", false, false) | |
} catch(A) {} | |
} | |
if (!C.object_resizing) { | |
try { | |
D.execCommand("enableObjectResizing", false, false) | |
} catch(A) {} | |
} | |
} | |
} | |
v.onBeforeExecCommand.add(p); | |
v.onMouseDown.add(p) | |
} | |
if (m.isWebKit) { | |
v.onClick.add(function(s, t) { | |
t = t.target; | |
if (t.nodeName == "IMG" || (t.nodeName == "A" && v.dom.hasClass(t, "mceItemAnchor"))) { | |
v.selection.getSel().setBaseAndExtent(t, 0, t, 1) | |
} | |
}) | |
} | |
v.onMouseUp.add(v.nodeChanged); | |
v.onClick.add(v.nodeChanged); | |
v.onKeyUp.add(function(s, t) { | |
var A = t.keyCode; | |
if ((A >= 33 && A <= 36) || (A >= 37 && A <= 40) || A == 13 || A == 45 || A == 46 || A == 8 || (m.isMac && (A == 91 || A == 93)) || t.ctrlKey) { | |
v.nodeChanged() | |
} | |
}); | |
v.onReset.add(function() { | |
v.setContent(v.startContent, { | |
format: "raw" | |
}) | |
}); | |
if (y.custom_shortcuts) { | |
if (y.custom_undo_redo_keyboard_shortcuts) { | |
v.addShortcut("ctrl+z", v.getLang("undo_desc"), "Undo"); | |
v.addShortcut("ctrl+y", v.getLang("redo_desc"), "Redo") | |
} | |
if (a) { | |
v.addShortcut("ctrl+b", v.getLang("bold_desc"), "Bold"); | |
v.addShortcut("ctrl+i", v.getLang("italic_desc"), "Italic"); | |
v.addShortcut("ctrl+u", v.getLang("underline_desc"), "Underline") | |
} | |
for (u = 1; u <= 6; u++) { | |
v.addShortcut("ctrl+" + u, "", ["FormatBlock", false, "h" + u]) | |
} | |
v.addShortcut("ctrl+7", "", ["FormatBlock", false, "<p>"]); | |
v.addShortcut("ctrl+8", "", ["FormatBlock", false, "<div>"]); | |
v.addShortcut("ctrl+9", "", ["FormatBlock", false, "<address>"]); | |
function z(t) { | |
var s = null; | |
if (!t.altKey && !t.ctrlKey && !t.metaKey) { | |
return s | |
} | |
i(v.shortcuts, | |
function(A) { | |
if (m.isMac && A.ctrl != t.metaKey) { | |
return | |
} else { | |
if (!m.isMac && A.ctrl != t.ctrlKey) { | |
return | |
} | |
} | |
if (A.alt != t.altKey) { | |
return | |
} | |
if (A.shift != t.shiftKey) { | |
return | |
} | |
if (t.keyCode == A.keyCode || (t.charCode && t.charCode == A.charCode)) { | |
s = A; | |
return false | |
} | |
}); | |
return s | |
} | |
v.onKeyUp.add(function(s, t) { | |
var A = z(t); | |
if (A) { | |
return j.cancel(t) | |
} | |
}); | |
v.onKeyPress.add(function(s, t) { | |
var A = z(t); | |
if (A) { | |
return j.cancel(t) | |
} | |
}); | |
v.onKeyDown.add(function(s, t) { | |
var A = z(t); | |
if (A) { | |
A.func.call(A.scope); | |
return j.cancel(t) | |
} | |
}) | |
} | |
if (m.isIE) { | |
v.dom.bind(v.getDoc(), "controlselect", | |
function(A) { | |
var t = v.resizeInfo, | |
s; | |
A = A.target; | |
if (A.nodeName !== "IMG") { | |
return | |
} | |
if (t) { | |
v.dom.unbind(t.node, t.ev, t.cb) | |
} | |
if (!v.dom.hasClass(A, "mceItemNoResize")) { | |
ev = "resizeend"; | |
s = v.dom.bind(A, ev, | |
function(C) { | |
var B; | |
C = C.target; | |
if (B = v.dom.getStyle(C, "width")) { | |
v.dom.setAttrib(C, "width", B.replace(/[^0-9%]+/g, "")); | |
v.dom.setStyle(C, "width", "") | |
} | |
if (B = v.dom.getStyle(C, "height")) { | |
v.dom.setAttrib(C, "height", B.replace(/[^0-9%]+/g, "")); | |
v.dom.setStyle(C, "height", "") | |
} | |
}) | |
} else { | |
ev = "resizestart"; | |
s = v.dom.bind(A, "resizestart", j.cancel, j) | |
} | |
t = v.resizeInfo = { | |
node: A, | |
ev: ev, | |
cb: s | |
} | |
}); | |
v.onKeyDown.add(function(s, t) { | |
switch (t.keyCode) { | |
case 8: | |
if (v.selection.getRng().item) { | |
s.dom.remove(v.selection.getRng().item(0)); | |
return j.cancel(t) | |
} | |
} | |
}) | |
} | |
if (m.isOpera) { | |
v.onClick.add(function(s, t) { | |
j.prevent(t) | |
}) | |
} | |
if (y.custom_undo_redo) { | |
function q() { | |
v.undoManager.typing = 0; | |
v.undoManager.add() | |
} | |
v.dom.bind(v.getDoc(), "focusout", | |
function(s) { | |
if (!v.removed && v.undoManager.typing) { | |
q() | |
} | |
}); | |
v.onKeyUp.add(function(s, t) { | |
if ((t.keyCode >= 33 && t.keyCode <= 36) || (t.keyCode >= 37 && t.keyCode <= 40) || t.keyCode == 13 || t.keyCode == 45 || t.ctrlKey) { | |
q() | |
} | |
}); | |
v.onKeyDown.add(function(s, t) { | |
if ((t.keyCode >= 33 && t.keyCode <= 36) || (t.keyCode >= 37 && t.keyCode <= 40) || t.keyCode == 13 || t.keyCode == 45) { | |
if (v.undoManager.typing) { | |
q() | |
} | |
return | |
} | |
if (!v.undoManager.typing) { | |
v.undoManager.add(); | |
v.undoManager.typing = 1 | |
} | |
}); | |
v.onMouseDown.add(function() { | |
if (v.undoManager.typing) { | |
q() | |
} | |
}) | |
} | |
}, | |
_isHidden: function() { | |
var p; | |
if (!a) { | |
return 0 | |
} | |
p = this.selection.getSel(); | |
return (!p || !p.rangeCount || p.rangeCount == 0) | |
}, | |
_fixNesting: function(q) { | |
var r = [], | |
p; | |
q = q.replace(/<(\/)?([^\s>]+)[^>]*?>/g, | |
function(t, s, v) { | |
var u; | |
if (s === "/") { | |
if (!r.length) { | |
return "" | |
} | |
if (v !== r[r.length - 1].tag) { | |
for (p = r.length - 1; p >= 0; p--) { | |
if (r[p].tag === v) { | |
r[p].close = 1; | |
break | |
} | |
} | |
return "" | |
} else { | |
r.pop(); | |
if (r.length && r[r.length - 1].close) { | |
t = t + "</" + r[r.length - 1].tag + ">"; | |
r.pop() | |
} | |
} | |
} else { | |
if (/^(br|hr|input|meta|img|link|param)$/i.test(v)) { | |
return t | |
} | |
if (/\/>$/.test(t)) { | |
return t | |
} | |
r.push({ | |
tag: v | |
}) | |
} | |
return t | |
}); | |
for (p = r.length - 1; p >= 0; p--) { | |
q += "</" + r[p].tag + ">" | |
} | |
return q | |
} | |
}) | |
})(tinymce); (function(c) { | |
var d = c.each, | |
e, | |
a = true, | |
b = false; | |
c.EditorCommands = function(n) { | |
var l = n.dom, | |
p = n.selection, | |
j = { | |
state: {}, | |
exec: {}, | |
value: {} | |
}, | |
k = n.settings, | |
o; | |
function q(y, x, v) { | |
var u; | |
y = y.toLowerCase(); | |
if (u = j.exec[y]) { | |
u(y, x, v); | |
return a | |
} | |
return b | |
} | |
function m(v) { | |
var u; | |
v = v.toLowerCase(); | |
if (u = j.state[v]) { | |
return u(v) | |
} | |
return - 1 | |
} | |
function h(v) { | |
var u; | |
v = v.toLowerCase(); | |
if (u = j.value[v]) { | |
return u(v) | |
} | |
return b | |
} | |
function t(u, v) { | |
v = v || "exec"; | |
d(u, | |
function(y, x) { | |
d(x.toLowerCase().split(","), | |
function(z) { | |
j[v][z] = y | |
}) | |
}) | |
} | |
c.extend(this, { | |
execCommand: q, | |
queryCommandState: m, | |
queryCommandValue: h, | |
addCommands: t | |
}); | |
function f(x, v, u) { | |
if (v === e) { | |
v = b | |
} | |
if (u === e) { | |
u = null | |
} | |
return n.getDoc().execCommand(x, v, u) | |
} | |
function s(u) { | |
return n.formatter.match(u) | |
} | |
function r(u, v) { | |
n.formatter.toggle(u, v ? { | |
value: v | |
}: e) | |
} | |
function i(u) { | |
o = p.getBookmark(u) | |
} | |
function g() { | |
p.moveToBookmark(o) | |
} | |
t({ | |
"mceResetDesignMode,mceBeginUndoLevel": function() {}, | |
"mceEndUndoLevel,mceAddUndoLevel": function() { | |
n.undoManager.add() | |
}, | |
"Cut,Copy,Paste": function(y) { | |
var x = n.getDoc(), | |
u; | |
try { | |
f(y) | |
} catch(v) { | |
u = a | |
} | |
if (u || !x.queryCommandEnabled(y)) { | |
if (c.isGecko) { | |
n.windowManager.confirm(n.getLang("clipboard_msg"), | |
function(z) { | |
if (z) { | |
open("http://www.mozilla.org/editor/midasdemo/securityprefs.html", "_blank") | |
} | |
}) | |
} else { | |
n.windowManager.alert(n.getLang("clipboard_no_support")) | |
} | |
} | |
}, | |
unlink: function(u) { | |
if (p.isCollapsed()) { | |
p.select(p.getNode()) | |
} | |
f(u); | |
p.collapse(b) | |
}, | |
"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull": function(u) { | |
var v = u.substring(7); | |
d("left,center,right,full".split(","), | |
function(x) { | |
if (v != x) { | |
n.formatter.remove("align" + x) | |
} | |
}); | |
r("align" + v) | |
}, | |
"InsertUnorderedList,InsertOrderedList": function(x) { | |
var u, | |
v; | |
f(x); | |
u = l.getParent(p.getNode(), "ol,ul"); | |
if (u) { | |
v = u.parentNode; | |
if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(v.nodeName)) { | |
i(); | |
l.split(v, u); | |
g() | |
} | |
} | |
}, | |
"Bold,Italic,Underline,Strikethrough": function(u) { | |
r(u) | |
}, | |
"ForeColor,HiliteColor,FontName": function(x, v, u) { | |
r(x, u) | |
}, | |
FontSize: function(y, x, v) { | |
var u, | |
z; | |
if (v >= 1 && v <= 7) { | |
z = c.explode(k.font_size_style_values); | |
u = c.explode(k.font_size_classes); | |
if (u) { | |
v = u[v - 1] || v | |
} else { | |
v = z[v - 1] || v | |
} | |
} | |
r(y, v) | |
}, | |
RemoveFormat: function(u) { | |
n.formatter.remove(u) | |
}, | |
mceBlockQuote: function(u) { | |
r("blockquote") | |
}, | |
FormatBlock: function(x, v, u) { | |
return r(u) | |
}, | |
mceCleanup: function() { | |
i(); | |
n.setContent(n.getContent({ | |
cleanup: a | |
}), { | |
cleanup: a | |
}); | |
g() | |
}, | |
mceRemoveNode: function(y, x, v) { | |
var u = v || p.getNode(); | |
if (u != ed.getBody()) { | |
i(); | |
n.dom.remove(u, a); | |
g() | |
} | |
}, | |
mceSelectNodeDepth: function(y, x, v) { | |
var u = 0; | |
l.getParent(p.getNode(), | |
function(z) { | |
if (z.nodeType == 1 && u++==v) { | |
p.select(z); | |
return b | |
} | |
}, | |
n.getBody()) | |
}, | |
mceSelectNode: function(x, v, u) { | |
p.select(u) | |
}, | |
mceInsertContent: function(x, v, u) { | |
p.setContent(u) | |
}, | |
mceInsertRawHTML: function(x, v, u) { | |
p.setContent("tiny_mce_marker"); | |
n.setContent(n.getContent().replace(/tiny_mce_marker/g, u)) | |
}, | |
mceSetContent: function(x, v, u) { | |
n.setContent(u) | |
}, | |
"Indent,Outdent": function(y) { | |
var v, | |
u, | |
x; | |
v = k.indentation; | |
u = /[a-z%]+$/i.exec(v); | |
v = parseInt(v); | |
if (!m("InsertUnorderedList") && !m("InsertOrderedList")) { | |
d(p.getSelectedBlocks(), | |
function(z) { | |
if (y == "outdent") { | |
x = Math.max(0, parseInt(z.style.paddingLeft || 0) - v); | |
l.setStyle(z, "paddingLeft", x ? x + u: "") | |
} else { | |
l.setStyle(z, "paddingLeft", (parseInt(z.style.paddingLeft || 0) + v) + u) | |
} | |
}) | |
} else { | |
f(y) | |
} | |
}, | |
mceRepaint: function() { | |
var v; | |
if (c.isGecko) { | |
try { | |
i(a); | |
if (p.getSel()) { | |
p.getSel().selectAllChildren(n.getBody()) | |
} | |
p.collapse(a); | |
g() | |
} catch(u) {} | |
} | |
}, | |
mceToggleFormat: function(x, v, u) { | |
n.formatter.toggle(u) | |
}, | |
InsertHorizontalRule: function() { | |
p.setContent("<hr />") | |
}, | |
mceToggleVisualAid: function() { | |
n.hasVisual = !n.hasVisual; | |
n.addVisual() | |
}, | |
mceReplaceContent: function(x, v, u) { | |
p.setContent(u.replace(/\{\$selection\}/g, p.getContent({ | |
format: "text" | |
}))) | |
}, | |
mceInsertLink: function(y, x, v) { | |
var u = l.getParent(p.getNode(), "a"); | |
if (c.is(v, "string")) { | |
v = { | |
href: v | |
} | |
} | |
if (!u) { | |
f("CreateLink", b, "javascript:mctmp(0);"); | |
d(l.select("a[href=javascript:mctmp(0);]"), | |
function(z) { | |
l.setAttribs(z, v) | |
}) | |
} else { | |
if (v.href) { | |
l.setAttribs(u, v) | |
} else { | |
ed.dom.remove(u, a) | |
} | |
} | |
} | |
}); | |
t({ | |
"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull": function(u) { | |
return s("align" + u.substring(7)) | |
}, | |
"Bold,Italic,Underline,Strikethrough": function(u) { | |
return s(u) | |
}, | |
mceBlockQuote: function() { | |
return s("blockquote") | |
}, | |
Outdent: function() { | |
var u; | |
if (k.inline_styles) { | |
if ((u = l.getParent(p.getStart(), l.isBlock)) && parseInt(u.style.paddingLeft) > 0) { | |
return a | |
} | |
if ((u = l.getParent(p.getEnd(), l.isBlock)) && parseInt(u.style.paddingLeft) > 0) { | |
return a | |
} | |
} | |
return m("InsertUnorderedList") || m("InsertOrderedList") || (!k.inline_styles && !!l.getParent(p.getNode(), "BLOCKQUOTE")) | |
}, | |
"InsertUnorderedList,InsertOrderedList": function(u) { | |
return l.getParent(p.getNode(), u == "insertunorderedlist" ? "UL": "OL") | |
} | |
}, | |
"state"); | |
t({ | |
"FontSize,FontName": function(x) { | |
var v = 0, | |
u; | |
if (u = l.getParent(p.getNode(), "span")) { | |
if (x == "fontsize") { | |
v = u.style.fontSize | |
} else { | |
v = u.style.fontFamily.replace(/, /g, ",").replace(/[\'\"]/g, "").toLowerCase() | |
} | |
} | |
return v | |
} | |
}, | |
"value"); | |
if (k.custom_undo_redo) { | |
t({ | |
Undo: function() { | |
n.undoManager.undo() | |
}, | |
Redo: function() { | |
n.undoManager.redo() | |
} | |
}) | |
} | |
} | |
})(tinymce); (function(b) { | |
var a = b.util.Dispatcher; | |
b.UndoManager = function(e) { | |
var c, | |
d = 0, | |
g = []; | |
function f() { | |
return b.trim(e.getContent({ | |
format: "raw", | |
no_events: 1 | |
})) | |
} | |
return c = { | |
typing: 0, | |
onAdd: new a(c), | |
onUndo: new a(c), | |
onRedo: new a(c), | |
add: function(l) { | |
var h, | |
j = e.settings, | |
k; | |
l = l || {}; | |
l.content = f(); | |
k = g[d]; | |
if (k && k.content == l.content) { | |
if (d > 0 || g.length == 1) { | |
return null | |
} | |
} | |
if (j.custom_undo_redo_levels) { | |
if (g.length > j.custom_undo_redo_levels) { | |
for (h = 0; h < g.length - 1; h++) { | |
g[h] = g[h + 1] | |
} | |
g.length--; | |
d = g.length | |
} | |
} | |
l.bookmark = e.selection.getBookmark(2, true); | |
if (d < g.length - 1) { | |
if (d == 0) { | |
g = [] | |
} else { | |
g.length = d + 1 | |
} | |
} | |
g.push(l); | |
d = g.length - 1; | |
c.onAdd.dispatch(c, l); | |
e.isNotDirty = 0; | |
return l | |
}, | |
undo: function() { | |
var j, | |
h; | |
if (c.typing) { | |
c.add(); | |
c.typing = 0 | |
} | |
if (d > 0) { | |
j = g[--d]; | |
e.setContent(j.content, { | |
format: "raw" | |
}); | |
e.selection.moveToBookmark(j.bookmark); | |
c.onUndo.dispatch(c, j) | |
} | |
return j | |
}, | |
redo: function() { | |
var h; | |
if (d < g.length - 1) { | |
h = g[++d]; | |
e.setContent(h.content, { | |
format: "raw" | |
}); | |
e.selection.moveToBookmark(h.bookmark); | |
c.onRedo.dispatch(c, h) | |
} | |
return h | |
}, | |
clear: function() { | |
g = []; | |
d = c.typing = 0 | |
}, | |
hasUndo: function() { | |
return d > 0 || c.typing | |
}, | |
hasRedo: function() { | |
return d < g.length - 1 | |
} | |
} | |
} | |
})(tinymce); (function(l) { | |
var k = l.dom.Event, | |
c = l.isIE, | |
a = l.isGecko, | |
b = l.isOpera, | |
j = l.each, | |
i = l.extend, | |
d = true, | |
h = false; | |
function g(n, o) { | |
var m = o.ownerDocument.createRange(); | |
m.setStart(n.endContainer, n.endOffset); | |
m.setEndAfter(o); | |
return m.cloneContents().textContent.length == 0 | |
} | |
function f(m) { | |
m = m.innerHTML; | |
m = m.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, "-"); | |
m = m.replace(/<[^>]+>/g, ""); | |
return m.replace(/[ \u00a0\t\r\n]+/g, "") == "" | |
} | |
function e(o, q, m) { | |
var n, | |
p; | |
if (f(m)) { | |
n = q.getParent(m, "ul,ol"); | |
if (!q.getParent(n.parentNode, "ul,ol")) { | |
q.split(n, m); | |
p = q.create("p", 0, '<br _mce_bogus="1" />'); | |
q.replace(p, m); | |
o.select(p, 1) | |
} | |
return h | |
} | |
return d | |
} | |
l.create("tinymce.ForceBlocks", { | |
ForceBlocks: function(n) { | |
var o = this, | |
p = n.settings, | |
q; | |
o.editor = n; | |
o.dom = n.dom; | |
q = (p.forced_root_block || "p").toLowerCase(); | |
p.element = q.toUpperCase(); | |
n.onPreInit.add(o.setup, o); | |
o.reOpera = new RegExp("(\\u00a0| | )</" + q + ">", "gi"); | |
o.rePadd = new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g, q), "gi"); | |
o.reNbsp2BR1 = new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g, q), "gi"); | |
o.reNbsp2BR2 = new RegExp("<%p()([^>]+)>( | )<\\/%p>|<%p>( | )<\\/%p>".replace(/%p/g, q), "gi"); | |
o.reBR2Nbsp = new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g, q), "gi"); | |
function m(r, s) { | |
if (b) { | |
s.content = s.content.replace(o.reOpera, "</" + q + ">") | |
} | |
s.content = s.content.replace(o.rePadd, "<" + q + "$1$2$3$4$5$6>\u00a0</" + q + ">"); | |
if (!c && !b && s.set) { | |
s.content = s.content.replace(o.reNbsp2BR1, "<" + q + "$1$2><br /></" + q + ">"); | |
s.content = s.content.replace(o.reNbsp2BR2, "<" + q + "$1$2><br /></" + q + ">") | |
} else { | |
s.content = s.content.replace(o.reBR2Nbsp, "<" + q + "$1$2>\u00a0</" + q + ">") | |
} | |
} | |
n.onBeforeSetContent.add(m); | |
n.onPostProcess.add(m); | |
if (p.forced_root_block) { | |
n.onInit.add(o.forceRoots, o); | |
n.onSetContent.add(o.forceRoots, o); | |
n.onBeforeGetContent.add(o.forceRoots, o) | |
} | |
}, | |
setup: function() { | |
var n = this, | |
m = n.editor, | |
p = m.settings, | |
r = m.dom, | |
o = m.selection; | |
if (p.forced_root_block) { | |
m.onBeforeExecCommand.add(n.forceRoots, n); | |
m.onKeyUp.add(n.forceRoots, n); | |
m.onPreProcess.add(n.forceRoots, n) | |
} | |
if (p.force_br_newlines) { | |
if (c) { | |
m.onKeyPress.add(function(s, t) { | |
var u; | |
if (t.keyCode == 13 && o.getNode().nodeName != "LI") { | |
o.setContent('<br id="__" /> ', { | |
format: "raw" | |
}); | |
u = r.get("__"); | |
u.removeAttribute("id"); | |
o.select(u); | |
o.collapse(); | |
return k.cancel(t) | |
} | |
}) | |
} | |
} | |
if (!c && p.force_p_newlines) { | |
m.onKeyPress.add(function(s, t) { | |
if (t.keyCode == 13 && !t.shiftKey && !n.insertPara(t)) { | |
k.cancel(t) | |
} | |
}); | |
if (a) { | |
m.onKeyDown.add(function(s, t) { | |
if ((t.keyCode == 8 || t.keyCode == 46) && !t.shiftKey) { | |
n.backspaceDelete(t, t.keyCode == 8) | |
} | |
}) | |
} | |
} | |
if (l.isWebKit) { | |
function q(t) { | |
var s = o.getRng(), | |
u, | |
y = r.create("div", null, " "), | |
x, | |
v = r.getViewPort(t.getWin()).h; | |
s.insertNode(u = r.create("br")); | |
s.setStartAfter(u); | |
s.setEndAfter(u); | |
o.setRng(s); | |
if (o.getSel().focusNode == u.previousSibling) { | |
o.select(r.insertAfter(r.doc.createTextNode("\u00a0"), u)); | |
o.collapse(d) | |
} | |
r.insertAfter(y, u); | |
x = r.getPos(y).y; | |
r.remove(y); | |
if (x > v) { | |
t.getWin().scrollTo(0, x) | |
} | |
} | |
m.onKeyPress.add(function(s, t) { | |
if (t.keyCode == 13 && (t.shiftKey || p.force_br_newlines)) { | |
q(s); | |
k.cancel(t) | |
} | |
}) | |
} | |
m.onPreProcess.add(function(s, t) { | |
j(r.select("p,h1,h2,h3,h4,h5,h6,div", t.node), | |
function(u) { | |
if (f(u)) { | |
j(r.select("span,em,strong,b,i", t.node), | |
function(v) { | |
if (!v.hasChildNodes()) { | |
v.appendChild(s.getDoc().createTextNode("\u00a0")); | |
return h | |
} | |
}) | |
} | |
}) | |
}); | |
if (c) { | |
if (p.element != "P") { | |
m.onKeyPress.add(function(s, t) { | |
n.lastElm = o.getNode().nodeName | |
}); | |
m.onKeyUp.add(function(t, u) { | |
var x, | |
v = o.getNode(), | |
s = t.getBody(); | |
if (s.childNodes.length === 1 && v.nodeName == "P") { | |
v = r.rename(v, p.element); | |
o.select(v); | |
o.collapse(); | |
t.nodeChanged() | |
} else { | |
if (u.keyCode == 13 && !u.shiftKey && n.lastElm != "P") { | |
x = r.getParent(v, "p"); | |
if (x) { | |
r.rename(x, p.element); | |
t.nodeChanged() | |
} | |
} | |
} | |
}) | |
} | |
} | |
}, | |
find: function(u, p, q) { | |
var o = this.editor, | |
m = o.getDoc().createTreeWalker(u, 4, null, h), | |
r = -1; | |
while (u = m.nextNode()) { | |
r++; | |
if (p == 0 && u == q) { | |
return r | |
} | |
if (p == 1 && r == q) { | |
return u | |
} | |
} | |
return - 1 | |
}, | |
forceRoots: function(v, H) { | |
var y = this, | |
v = y.editor, | |
L = v.getBody(), | |
I = v.getDoc(), | |
O = v.selection, | |
z = O.getSel(), | |
A = O.getRng(), | |
M = -2, | |
u, | |
F, | |
m, | |
o, | |
J = -16777215; | |
var K, | |
p, | |
N, | |
E, | |
B, | |
q = L.childNodes, | |
D, | |
C, | |
x; | |
for (D = q.length - 1; D >= 0; D--) { | |
K = q[D]; | |
if (K.nodeType === 1 && K.getAttribute("_mce_type")) { | |
p = null; | |
continue | |
} | |
if (K.nodeType === 3 || (!y.dom.isBlock(K) && K.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(K.nodeName))) { | |
if (!p) { | |
if (K.nodeType != 3 || /[^\s]/g.test(K.nodeValue)) { | |
if (M == -2 && A) { | |
if (!c) { | |
if (A.startContainer.nodeType == 1 && (C = A.startContainer.childNodes[A.startOffset]) && C.nodeType == 1) { | |
x = C.getAttribute("id"); | |
C.setAttribute("id", "__mce") | |
} else { | |
if (v.dom.getParent(A.startContainer, | |
function(n) { | |
return n === L | |
})) { | |
F = A.startOffset; | |
m = A.endOffset; | |
M = y.find(L, 0, A.startContainer); | |
u = y.find(L, 0, A.endContainer) | |
} | |
} | |
} else { | |
o = I.body.createTextRange(); | |
o.moveToElementText(L); | |
o.collapse(1); | |
N = o.move("character", J) * -1; | |
o = A.duplicate(); | |
o.collapse(1); | |
E = o.move("character", J) * -1; | |
o = A.duplicate(); | |
o.collapse(0); | |
B = (o.move("character", J) * -1) - E; | |
M = E - N; | |
u = B | |
} | |
} | |
p = v.dom.create(v.settings.forced_root_block); | |
K.parentNode.replaceChild(p, K); | |
p.appendChild(K) | |
} | |
} else { | |
if (p.hasChildNodes()) { | |
p.insertBefore(K, p.firstChild) | |
} else { | |
p.appendChild(K) | |
} | |
} | |
} else { | |
p = null | |
} | |
} | |
if (M != -2) { | |
if (!c) { | |
p = L.getElementsByTagName(v.settings.element)[0]; | |
A = I.createRange(); | |
if (M != -1) { | |
A.setStart(y.find(L, 1, M), F) | |
} else { | |
A.setStart(p, 0) | |
} | |
if (u != -1) { | |
A.setEnd(y.find(L, 1, u), m) | |
} else { | |
A.setEnd(p, 0) | |
} | |
if (z) { | |
z.removeAllRanges(); | |
z.addRange(A) | |
} | |
} else { | |
try { | |
A = z.createRange(); | |
A.moveToElementText(L); | |
A.collapse(1); | |
A.moveStart("character", M); | |
A.moveEnd("character", u); | |
A.select() | |
} catch(G) {} | |
} | |
} else { | |
if (!c && (C = v.dom.get("__mce"))) { | |
if (x) { | |
C.setAttribute("id", x) | |
} else { | |
C.removeAttribute("id") | |
} | |
A = I.createRange(); | |
A.setStartBefore(C); | |
A.setEndBefore(C); | |
O.setRng(A) | |
} | |
} | |
}, | |
getParentBlock: function(o) { | |
var m = this.dom; | |
return m.getParent(o, m.isBlock) | |
}, | |
insertPara: function(R) { | |
var F = this, | |
v = F.editor, | |
N = v.dom, | |
S = v.getDoc(), | |
W = v.settings, | |
G = v.selection.getSel(), | |
H = G.getRangeAt(0), | |
V = S.body; | |
var K, | |
L, | |
I, | |
P, | |
O, | |
q, | |
o, | |
u, | |
z, | |
m, | |
D, | |
U, | |
p, | |
x, | |
J, | |
M = N.getViewPort(v.getWin()), | |
C, | |
E, | |
B; | |
K = S.createRange(); | |
K.setStart(G.anchorNode, G.anchorOffset); | |
K.collapse(d); | |
L = S.createRange(); | |
L.setStart(G.focusNode, G.focusOffset); | |
L.collapse(d); | |
I = K.compareBoundaryPoints(K.START_TO_END, L) < 0; | |
P = I ? G.anchorNode: G.focusNode; | |
O = I ? G.anchorOffset: G.focusOffset; | |
q = I ? G.focusNode: G.anchorNode; | |
o = I ? G.focusOffset: G.anchorOffset; | |
if (P === q && /^(TD|TH)$/.test(P.nodeName)) { | |
if (P.firstChild.nodeName == "BR") { | |
N.remove(P.firstChild) | |
} | |
if (P.childNodes.length == 0) { | |
v.dom.add(P, W.element, null, "<br />"); | |
U = v.dom.add(P, W.element, null, "<br />") | |
} else { | |
J = P.innerHTML; | |
P.innerHTML = ""; | |
v.dom.add(P, W.element, null, J); | |
U = v.dom.add(P, W.element, null, "<br />") | |
} | |
H = S.createRange(); | |
H.selectNodeContents(U); | |
H.collapse(1); | |
v.selection.setRng(H); | |
return h | |
} | |
if (P == V && q == V && V.firstChild && v.dom.isBlock(V.firstChild)) { | |
P = q = P.firstChild; | |
O = o = 0; | |
K = S.createRange(); | |
K.setStart(P, 0); | |
L = S.createRange(); | |
L.setStart(q, 0) | |
} | |
P = P.nodeName == "HTML" ? S.body: P; | |
P = P.nodeName == "BODY" ? P.firstChild: P; | |
q = q.nodeName == "HTML" ? S.body: q; | |
q = q.nodeName == "BODY" ? q.firstChild: q; | |
u = F.getParentBlock(P); | |
z = F.getParentBlock(q); | |
m = u ? u.nodeName: W.element; | |
if (J = F.dom.getParent(u, "li,pre")) { | |
if (J.nodeName == "LI") { | |
return e(v.selection, F.dom, J) | |
} | |
return d | |
} | |
if (u && (u.nodeName == "CAPTION" || /absolute|relative|fixed/gi.test(N.getStyle(u, "position", 1)))) { | |
m = W.element; | |
u = null | |
} | |
if (z && (z.nodeName == "CAPTION" || /absolute|relative|fixed/gi.test(N.getStyle(u, "position", 1)))) { | |
m = W.element; | |
z = null | |
} | |
if (/(TD|TABLE|TH|CAPTION)/.test(m) || (u && m == "DIV" && /left|right/gi.test(N.getStyle(u, "float", 1)))) { | |
m = W.element; | |
u = z = null | |
} | |
D = (u && u.nodeName == m) ? u.cloneNode(0) : v.dom.create(m); | |
U = (z && z.nodeName == m) ? z.cloneNode(0) : v.dom.create(m); | |
U.removeAttribute("id"); | |
if (/^(H[1-6])$/.test(m) && g(H, u)) { | |
U = v.dom.create(W.element) | |
} | |
J = p = P; | |
do { | |
if (J == V || J.nodeType == 9 || F.dom.isBlock(J) || /(TD|TABLE|TH|CAPTION)/.test(J.nodeName)) { | |
break | |
} | |
p = J | |
} | |
while ((J = J.previousSibling ? J.previousSibling: J.parentNode)); | |
J = x = q; | |
do { | |
if (J == V || J.nodeType == 9 || F.dom.isBlock(J) || /(TD|TABLE|TH|CAPTION)/.test(J.nodeName)) { | |
break | |
} | |
x = J | |
} | |
while ((J = J.nextSibling ? J.nextSibling: J.parentNode)); | |
if (p.nodeName == m) { | |
K.setStart(p, 0) | |
} else { | |
K.setStartBefore(p) | |
} | |
K.setEnd(P, O); | |
D.appendChild(K.cloneContents() || S.createTextNode("")); | |
try { | |
L.setEndAfter(x) | |
} catch(Q) {} | |
L.setStart(q, o); | |
U.appendChild(L.cloneContents() || S.createTextNode("")); | |
H = S.createRange(); | |
if (!p.previousSibling && p.parentNode.nodeName == m) { | |
H.setStartBefore(p.parentNode) | |
} else { | |
if (K.startContainer.nodeName == m && K.startOffset == 0) { | |
H.setStartBefore(K.startContainer) | |
} else { | |
H.setStart(K.startContainer, K.startOffset) | |
} | |
} | |
if (!x.nextSibling && x.parentNode.nodeName == m) { | |
H.setEndAfter(x.parentNode) | |
} else { | |
H.setEnd(L.endContainer, L.endOffset) | |
} | |
H.deleteContents(); | |
if (b) { | |
v.getWin().scrollTo(0, M.y) | |
} | |
if (D.firstChild && D.firstChild.nodeName == m) { | |
D.innerHTML = D.firstChild.innerHTML | |
} | |
if (U.firstChild && U.firstChild.nodeName == m) { | |
U.innerHTML = U.firstChild.innerHTML | |
} | |
if (f(D)) { | |
D.innerHTML = "<br />" | |
} | |
function T(y, s) { | |
var r = [], | |
Y, | |
X, | |
t; | |
y.innerHTML = ""; | |
if (W.keep_styles) { | |
X = s; | |
do { | |
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(X.nodeName)) { | |
Y = X.cloneNode(h); | |
N.setAttrib(Y, "id", ""); | |
r.push(Y) | |
} | |
} | |
while (X = X.parentNode) | |
} | |
if (r.length > 0) { | |
for (t = r.length - 1, Y = y; t >= 0; t--) { | |
Y = Y.appendChild(r[t]) | |
} | |
r[0].innerHTML = b ? " ": "<br />"; | |
return r[0] | |
} else { | |
y.innerHTML = b ? " ": "<br />" | |
} | |
} | |
if (f(U)) { | |
B = T(U, q) | |
} | |
if (b && parseFloat(opera.version()) < 9.5) { | |
H.insertNode(D); | |
H.insertNode(U) | |
} else { | |
H.insertNode(U); | |
H.insertNode(D) | |
} | |
U.normalize(); | |
D.normalize(); | |
function A(r) { | |
return S.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, h).nextNode() || r | |
} | |
H = S.createRange(); | |
H.selectNodeContents(a ? A(B || U) : B || U); | |
H.collapse(1); | |
G.removeAllRanges(); | |
G.addRange(H); | |
C = v.dom.getPos(U).y; | |
E = U.clientHeight; | |
if (C < M.y || C + E > M.y + M.h) { | |
v.getWin().scrollTo(0, C < M.y ? C: C - M.h + 25) | |
} | |
return h | |
}, | |
backspaceDelete: function(s, A) { | |
var C = this, | |
q = C.editor, | |
x = q.getBody(), | |
p = q.dom, | |
o, | |
u = q.selection, | |
m = u.getRng(), | |
v = m.startContainer, | |
o, | |
y, | |
z; | |
if (v && q.dom.isBlock(v) && !/^(TD|TH)$/.test(v.nodeName) && A) { | |
if (v.childNodes.length == 0 || (v.childNodes.length == 1 && v.firstChild.nodeName == "BR")) { | |
o = v; | |
while ((o = o.previousSibling) && !q.dom.isBlock(o)) {} | |
if (o) { | |
if (v != x.firstChild) { | |
y = q.dom.doc.createTreeWalker(o, NodeFilter.SHOW_TEXT, null, h); | |
while (z = y.nextNode()) { | |
o = z | |
} | |
m = q.getDoc().createRange(); | |
m.setStart(o, o.nodeValue ? o.nodeValue.length: 0); | |
m.setEnd(o, o.nodeValue ? o.nodeValue.length: 0); | |
u.setRng(m); | |
q.dom.remove(v) | |
} | |
return k.cancel(s) | |
} | |
} | |
} | |
function B(n) { | |
var r; | |
n = n.target; | |
if (n && n.parentNode && n.nodeName == "BR" && (o = C.getParentBlock(n))) { | |
r = n.previousSibling; | |
k.remove(x, "DOMNodeInserted", B); | |
if (r && r.nodeType == 3 && /\s+$/.test(r.nodeValue)) { | |
return | |
} | |
if (n.previousSibling || n.nextSibling) { | |
q.dom.remove(n) | |
} | |
} | |
} | |
k._add(x, "DOMNodeInserted", B); | |
window.setTimeout(function() { | |
k._remove(x, "DOMNodeInserted", B) | |
}, | |
1) | |
} | |
}) | |
})(tinymce); (function(c) { | |
var b = c.DOM, | |
a = c.dom.Event, | |
d = c.each, | |
e = c.extend; | |
c.create("tinymce.ControlManager", { | |
ControlManager: function(f, j) { | |
var h = this, | |
g; | |
j = j || {}; | |
h.editor = f; | |
h.controls = {}; | |
h.onAdd = new c.util.Dispatcher(h); | |
h.onPostRender = new c.util.Dispatcher(h); | |
h.prefix = j.prefix || f.id + "_"; | |
h._cls = {}; | |
h.onPostRender.add(function() { | |
d(h.controls, | |
function(i) { | |
i.postRender() | |
}) | |
}) | |
}, | |
get: function(f) { | |
return this.controls[this.prefix + f] || this.controls[f] | |
}, | |
setActive: function(h, f) { | |
var g = null; | |
if (g = this.get(h)) { | |
g.setActive(f) | |
} | |
return g | |
}, | |
setDisabled: function(h, f) { | |
var g = null; | |
if (g = this.get(h)) { | |
g.setDisabled(f) | |
} | |
return g | |
}, | |
add: function(g) { | |
var f = this; | |
if (g) { | |
f.controls[g.id] = g; | |
f.onAdd.dispatch(g, f) | |
} | |
return g | |
}, | |
createControl: function(i) { | |
var h, | |
g = this, | |
f = g.editor; | |
d(f.plugins, | |
function(j) { | |
if (j.createControl) { | |
h = j.createControl(i, g); | |
if (h) { | |
return false | |
} | |
} | |
}); | |
switch (i) { | |
case "|": | |
case "separator": | |
return g.createSeparator() | |
} | |
if (!h && f.buttons && (h = f.buttons[i])) { | |
return g.createButton(i, h) | |
} | |
return g.add(h) | |
}, | |
createDropMenu: function(f, n, h) { | |
var m = this, | |
i = m.editor, | |
j, | |
g, | |
k, | |
l; | |
n = e({ | |
"class": "mceDropDown", | |
constrain: i.settings.constrain_menus | |
}, | |
n); | |
n["class"] = n["class"] + " " + i.getParam("skin") + "Skin"; | |
if (k = i.getParam("skin_variant")) { | |
n["class"] += " " + i.getParam("skin") + "Skin" + k.substring(0, 1).toUpperCase() + k.substring(1) | |
} | |
f = m.prefix + f; | |
l = h || m._cls.dropmenu || c.ui.DropMenu; | |
j = m.controls[f] = new l(f, n); | |
j.onAddItem.add(function(r, q) { | |
var p = q.settings; | |
p.title = i.getLang(p.title, p.title); | |
if (!p.onclick) { | |
p.onclick = function(o) { | |
if (p.cmd) { | |
i.execCommand(p.cmd, p.ui || false, p.value) | |
} | |
} | |
} | |
}); | |
i.onRemove.add(function() { | |
j.destroy() | |
}); | |
if (c.isIE) { | |
j.onShowMenu.add(function() { | |
i.focus(); | |
g = i.selection.getBookmark(1) | |
}); | |
j.onHideMenu.add(function() { | |
if (g) { | |
i.selection.moveToBookmark(g); | |
g = 0 | |
} | |
}) | |
} | |
return m.add(j) | |
}, | |
createListBox: function(m, i, l) { | |
var h = this, | |
g = h.editor, | |
j, | |
k, | |
f; | |
if (h.get(m)) { | |
return null | |
} | |
i.title = g.translate(i.title); | |
i.scope = i.scope || g; | |
if (!i.onselect) { | |
i.onselect = function(n) { | |
g.execCommand(i.cmd, i.ui || false, n || i.value) | |
} | |
} | |
i = e({ | |
title: i.title, | |
"class": "mce_" + m, | |
scope: i.scope, | |
control_manager: h | |
}, | |
i); | |
m = h.prefix + m; | |
if (g.settings.use_native_selects) { | |
k = new c.ui.NativeListBox(m, i) | |
} else { | |
f = l || h._cls.listbox || c.ui.ListBox; | |
k = new f(m, i) | |
} | |
h.controls[m] = k; | |
if (c.isWebKit) { | |
k.onPostRender.add(function(p, o) { | |
a.add(o, "mousedown", | |
function() { | |
g.bookmark = g.selection.getBookmark(1) | |
}); | |
a.add(o, "focus", | |
function() { | |
g.selection.moveToBookmark(g.bookmark); | |
g.bookmark = null | |
}) | |
}) | |
} | |
if (k.hideMenu) { | |
g.onMouseDown.add(k.hideMenu, k) | |
} | |
return h.add(k) | |
}, | |
createButton: function(m, i, l) { | |
var h = this, | |
g = h.editor, | |
j, | |
k, | |
f; | |
if (h.get(m)) { | |
return null | |
} | |
i.title = g.translate(i.title); | |
i.label = g.translate(i.label); | |
i.scope = i.scope || g; | |
if (!i.onclick && !i.menu_button) { | |
i.onclick = function() { | |
g.execCommand(i.cmd, i.ui || false, i.value) | |
} | |
} | |
i = e({ | |
title: i.title, | |
"class": "mce_" + m, | |
unavailable_prefix: g.getLang("unavailable", ""), | |
scope: i.scope, | |
control_manager: h | |
}, | |
i); | |
m = h.prefix + m; | |
if (i.menu_button) { | |
f = l || h._cls.menubutton || c.ui.MenuButton; | |
k = new f(m, i); | |
g.onMouseDown.add(k.hideMenu, k) | |
} else { | |
f = h._cls.button || c.ui.Button; | |
k = new f(m, i) | |
} | |
return h.add(k) | |
}, | |
createMenuButton: function(h, f, g) { | |
f = f || {}; | |
f.menu_button = 1; | |
return this.createButton(h, f, g) | |
}, | |
createSplitButton: function(m, i, l) { | |
var h = this, | |
g = h.editor, | |
j, | |
k, | |
f; | |
if (h.get(m)) { | |
return null | |
} | |
i.title = g.translate(i.title); | |
i.scope = i.scope || g; | |
if (!i.onclick) { | |
i.onclick = function(n) { | |
g.execCommand(i.cmd, i.ui || false, n || i.value) | |
} | |
} | |
if (!i.onselect) { | |
i.onselect = function(n) { | |
g.execCommand(i.cmd, i.ui || false, n || i.value) | |
} | |
} | |
i = e({ | |
title: i.title, | |
"class": "mce_" + m, | |
scope: i.scope, | |
control_manager: h | |
}, | |
i); | |
m = h.prefix + m; | |
f = l || h._cls.splitbutton || c.ui.SplitButton; | |
k = h.add(new f(m, i)); | |
g.onMouseDown.add(k.hideMenu, k); | |
return k | |
}, | |
createColorSplitButton: function(f, n, h) { | |
var l = this, | |
j = l.editor, | |
i, | |
k, | |
m, | |
g; | |
if (l.get(f)) { | |
return null | |
} | |
n.title = j.translate(n.title); | |
n.scope = n.scope || j; | |
if (!n.onclick) { | |
n.onclick = function(o) { | |
if (c.isIE) { | |
g = j.selection.getBookmark(1) | |
} | |
j.execCommand(n.cmd, n.ui || false, o || n.value) | |
} | |
} | |
if (!n.onselect) { | |
n.onselect = function(o) { | |
j.execCommand(n.cmd, n.ui || false, o || n.value) | |
} | |
} | |
n = e({ | |
title: n.title, | |
"class": "mce_" + f, | |
menu_class: j.getParam("skin") + "Skin", | |
scope: n.scope, | |
more_colors_title: j.getLang("more_colors") | |
}, | |
n); | |
f = l.prefix + f; | |
m = h || l._cls.colorsplitbutton || c.ui.ColorSplitButton; | |
k = new m(f, n); | |
j.onMouseDown.add(k.hideMenu, k); | |
j.onRemove.add(function() { | |
k.destroy() | |
}); | |
if (c.isIE) { | |
k.onShowMenu.add(function() { | |
j.focus(); | |
g = j.selection.getBookmark(1) | |
}); | |
k.onHideMenu.add(function() { | |
if (g) { | |
j.selection.moveToBookmark(g); | |
g = 0 | |
} | |
}) | |
} | |
return l.add(k) | |
}, | |
createToolbar: function(k, h, j) { | |
var i, | |
g = this, | |
f; | |
k = g.prefix + k; | |
f = j || g._cls.toolbar || c.ui.Toolbar; | |
i = new f(k, h); | |
if (g.get(k)) { | |
return null | |
} | |
return g.add(i) | |
}, | |
createSeparator: function(g) { | |
var f = g || this._cls.separator || c.ui.Separator; | |
return new f() | |
}, | |
setControlType: function(g, f) { | |
return this._cls[g.toLowerCase()] = f | |
}, | |
destroy: function() { | |
d(this.controls, | |
function(f) { | |
f.destroy() | |
}); | |
this.controls = null | |
} | |
}) | |
})(tinymce); (function(d) { | |
var a = d.util.Dispatcher, | |
e = d.each, | |
c = d.isIE, | |
b = d.isOpera; | |
d.create("tinymce.WindowManager", { | |
WindowManager: function(f) { | |
var g = this; | |
g.editor = f; | |
g.onOpen = new a(g); | |
g.onClose = new a(g); | |
g.params = {}; | |
g.features = {} | |
}, | |
open: function(z, h) { | |
var v = this, | |
k = "", | |
n, | |
m, | |
i = v.editor.settings.dialog_type == "modal", | |
q, | |
o, | |
j, | |
g = d.DOM.getViewPort(), | |
r; | |
z = z || {}; | |
h = h || {}; | |
o = b ? g.w: screen.width; | |
j = b ? g.h: screen.height; | |
z.name = z.name || "mc_" + new Date().getTime(); | |
z.width = parseInt(z.width || 320); | |
z.height = parseInt(z.height || 240); | |
z.resizable = true; | |
z.left = z.left || parseInt(o / 2) - (z.width / 2); | |
z.top = z.top || parseInt(j / 2) - (z.height / 2); | |
h.inline = false; | |
h.mce_width = z.width; | |
h.mce_height = z.height; | |
h.mce_auto_focus = z.auto_focus; | |
if (i) { | |
if (c) { | |
z.center = true; | |
z.help = false; | |
z.dialogWidth = z.width + "px"; | |
z.dialogHeight = z.height + "px"; | |
z.scroll = z.scrollbars || false | |
} | |
} | |
e(z, | |
function(p, f) { | |
if (d.is(p, "boolean")) { | |
p = p ? "yes": "no" | |
} | |
if (!/^(name|url)$/.test(f)) { | |
if (c && i) { | |
k += (k ? ";": "") + f + ":" + p | |
} else { | |
k += (k ? ",": "") + f + "=" + p | |
} | |
} | |
}); | |
v.features = z; | |
v.params = h; | |
v.onOpen.dispatch(v, z, h); | |
r = z.url || z.file; | |
r = d._addVer(r); | |
try { | |
if (c && i) { | |
q = 1; | |
window.showModalDialog(r, window, k) | |
} else { | |
q = window.open(r, z.name, k) | |
} | |
} catch(l) {} | |
if (!q) { | |
alert(v.editor.getLang("popup_blocked")) | |
} | |
}, | |
close: function(f) { | |
f.close(); | |
this.onClose.dispatch(this) | |
}, | |
createInstance: function(i, h, g, m, l, k) { | |
var j = d.resolve(i); | |
return new j(h, g, m, l, k) | |
}, | |
confirm: function(h, f, i, g) { | |
g = g || window; | |
f.call(i || this, g.confirm(this._decode(this.editor.getLang(h, h)))) | |
}, | |
alert: function(h, f, j, g) { | |
var i = this; | |
g = g || window; | |
g.alert(i._decode(i.editor.getLang(h, h))); | |
if (f) { | |
f.call(j || i) | |
} | |
}, | |
resizeBy: function(f, g, h) { | |
h.resizeBy(f, g) | |
}, | |
_decode: function(f) { | |
return d.DOM.decode(f).replace(/\\n/g, "\n") | |
} | |
}) | |
} (tinymce)); (function(a) { | |
function b() { | |
var d = {}, | |
c = {}, | |
e = {}; | |
function f(j, i, h, g) { | |
if (typeof(i) == "string") { | |
i = [i] | |
} | |
a.each(i, | |
function(k) { | |
j[k.toLowerCase()] = { | |
func: h, | |
scope: g | |
} | |
}) | |
} | |
a.extend(this, { | |
add: function(i, h, g) { | |
f(d, i, h, g) | |
}, | |
addQueryStateHandler: function(i, h, g) { | |
f(c, i, h, g) | |
}, | |
addQueryValueHandler: function(i, h, g) { | |
f(e, i, h, g) | |
}, | |
execCommand: function(h, k, j, i, g) { | |
if (k = d[k.toLowerCase()]) { | |
if (k.func.call(h || k.scope, j, i, g) !== false) { | |
return true | |
} | |
} | |
}, | |
queryCommandValue: function() { | |
if (cmd = e[cmd.toLowerCase()]) { | |
return cmd.func.call(scope || cmd.scope, ui, value, args) | |
} | |
}, | |
queryCommandState: function() { | |
if (cmd = c[cmd.toLowerCase()]) { | |
return cmd.func.call(scope || cmd.scope, ui, value, args) | |
} | |
} | |
}) | |
} | |
a.GlobalCommands = new b() | |
})(tinymce); (function(a) { | |
a.Formatter = function(T) { | |
var K = {}, | |
M = a.each, | |
c = T.dom, | |
p = T.selection, | |
s = a.dom.TreeWalker, | |
I = new a.dom.RangeUtils(c), | |
d = T.schema.isValid, | |
E = c.isBlock, | |
k = T.settings.forced_root_block, | |
r = c.nodeIndex, | |
D = "\uFEFF", | |
e = /^(src|href|style)$/, | |
Q = false, | |
A = true, | |
o, | |
N = { | |
apply: [], | |
remove: [] | |
}; | |
function y(U) { | |
return U instanceof Array | |
} | |
function l(V, U) { | |
return c.getParents(V, U, c.getRoot()) | |
} | |
function b(U) { | |
return U.nodeType === 1 && (U.face === "mceinline" || U.style.fontFamily === "mceinline") | |
} | |
function P(U) { | |
return U ? K[U] : K | |
} | |
function j(U, V) { | |
if (U) { | |
if (typeof(U) !== "string") { | |
M(U, | |
function(X, W) { | |
j(W, X) | |
}) | |
} else { | |
V = V.length ? V: [V]; | |
M(V, | |
function(W) { | |
if (W.deep === o) { | |
W.deep = !W.selector | |
} | |
if (W.split === o) { | |
W.split = !W.selector || W.inline | |
} | |
if (W.remove === o && W.selector && !W.inline) { | |
W.remove = "none" | |
} | |
if (W.selector && W.inline) { | |
W.mixed = true; | |
W.block_expand = true | |
} | |
if (typeof(W.classes) === "string") { | |
W.classes = W.classes.split(/\s+/) | |
} | |
}); | |
K[U] = V | |
} | |
} | |
} | |
function R(W, ac, Y) { | |
var Z = P(W), | |
ad = Z[0], | |
ab, | |
V, | |
aa; | |
function X(ag) { | |
var af = ag.startContainer, | |
aj = ag.startOffset, | |
ai, | |
ah; | |
if (af.nodeType == 1 || af.nodeValue === "") { | |
ai = new s(af.childNodes[aj]); | |
for (ah = ai.current(); ah; ah = ai.next()) { | |
if (ah.nodeType == 3 && !E(ah.parentNode) && !f(ah)) { | |
ag.setStart(ah, 0); | |
break | |
} | |
} | |
} | |
return ag | |
} | |
function U(ag, af) { | |
af = af || ad; | |
if (ag) { | |
M(af.styles, | |
function(ai, ah) { | |
c.setStyle(ag, ah, q(ai, ac)) | |
}); | |
M(af.attributes, | |
function(ai, ah) { | |
c.setAttrib(ag, ah, q(ai, ac)) | |
}); | |
M(af.classes, | |
function(ah) { | |
ah = q(ah, ac); | |
if (!c.hasClass(ag, ah)) { | |
c.addClass(ag, ah) | |
} | |
}) | |
} | |
} | |
function ae(ag) { | |
var af = [], | |
ai, | |
ah; | |
ai = ad.inline || ad.block; | |
ah = c.create(ai); | |
U(ah); | |
I.walk(ag, | |
function(aj) { | |
var ak; | |
function al(am) { | |
var ap = am.nodeName.toLowerCase(), | |
ao = am.parentNode.nodeName.toLowerCase(), | |
an; | |
if (g(ap, "br")) { | |
ak = 0; | |
if (ad.block) { | |
c.remove(am) | |
} | |
return | |
} | |
if (ad.wrapper && v(am, W, ac)) { | |
ak = 0; | |
return | |
} | |
if (ad.block && !ad.wrapper && F(ap)) { | |
am = c.rename(am, ai); | |
U(am); | |
af.push(am); | |
ak = 0; | |
return | |
} | |
if (ad.selector) { | |
M(Z, | |
function(aq) { | |
if (c.is(am, aq.selector) && !b(am)) { | |
U(am, aq); | |
an = true | |
} | |
}); | |
if (!ad.inline || an) { | |
ak = 0; | |
return | |
} | |
} | |
if (d(ai, ap) && d(ao, ai)) { | |
if (!ak) { | |
ak = ah.cloneNode(Q); | |
am.parentNode.insertBefore(ak, am); | |
af.push(ak) | |
} | |
ak.appendChild(am) | |
} else { | |
ak = 0; | |
M(a.grep(am.childNodes), al); | |
ak = 0 | |
} | |
} | |
M(aj, al) | |
}); | |
M(af, | |
function(al) { | |
var aj; | |
function am(ao) { | |
var an = 0; | |
M(ao.childNodes, | |
function(ap) { | |
if (!f(ap) && !G(ap)) { | |
an++ | |
} | |
}); | |
return an | |
} | |
function ak(an) { | |
var ap, | |
ao; | |
M(an.childNodes, | |
function(aq) { | |
if (aq.nodeType == 1 && !G(aq) && !b(aq)) { | |
ap = aq; | |
return Q | |
} | |
}); | |
if (ap && h(ap, ad)) { | |
ao = ap.cloneNode(Q); | |
U(ao); | |
c.replace(ao, an, A); | |
c.remove(ap, 1) | |
} | |
return ao || an | |
} | |
aj = am(al); | |
if (aj === 0) { | |
c.remove(al, 1); | |
return | |
} | |
if (ad.inline || ad.wrapper) { | |
if (!ad.exact && aj === 1) { | |
al = ak(al) | |
} | |
M(Z, | |
function(an) { | |
M(c.select(an.inline, al), | |
function(ao) { | |
S(an, ac, ao, an.exact ? ao: null) | |
}) | |
}); | |
c.getParent(al.parentNode, | |
function(an) { | |
if (v(an, W, ac)) { | |
c.remove(al, 1); | |
al = 0; | |
return A | |
} | |
}); | |
if (al) { | |
al = t(B(al), al); | |
al = t(al, B(al, A)) | |
} | |
} | |
}) | |
} | |
if (ad) { | |
if (Y) { | |
V = c.createRng(); | |
V.setStartBefore(Y); | |
V.setEndAfter(Y); | |
ae(V) | |
} else { | |
if (!p.isCollapsed() || !ad.inline) { | |
ab = p.getBookmark(); | |
ae(n(p.getRng(A), Z)); | |
p.moveToBookmark(ab); | |
p.setRng(X(p.getRng(A))); | |
T.nodeChanged() | |
} else { | |
O("apply", W, ac) | |
} | |
} | |
} | |
} | |
function z(W, ae, Y) { | |
var Z = P(W), | |
ag = Z[0], | |
ad, | |
ac, | |
V; | |
function X(al) { | |
var ak, | |
aj, | |
ai; | |
ak = a.grep(al.childNodes); | |
for (aj = 0, ai = Z.length; aj < ai; aj++) { | |
if (S(Z[aj], ae, al, al)) { | |
break | |
} | |
} | |
if (ag.deep) { | |
for (aj = 0, ai = ak.length; aj < ai; aj++) { | |
X(ak[aj]) | |
} | |
} | |
} | |
function aa(ai) { | |
var aj; | |
M(l(ai.parentNode).reverse(), | |
function(ak) { | |
var al; | |
if (!aj && ak.id != "_start" && ak.id != "_end") { | |
al = v(ak, W, ae); | |
if (al && al.split !== false) { | |
aj = ak | |
} | |
} | |
}); | |
return aj | |
} | |
function U(al, ai, an, aq) { | |
var ar, | |
ap, | |
ao, | |
ak, | |
am, | |
aj; | |
if (al) { | |
aj = al.parentNode; | |
for (ar = ai.parentNode; ar && ar != aj; ar = ar.parentNode) { | |
ap = ar.cloneNode(Q); | |
for (am = 0; am < Z.length; am++) { | |
if (S(Z[am], ae, ap, ap)) { | |
ap = 0; | |
break | |
} | |
} | |
if (ap) { | |
if (ao) { | |
ap.appendChild(ao) | |
} | |
if (!ak) { | |
ak = ap | |
} | |
ao = ap | |
} | |
} | |
if (aq && (!ag.mixed || !E(al))) { | |
ai = c.split(al, ai) | |
} | |
if (ao) { | |
an.parentNode.insertBefore(ao, an); | |
ak.appendChild(an) | |
} | |
} | |
return ai | |
} | |
function af(ai) { | |
return U(aa(ai), ai, ai, true) | |
} | |
function ab(ak) { | |
var aj = c.get(ak ? "_start": "_end"), | |
ai = aj[ak ? "firstChild": "lastChild"]; | |
c.remove(aj, 1); | |
return ai | |
} | |
function ah(ai) { | |
var aj, | |
ak; | |
ai = n(ai, Z, A); | |
if (ag.split) { | |
aj = H(ai, A); | |
ak = H(ai); | |
if (aj != ak) { | |
aj = L(aj, "span", { | |
id: "_start", | |
_mce_type: "bookmark" | |
}); | |
ak = L(ak, "span", { | |
id: "_end", | |
_mce_type: "bookmark" | |
}); | |
af(aj); | |
af(ak); | |
aj = ab(A); | |
ak = ab() | |
} else { | |
aj = ak = af(aj) | |
} | |
ai.startContainer = aj.parentNode; | |
ai.startOffset = r(aj); | |
ai.endContainer = ak.parentNode; | |
ai.endOffset = r(ak) + 1 | |
} | |
I.walk(ai, | |
function(al) { | |
M(al, | |
function(am) { | |
X(am) | |
}) | |
}) | |
} | |
if (Y) { | |
V = c.createRng(); | |
V.setStartBefore(Y); | |
V.setEndAfter(Y); | |
ah(V); | |
return | |
} | |
if (!p.isCollapsed() || !ag.inline) { | |
ad = p.getBookmark(); | |
ah(p.getRng(A)); | |
p.moveToBookmark(ad); | |
T.nodeChanged() | |
} else { | |
O("remove", W, ae) | |
} | |
} | |
function C(U, W, V) { | |
if (i(U, W, V)) { | |
z(U, W, V) | |
} else { | |
R(U, W, V) | |
} | |
} | |
function v(X, U, Z) { | |
var aa = P(U), | |
Y, | |
W, | |
V; | |
function ab(af, ah, ai) { | |
var ae, | |
ag, | |
ac = ah[ai], | |
ad; | |
if (ac) { | |
if (ac.length === o) { | |
for (ae in ac) { | |
if (ac.hasOwnProperty(ae)) { | |
if (ai === "attributes") { | |
ag = c.getAttrib(af, ae) | |
} else { | |
ag = J(af, ae) | |
} | |
if (!g(ag, q(ac[ae], Z))) { | |
return | |
} | |
} | |
} | |
} else { | |
for (ad = 0; ad < ac.length; ad++) { | |
if (ai === "attributes" ? c.getAttrib(af, ac[ad]) : J(af, ac[ad])) { | |
return ah | |
} | |
} | |
} | |
} | |
return ah | |
} | |
if (aa && X) { | |
for (W = 0; W < aa.length; W++) { | |
Y = aa[W]; | |
if (h(X, Y) && ab(X, Y, "attributes") && ab(X, Y, "styles")) { | |
if (V = Y.classes) { | |
for (W = 0; W < V.length; W++) { | |
if (!c.hasClass(X, V[W])) { | |
return | |
} | |
} | |
} | |
return Y | |
} | |
} | |
} | |
} | |
function i(W, Z, Y) { | |
var V, | |
X; | |
function U(aa) { | |
aa = c.getParent(aa, | |
function(ab) { | |
return !! v(ab, W, Z) | |
}); | |
return v(aa, W, Z) | |
} | |
if (Y) { | |
return U(Y) | |
} | |
if (p.isCollapsed()) { | |
for (X = N.apply.length - 1; X >= 0; X--) { | |
if (N.apply[X].name == W) { | |
return true | |
} | |
} | |
for (X = N.remove.length - 1; X >= 0; X--) { | |
if (N.remove[X].name == W) { | |
return false | |
} | |
} | |
return U(p.getNode()) | |
} | |
Y = p.getNode(); | |
if (U(Y)) { | |
return A | |
} | |
V = p.getStart(); | |
if (V != Y) { | |
if (U(V)) { | |
return A | |
} | |
} | |
return Q | |
} | |
function u(ab, aa) { | |
var Y, | |
Z = [], | |
X = {}, | |
W, | |
V, | |
U; | |
if (p.isCollapsed()) { | |
for (V = 0; V < ab.length; V++) { | |
for (W = N.remove.length - 1; W >= 0; W--) { | |
U = ab[V]; | |
if (N.remove[W].name == U) { | |
X[U] = true; | |
break | |
} | |
} | |
} | |
for (W = N.apply.length - 1; W >= 0; W--) { | |
for (V = 0; V < ab.length; V++) { | |
U = ab[V]; | |
if (!X[U] && N.apply[W].name == U) { | |
X[U] = true; | |
Z.push(U) | |
} | |
} | |
} | |
} | |
Y = p.getStart(); | |
c.getParent(Y, | |
function(ae) { | |
var ad, | |
ac; | |
for (ad = 0; ad < ab.length; ad++) { | |
ac = ab[ad]; | |
if (!X[ac] && v(ae, ac, aa)) { | |
X[ac] = true; | |
Z.push(ac) | |
} | |
} | |
}); | |
return Z | |
} | |
function x(Y) { | |
var aa = P(Y), | |
X, | |
W, | |
Z, | |
V, | |
U; | |
if (aa) { | |
X = p.getStart(); | |
W = l(X); | |
for (V = aa.length - 1; V >= 0; V--) { | |
U = aa[V].selector; | |
if (!U) { | |
return A | |
} | |
for (Z = W.length - 1; Z >= 0; Z--) { | |
if (c.is(W[Z], U)) { | |
return A | |
} | |
} | |
} | |
} | |
return Q | |
} | |
a.extend(this, { | |
get: P, | |
register: j, | |
apply: R, | |
remove: z, | |
toggle: C, | |
match: i, | |
matchAll: u, | |
matchNode: v, | |
canApply: x | |
}); | |
function h(U, V) { | |
if (g(U, V.inline)) { | |
return A | |
} | |
if (g(U, V.block)) { | |
return A | |
} | |
if (V.selector) { | |
return c.is(U, V.selector) | |
} | |
} | |
function g(V, U) { | |
V = V || ""; | |
U = U || ""; | |
V = "" + (V.nodeName || V); | |
U = "" + (U.nodeName || U); | |
return V.toLowerCase() == U.toLowerCase() | |
} | |
function J(V, U) { | |
var W = c.getStyle(V, U); | |
if (U == "color" || U == "backgroundColor") { | |
W = c.toHex(W) | |
} | |
if (U == "fontWeight" && W == 700) { | |
W = "bold" | |
} | |
return "" + W | |
} | |
function q(U, V) { | |
if (typeof(U) != "string") { | |
U = U(V) | |
} else { | |
if (V) { | |
U = U.replace(/%(\w+)/g, | |
function(X, W) { | |
return V[W] || X | |
}) | |
} | |
} | |
return U | |
} | |
function f(U) { | |
return U && U.nodeType === 3 && /^\s*$/.test(U.nodeValue) | |
} | |
function L(W, V, U) { | |
var X = c.create(V, U); | |
W.parentNode.insertBefore(X, W); | |
X.appendChild(W); | |
return X | |
} | |
function n(U, ac, X) { | |
var W = U.startContainer, | |
Z = U.startOffset, | |
af = U.endContainer, | |
aa = U.endOffset, | |
ae, | |
ab; | |
function ad(ai, aj, ag, ah) { | |
var ak, | |
al; | |
ah = ah || c.getRoot(); | |
for (;;) { | |
ak = ai.parentNode; | |
if (ak == ah || (!ac[0].block_expand && E(ak))) { | |
return ai | |
} | |
for (ae = ak[aj]; ae && ae != ai; ae = ae[ag]) { | |
if (ae.nodeType == 1 && !G(ae)) { | |
return ai | |
} | |
if (ae.nodeType == 3 && !f(ae)) { | |
return ai | |
} | |
} | |
ai = ai.parentNode | |
} | |
return ai | |
} | |
if (W.nodeType == 1 && W.hasChildNodes()) { | |
ab = W.childNodes.length - 1; | |
W = W.childNodes[Z > ab ? ab: Z]; | |
if (W.nodeType == 3) { | |
Z = 0 | |
} | |
} | |
if (af.nodeType == 1 && af.hasChildNodes()) { | |
ab = af.childNodes.length - 1; | |
af = af.childNodes[aa > ab ? ab: aa - 1]; | |
if (af.nodeType == 3) { | |
aa = af.nodeValue.length | |
} | |
} | |
if (G(W.parentNode)) { | |
W = W.parentNode | |
} | |
if (G(W)) { | |
W = W.nextSibling || W | |
} | |
if (G(af.parentNode)) { | |
af = af.parentNode | |
} | |
if (G(af)) { | |
af = af.previousSibling || af | |
} | |
if (ac[0].inline || ac[0].block_expand) { | |
W = ad(W, "firstChild", "nextSibling"); | |
af = ad(af, "lastChild", "previousSibling") | |
} | |
if (ac[0].selector && ac[0].expand !== Q && !ac[0].inline) { | |
function Y(ah, ag) { | |
var ai, | |
aj, | |
ak; | |
if (ah.nodeType == 3 && ah.nodeValue.length == 0 && ah[ag]) { | |
ah = ah[ag] | |
} | |
ai = l(ah); | |
for (aj = 0; aj < ai.length; aj++) { | |
for (ak = 0; ak < ac.length; ak++) { | |
if (c.is(ai[aj], ac[ak].selector)) { | |
return ai[aj] | |
} | |
} | |
} | |
return ah | |
} | |
W = Y(W, "previousSibling"); | |
af = Y(af, "nextSibling") | |
} | |
if (ac[0].block || ac[0].selector) { | |
function V(ah, ag, aj) { | |
var ai; | |
if (!ac[0].wrapper) { | |
ai = c.getParent(ah, ac[0].block) | |
} | |
if (!ai) { | |
ai = c.getParent(ah.nodeType == 3 ? ah.parentNode: ah, E) | |
} | |
if (ai && ac[0].wrapper) { | |
ai = l(ai, "ul,ol").reverse()[0] || ai | |
} | |
if (!ai) { | |
ai = ah; | |
while (ai[ag] && !E(ai[ag])) { | |
ai = ai[ag]; | |
if (g(ai, "br")) { | |
break | |
} | |
} | |
} | |
return ai || ah | |
} | |
W = V(W, "previousSibling"); | |
af = V(af, "nextSibling"); | |
if (ac[0].block) { | |
if (!E(W)) { | |
W = ad(W, "firstChild", "nextSibling") | |
} | |
if (!E(af)) { | |
af = ad(af, "lastChild", "previousSibling") | |
} | |
} | |
} | |
if (W.nodeType == 1) { | |
Z = r(W); | |
W = W.parentNode | |
} | |
if (af.nodeType == 1) { | |
aa = r(af) + 1; | |
af = af.parentNode | |
} | |
return { | |
startContainer: W, | |
startOffset: Z, | |
endContainer: af, | |
endOffset: aa | |
} | |
} | |
function S(aa, Z, X, U) { | |
var W, | |
V, | |
Y; | |
if (!h(X, aa)) { | |
return Q | |
} | |
if (aa.remove != "all") { | |
M(aa.styles, | |
function(ac, ab) { | |
ac = q(ac, Z); | |
if (typeof(ab) === "number") { | |
ab = ac; | |
U = 0 | |
} | |
if (!U || g(J(U, ab), ac)) { | |
c.setStyle(X, ab, "") | |
} | |
Y = 1 | |
}); | |
if (Y && c.getAttrib(X, "style") == "") { | |
X.removeAttribute("style"); | |
X.removeAttribute("_mce_style") | |
} | |
M(aa.attributes, | |
function(ad, ab) { | |
var ac; | |
ad = q(ad, Z); | |
if (typeof(ab) === "number") { | |
ab = ad; | |
U = 0 | |
} | |
if (!U || g(c.getAttrib(U, ab), ad)) { | |
if (ab == "class") { | |
ad = c.getAttrib(X, ab); | |
if (ad) { | |
ac = ""; | |
M(ad.split(/\s+/), | |
function(ae) { | |
if (/mce\w+/.test(ae)) { | |
ac += (ac ? " ": "") + ae | |
} | |
}); | |
if (ac) { | |
c.setAttrib(X, ab, ac); | |
return | |
} | |
} | |
} | |
if (ab == "class") { | |
X.removeAttribute("className") | |
} | |
if (e.test(ab)) { | |
X.removeAttribute("_mce_" + ab) | |
} | |
X.removeAttribute(ab) | |
} | |
}); | |
M(aa.classes, | |
function(ab) { | |
ab = q(ab, Z); | |
if (!U || c.hasClass(U, ab)) { | |
c.removeClass(X, ab) | |
} | |
}); | |
V = c.getAttribs(X); | |
for (W = 0; W < V.length; W++) { | |
if (V[W].nodeName.indexOf("_") !== 0) { | |
return Q | |
} | |
} | |
} | |
if (aa.remove != "none") { | |
m(X, aa); | |
return A | |
} | |
} | |
function m(W, X) { | |
var U = W.parentNode, | |
V; | |
if (X.block) { | |
if (!k) { | |
function Y(aa, Z, ab) { | |
aa = B(aa, Z, ab); | |
return ! aa || (aa.nodeName == "BR" || E(aa)) | |
} | |
if (E(W) && !E(U)) { | |
if (!Y(W, Q) && !Y(W.firstChild, A, 1)) { | |
W.insertBefore(c.create("br"), W.firstChild) | |
} | |
if (!Y(W, A) && !Y(W.lastChild, Q, 1)) { | |
W.appendChild(c.create("br")) | |
} | |
} | |
} else { | |
if (U == c.getRoot()) { | |
if (!X.list_block || !g(W, X.list_block)) { | |
M(a.grep(W.childNodes), | |
function(Z) { | |
if (d(k, Z.nodeName.toLowerCase())) { | |
if (!V) { | |
V = L(Z, k) | |
} else { | |
V.appendChild(Z) | |
} | |
} else { | |
V = 0 | |
} | |
}) | |
} | |
} | |
} | |
} | |
if (X.selector && X.inline && !g(X.inline, W)) { | |
return | |
} | |
c.remove(W, 1) | |
} | |
function B(V, U, W) { | |
if (V) { | |
U = U ? "nextSibling": "previousSibling"; | |
for (V = W ? V: V[U]; V; V = V[U]) { | |
if (V.nodeType == 1 || !f(V)) { | |
return V | |
} | |
} | |
} | |
} | |
function G(U) { | |
return U && U.nodeType == 1 && U.getAttribute("_mce_type") == "bookmark" | |
} | |
function t(Y, X) { | |
var U, | |
W, | |
V; | |
function aa(ad, ac) { | |
if (ad.nodeName != ac.nodeName) { | |
return Q | |
} | |
function ab(af) { | |
var ag = {}; | |
M(c.getAttribs(af), | |
function(ah) { | |
var ai = ah.nodeName.toLowerCase(); | |
if (ai.indexOf("_") !== 0 && ai !== "style") { | |
ag[ai] = c.getAttrib(af, ai) | |
} | |
}); | |
return ag | |
} | |
function ae(ai, ah) { | |
var ag, | |
af; | |
for (af in ai) { | |
if (ai.hasOwnProperty(af)) { | |
ag = ah[af]; | |
if (ag === o) { | |
return Q | |
} | |
if (ai[af] != ag) { | |
return Q | |
} | |
delete ah[af] | |
} | |
} | |
for (af in ah) { | |
if (ah.hasOwnProperty(af)) { | |
return Q | |
} | |
} | |
return A | |
} | |
if (!ae(ab(ad), ab(ac))) { | |
return Q | |
} | |
if (!ae(c.parseStyle(c.getAttrib(ad, "style")), c.parseStyle(c.getAttrib(ac, "style")))) { | |
return Q | |
} | |
return A | |
} | |
if (Y && X) { | |
function Z(ac, ab) { | |
for (W = ac; W; W = W[ab]) { | |
if (W.nodeType == 3 && !f(W)) { | |
return ac | |
} | |
if (W.nodeType == 1 && !G(W)) { | |
return W | |
} | |
} | |
return ac | |
} | |
Y = Z(Y, "previousSibling"); | |
X = Z(X, "nextSibling"); | |
if (aa(Y, X)) { | |
for (W = Y.nextSibling; W && W != X;) { | |
V = W; | |
W = W.nextSibling; | |
Y.appendChild(V) | |
} | |
c.remove(X); | |
M(a.grep(X.childNodes), | |
function(ab) { | |
Y.appendChild(ab) | |
}); | |
return Y | |
} | |
} | |
return X | |
} | |
function F(U) { | |
return /^(h[1-6]|p|div|pre|address)$/.test(U) | |
} | |
function H(V, Y) { | |
var U, | |
X, | |
W; | |
U = V[Y ? "startContainer": "endContainer"]; | |
X = V[Y ? "startOffset": "endOffset"]; | |
if (U.nodeType == 1) { | |
W = U.childNodes.length - 1; | |
if (!Y && X) { | |
X-- | |
} | |
U = U.childNodes[X > W ? W: X] | |
} | |
return U | |
} | |
function O(Z, V, Y) { | |
var W, | |
U = N[Z], | |
aa = N[Z == "apply" ? "remove": "apply"]; | |
function ab() { | |
return N.apply.length || N.remove.length | |
} | |
function X() { | |
N.apply = []; | |
N.remove = [] | |
} | |
function ac(ad) { | |
M(N.apply.reverse(), | |
function(ae) { | |
R(ae.name, ae.vars, ad) | |
}); | |
M(N.remove.reverse(), | |
function(ae) { | |
z(ae.name, ae.vars, ad) | |
}); | |
c.remove(ad, 1); | |
X() | |
} | |
for (W = U.length - 1; W >= 0; W--) { | |
if (U[W].name == V) { | |
return | |
} | |
} | |
U.push({ | |
name: V, | |
vars: Y | |
}); | |
for (W = aa.length - 1; W >= 0; W--) { | |
if (aa[W].name == V) { | |
aa.splice(W, 1) | |
} | |
} | |
if (ab()) { | |
T.getDoc().execCommand("FontName", false, "mceinline"); | |
M(c.select("font,span"), | |
function(ae) { | |
var ad; | |
if (b(ae)) { | |
ad = p.getBookmark(); | |
ac(ae); | |
p.moveToBookmark(ad); | |
T.nodeChanged() | |
} | |
}); | |
if (!N.isListening && ab()) { | |
N.isListening = true; | |
M("onKeyDown,onKeyUp,onKeyPress,onMouseUp".split(","), | |
function(ad) { | |
T[ad].addToTop(function(ae, af) { | |
if (ab()) { | |
M(c.select("font,span"), | |
function(ai) { | |
var ah, | |
aj, | |
ag; | |
if (b(ai)) { | |
aj = ai.firstChild; | |
ac(ai); | |
ag = c.createRng(); | |
ag.setStart(aj, aj.nodeValue.length); | |
ag.setEnd(aj, aj.nodeValue.length); | |
p.setRng(ag); | |
ae.nodeChanged() | |
} | |
}); | |
if (af.type == "keyup" || af.type == "mouseup") { | |
X() | |
} | |
} | |
}) | |
}) | |
} | |
} | |
} | |
} | |
})(tinymce); | |
tinymce.onAddEditor.add(function(e, a) { | |
var d, | |
h, | |
g, | |
c = a.settings; | |
if (c.inline_styles) { | |
h = e.explode(c.font_size_style_values); | |
function b(j, i) { | |
g.replace(g.create("span", { | |
style: i | |
}), j, 1) | |
} | |
d = { | |
font: function(j, i) { | |
b(i, { | |
backgroundColor: i.style.backgroundColor, | |
color: i.color, | |
fontFamily: i.face, | |
fontSize: h[parseInt(i.size) - 1] | |
}) | |
}, | |
u: function(j, i) { | |
b(i, { | |
textDecoration: "underline" | |
}) | |
}, | |
strike: function(j, i) { | |
b(i, { | |
textDecoration: "line-through" | |
}) | |
} | |
}; | |
function f(i, j) { | |
g = i.dom; | |
if (c.convert_fonts_to_spans) { | |
e.each(g.select("font,u,strike", j.node), | |
function(k) { | |
d[k.nodeName.toLowerCase()](a.dom, k) | |
}) | |
} | |
} | |
a.onPreProcess.add(f); | |
a.onInit.add(function() { | |
a.selection.onSetContent.add(f) | |
}) | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment