(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 = {
		"&" : "&amp;",
		'"' : "&quot;",
		"<" : "&lt;",
		">" : "&gt;"
	}, 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">&nbsp;</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(/&apos;/g, "&#39;");
								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,
																				"&#45;&#45;")
																+ "--></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, "&gt;")
							}
							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 "&lt;";
				case ">":
					return "&gt;";
				case "&":
					return "&amp;";
				case '"':
					return "&quot;"
				}
				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 = "&nbsp;";
															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>&#160;</p>"
															: "<p$1>&nbsp;</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>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/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[^>]*>(&nbsp;|&#160;|\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|&#160;|&nbsp;)</"
									+ 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()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%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 ? "&nbsp;" : "<br />";
									return r[0]
								} else {
									y.innerHTML = b ? "&nbsp;" : "<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)
		})
	}
});