X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/ff81ee6e8304a1982a3ec4f5b134764a29d502cf..refs/tags/wordpress-2.7.1:/wp-includes/js/tinymce/tiny_mce.js
diff --git a/wp-includes/js/tinymce/tiny_mce.js b/wp-includes/js/tinymce/tiny_mce.js
index 3f6c6bf3..55aba6e3 100644
--- a/wp-includes/js/tinymce/tiny_mce.js
+++ b/wp-includes/js/tinymce/tiny_mce.js
@@ -1,6081 +1 @@
-/**
- * $RCSfile: tiny_mce_src.js,v $
- * $Revision: 1.281 $
- * $Date: 2005/12/02 08:12:07 $
- *
- * @author Moxiecode
- * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
- */
-
-function TinyMCE() {
- this.majorVersion = "2";
- this.minorVersion = "0";
- this.releaseDate = "2005-12-01";
-
- this.instances = new Array();
- this.stickyClassesLookup = new Array();
- this.windowArgs = new Array();
- this.loadedFiles = new Array();
- this.configs = new Array();
- this.currentConfig = 0;
- this.eventHandlers = new Array();
-
- // Browser check
- var ua = navigator.userAgent;
- this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
- this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
- this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
- this.isGecko = ua.indexOf('Gecko') != -1;
- this.isSafari = ua.indexOf('Safari') != -1;
- this.isOpera = ua.indexOf('Opera') != -1;
- this.isMac = ua.indexOf('Mac') != -1;
- this.isNS7 = ua.indexOf('Netscape/7') != -1;
- this.isNS71 = ua.indexOf('Netscape/7.1') != -1;
- this.dialogCounter = 0;
-
- // Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those
- if (this.isOpera) {
- this.isMSIE = true;
- this.isGecko = false;
- this.isSafari = false;
- }
-
- // TinyMCE editor id instance counter
- this.idCounter = 0;
-};
-
-TinyMCE.prototype.defParam = function(key, def_val) {
- this.settings[key] = tinyMCE.getParam(key, def_val);
-};
-
-TinyMCE.prototype.init = function(settings) {
- var theme;
-
- this.settings = settings;
-
- // Check if valid browser has execcommand support
- if (typeof(document.execCommand) == 'undefined')
- return;
-
- // Get script base path
- if (!tinyMCE.baseURL) {
- var elements = document.getElementsByTagName('script');
-
- for (var i=0; i');
- this.defParam("font_size_classes", '');
- this.defParam("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large');
- this.defParam("event_elements", 'a,img');
- this.defParam("convert_urls", true);
- this.defParam("table_inline_editing", false);
- this.defParam("object_resizing", true);
-
- // Browser check IE
- if (this.isMSIE && this.settings['browsers'].indexOf('msie') == -1)
- return;
-
- // Browser check Gecko
- if (this.isGecko && this.settings['browsers'].indexOf('gecko') == -1)
- return;
-
- // Browser check Safari
- if (this.isSafari && this.settings['browsers'].indexOf('safari') == -1)
- return;
-
- // Browser check Opera
- if (this.isOpera && this.settings['browsers'].indexOf('opera') == -1)
- return;
-
- // If not super absolute make it so
- var baseHREF = tinyMCE.settings['document_base_url'];
- var h = document.location.href;
- var p = h.indexOf('://');
- if (p > 0 && document.location.protocol != "file:") {
- p = h.indexOf('/', p + 3);
- h = h.substring(0, p);
-
- if (baseHREF.indexOf('://') == -1)
- baseHREF = h + baseHREF;
-
- tinyMCE.settings['document_base_url'] = baseHREF;
- tinyMCE.settings['document_base_prefix'] = h;
- }
-
- // Trim away query part
- if (baseHREF.indexOf('?') != -1)
- baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
-
- this.settings['base_href'] = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
-
- theme = this.settings['theme'];
- this.blockRegExp = new RegExp("^(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|blockquote|center|dl|dir|fieldset|form|noscript|noframes|menu|isindex)$", "i");
- this.posKeyCodes = new Array(13,45,36,35,33,34,37,38,39,40);
- this.uniqueURL = 'http://tinymce.moxiecode.cp/mce_temp_url'; // Make unique URL non real URL
- this.uniqueTag = 'TMP
';
-
- // Theme url
- this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
-
- if (!tinyMCE.isMSIE)
- this.settings['force_br_newlines'] = false;
-
- if (tinyMCE.getParam("content_css", false)) {
- var cssPath = tinyMCE.getParam("content_css", "");
-
- // Is relative
- if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
- this.settings['content_css'] = this.documentBasePath + "/" + cssPath;
- else
- this.settings['content_css'] = cssPath;
- } else
- this.settings['content_css'] = '';
-
- if (tinyMCE.getParam("popups_css", false)) {
- var cssPath = tinyMCE.getParam("popups_css", "");
-
- // Is relative
- if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
- this.settings['popups_css'] = this.documentBasePath + "/" + cssPath;
- else
- this.settings['popups_css'] = cssPath;
- } else
- this.settings['popups_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";
-
- if (tinyMCE.getParam("editor_css", false)) {
- var cssPath = tinyMCE.getParam("editor_css", "");
-
- // Is relative
- if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
- this.settings['editor_css'] = this.documentBasePath + "/" + cssPath;
- else
- this.settings['editor_css'] = cssPath;
- } else
- this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
-
- if (tinyMCE.settings['debug']) {
- var msg = "Debug: \n";
-
- msg += "baseURL: " + this.baseURL + "\n";
- msg += "documentBasePath: " + this.documentBasePath + "\n";
- msg += "content_css: " + this.settings['content_css'] + "\n";
- msg += "popups_css: " + this.settings['popups_css'] + "\n";
- msg += "editor_css: " + this.settings['editor_css'] + "\n";
-
- alert(msg);
- }
-
- // Init HTML cleanup
- this._initCleanup();
-
- // Only do this once
- if (this.configs.length == 0) {
- // Is Safari enabled
- if (this.isSafari && this.getParam('safari_warning', true))
- alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.\nYou can disable this message by setting: safari_warning option to false");
-
- tinyMCE.addEvent(window, "load", TinyMCE.prototype.onLoad);
-
- if (tinyMCE.isMSIE) {
- if (tinyMCE.settings['add_unload_trigger']) {
- tinyMCE.addEvent(window, "unload", TinyMCE.prototype.unloadHandler);
- tinyMCE.addEvent(window.document, "beforeunload", TinyMCE.prototype.unloadHandler);
- }
- } else {
- if (tinyMCE.settings['add_unload_trigger'])
- tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);});
- }
- }
-
- this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings['theme'] + '/editor_template' + tinyMCE.srcMode + '.js');
- this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings['language'] + '.js');
- this.loadCSS(this.settings['editor_css']);
-
- // Add plugins
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- if (this.settings['plugins'] != '') {
- for (var i=0; i');
-
- this.loadedFiles[this.loadedFiles.length] = url;
-};
-
-TinyMCE.prototype.loadCSS = function(url) {
- for (var i=0; i');
-
- this.loadedFiles[this.loadedFiles.length] = url;
-};
-
-TinyMCE.prototype.importCSS = function(doc, css_file) {
- if (css_file == '')
- return;
-
- if (typeof(doc.createStyleSheet) == "undefined") {
- var elm = doc.createElement("link");
-
- elm.rel = "stylesheet";
- elm.href = css_file;
-
- if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0)
- headArr[0].appendChild(elm);
- } else
- var styleSheet = doc.createStyleSheet(css_file);
-};
-
-TinyMCE.prototype.confirmAdd = function(e, settings) {
- var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
- var elementId = elm.name ? elm.name : elm.id;
-
- tinyMCE.settings = settings;
-
- if (!elm.getAttribute('mce_noask') && confirm(tinyMCELang['lang_edit_confirm']))
- tinyMCE.addMCEControl(elm, elementId);
-
- elm.setAttribute('mce_noask', 'true');
-};
-
-TinyMCE.prototype.updateContent = function(form_element_name) {
- // Find MCE instance linked to given form element and copy it's value
- var formElement = document.getElementById(form_element_name);
- for (var n in tinyMCE.instances) {
- var inst = tinyMCE.instances[n];
- if (!tinyMCE.isInstance(inst))
- continue;
-
- inst.switchSettings();
-
- if (inst.formElement == formElement) {
- var doc = inst.getDoc();
-
- tinyMCE._setHTML(doc, inst.formElement.value);
-
- if (!tinyMCE.isMSIE)
- doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid);
- }
- }
-};
-
-TinyMCE.prototype.addMCEControl = function(replace_element, form_element_name, target_document) {
- var id = "mce_editor_" + tinyMCE.idCounter++;
- var inst = new TinyMCEControl(tinyMCE.settings);
-
- inst.editorId = id;
- this.instances[id] = inst;
-
- inst.onAdd(replace_element, form_element_name, target_document);
-};
-
-TinyMCE.prototype.triggerSave = function(skip_cleanup, skip_callback) {
- // Cleanup and set all form fields
- for (var n in tinyMCE.instances) {
- var inst = tinyMCE.instances[n];
- if (!tinyMCE.isInstance(inst))
- continue;
-
- inst.switchSettings();
-
- tinyMCE.settings['preformatted'] = false;
-
- // Default to false
- if (typeof(skip_cleanup) == "undefined")
- skip_cleanup = false;
-
- // Default to false
- if (typeof(skip_callback) == "undefined")
- skip_callback = false;
-
- tinyMCE._setHTML(inst.getDoc(), inst.getBody().innerHTML);
-
- // Remove visual aids when cleanup is disabled
- if (inst.settings['cleanup'] == false) {
- tinyMCE.handleVisualAid(inst.getBody(), true, false, inst);
- tinyMCE._setEventsEnabled(inst.getBody(), true);
- }
-
- tinyMCE._customCleanup(inst, "submit_content_dom", inst.contentWindow.document.body);
- var htm = skip_cleanup ? inst.getBody().innerHTML : tinyMCE._cleanupHTML(inst, inst.getDoc(), this.settings, inst.getBody(), this.visualAid, true);
- htm = tinyMCE._customCleanup(inst, "submit_content", htm);
-
- if (tinyMCE.settings["encoding"] == "xml" || tinyMCE.settings["encoding"] == "html")
- htm = tinyMCE.convertStringToXML(htm);
-
- if (!skip_callback && tinyMCE.settings['save_callback'] != "")
- var content = eval(tinyMCE.settings['save_callback'] + "(inst.formTargetElementId,htm,inst.getBody());");
-
- // Use callback content if available
- if ((typeof(content) != "undefined") && content != null)
- htm = content;
-
- // Replace some weird entities (Bug: #1056343)
- htm = tinyMCE.regexpReplace(htm, "(", "(", "gi");
- htm = tinyMCE.regexpReplace(htm, ")", ")", "gi");
- htm = tinyMCE.regexpReplace(htm, ";", ";", "gi");
- htm = tinyMCE.regexpReplace(htm, """, """, "gi");
- htm = tinyMCE.regexpReplace(htm, "^", "^", "gi");
-
- if (inst.formElement)
- inst.formElement.value = htm;
- }
-};
-
-TinyMCE.prototype._setEventsEnabled = function(node, state) {
- var events = new Array('onfocus','onblur','onclick','ondblclick',
- 'onmousedown','onmouseup','onmouseover','onmousemove',
- 'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup');
-
- var evs = tinyMCE.settings['event_elements'].split(',');
- for (var y=0; y", "gi");
- content = tinyMCE.regexpReplace(content, "\r", "
", "gi");
- content = tinyMCE.regexpReplace(content, "\n", "
", "gi");
- }
-
- // Open closed anchors
-// content = content.replace(new RegExp('', 'gi'), '');
-
- // Call custom cleanup code
- content = tinyMCE.storeAwayURLs(content);
- content = tinyMCE._customCleanup(inst, "insert_to_editor", content);
-
- if (tinyMCE.isMSIE) {
- // Ugly!!!
- window.setInterval('try{tinyMCE.getCSSClasses(document.frames["' + editor_id + '"].document, "' + editor_id + '");}catch(e){}', 500);
-
- if (tinyMCE.settings["force_br_newlines"])
- document.frames[editor_id].document.styleSheets[0].addRule("p", "margin: 0px;");
-
- var body = document.frames[editor_id].document.body;
-
- tinyMCE.addEvent(body, "beforepaste", TinyMCE.prototype.eventPatch);
- tinyMCE.addEvent(body, "beforecut", TinyMCE.prototype.eventPatch);
-
- body.editorId = editor_id;
- }
-
- content = tinyMCE.cleanupHTMLCode(content);
-
- // Fix for bug #958637
- if (!tinyMCE.isMSIE) {
- var contentElement = inst.getDoc().createElement("body");
- var doc = inst.getDoc();
-
- contentElement.innerHTML = content;
-
- // Remove weridness!
- if (tinyMCE.isGecko && tinyMCE.settings['remove_lt_gt'])
- content = content.replace(new RegExp('<>', 'g'), "");
-
- if (tinyMCE.settings['cleanup_on_startup'])
- tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));
- else {
- // Convert all strong/em to b/i
- content = tinyMCE.regexpReplace(content, "", "", "gi");
- content = tinyMCE.regexpReplace(content, "", "", "gi");
- content = tinyMCE.regexpReplace(content, "", "", "gi");
- tinyMCE.setInnerHTML(inst.getBody(), content);
- }
-
- inst.convertAllRelativeURLs();
- } else {
- if (tinyMCE.settings['cleanup_on_startup']) {
- tinyMCE._setHTML(inst.getDoc(), content);
-
- // Produces permission denied error in MSIE 5.5
- eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}');
- } else
- tinyMCE._setHTML(inst.getDoc(), content);
- }
-
- // Fix for bug #957681
- //inst.getDoc().designMode = inst.getDoc().designMode;
-
- // Setup element references
- var parentElm = document.getElementById(inst.editorId + '_parent');
- if (parentElm.lastChild.nodeName == "INPUT")
- inst.formElement = tinyMCE.isGecko ? parentElm.firstChild : parentElm.lastChild;
- else
- inst.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;
-
- tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual'], inst);
- tinyMCE.executeCallback('setupcontent_callback', '_setupContent', 0, editor_id, inst.getBody(), inst.getDoc());
-
- // Re-add design mode on mozilla
- if (!tinyMCE.isMSIE)
- TinyMCE.prototype.addEventHandlers(editor_id);
-
- // Add blur handler
- if (tinyMCE.isMSIE)
- tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE.prototype.eventPatch);
-
- // Trigger node change, this call locks buttons for tables and so forth
- tinyMCE.selectedInstance = inst;
- tinyMCE.selectedElement = inst.contentWindow.document.body;
-
- if (!inst.isHidden())
- tinyMCE.triggerNodeChange(false, true);
-
- // Call custom DOM cleanup
- tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());
- tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());
- tinyMCE._setEventsEnabled(inst.getBody(), false);
- tinyMCE.cleanupAnchors(inst.getDoc());
-
- if (tinyMCE.getParam("convert_fonts_to_spans"))
- tinyMCE.convertSpansToFonts(inst.getDoc());
-
- inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
- inst.undoLevels[inst.undoLevels.length] = inst.startContent;
-
- tinyMCE.operaOpacityCounter = -1;
-};
-
-TinyMCE.prototype.cleanupHTMLCode = function(s) {
- s = s.replace(//gi, '
');
- s = s.replace(/\s*<\/p>/gi, '
');
-
- // Open closed tags like to
-// tinyMCE.debug("f:" + s);
- s = s.replace(/<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\|>]*?)\/>/gi, '<$1$2$3>$1$2>');
-// tinyMCE.debug("e:" + s);
-
- // Remove trailing space to
- s = s.replace(new RegExp('\\s+>', 'gi'), '>');
-
- // Close tags to
- s = s.replace(/<(img|br|hr)(.*?)><\/(img|br|hr)>/gi, '<$1$2 />');
-
- // Weird MSIE bug,
breaks runtime?
- if (tinyMCE.isMSIE)
- s = s.replace(/
<\/p>/gi, "
");
-
- // Convert relative anchors to absolute URLs ex: #something to file.htm#something
- s = s.replace(new RegExp('(href=\"?)(\\s*?#)', 'gi'), '$1' + tinyMCE.settings['document_base_url'] + "#");
-
- return s;
-};
-
-TinyMCE.prototype.storeAwayURLs = function(s) {
- // Remove all mce_src, mce_href and replace them with new ones
- s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
- s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');
- s = s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'src="$1" mce_src="$1"');
- s = s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'href="$1" mce_href="$1"');
-
- return s;
-};
-
-TinyMCE.prototype.cancelEvent = function(e) {
- if (tinyMCE.isMSIE) {
- e.returnValue = false;
- e.cancelBubble = true;
- } else
- e.preventDefault();
-};
-
-TinyMCE.prototype.removeTinyMCEFormElements = function(form_obj) {
- // Check if form is valid
- if (typeof(form_obj) == "undefined" || form_obj == null)
- return;
-
- // If not a form, find the form
- if (form_obj.nodeName != "FORM") {
- if (form_obj.form)
- form_obj = form_obj.form;
- else
- form_obj = tinyMCE.getParentElement(form_obj, "form");
- }
-
- // Still nothing
- if (form_obj == null)
- return;
-
- // Disable all UI form elements that TinyMCE created
- for (var i=0; i');
- }
- }
-
- // Return key pressed
- if (tinyMCE.isMSIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13) {
- if (e.target.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
-
- if (tinyMCE.selectedInstance) {
- var sel = tinyMCE.selectedInstance.getDoc().selection;
- var rng = sel.createRange();
-
- if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
- return false;
-
- // Cancel event
- e.returnValue = false;
- e.cancelBubble = true;
-
- // Insert BR element
- rng.pasteHTML("
");
- rng.collapse(false);
- rng.select();
-
- tinyMCE.execCommand("mceAddUndoLevel");
- tinyMCE.triggerNodeChange(false);
- return false;
- }
- }
-
- // Backspace or delete
- if (e.keyCode == 8 || e.keyCode == 46) {
- tinyMCE.selectedElement = e.target;
- tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");
- tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");
- tinyMCE.triggerNodeChange(false);
- }
-
- return false;
- break;
-
- case "keyup":
- case "keydown":
- if (e.target.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
- else
- return;
-
- if (tinyMCE.selectedInstance)
- tinyMCE.selectedInstance.switchSettings();
-
- var inst = tinyMCE.selectedInstance;
-
- // Handle backspace
- if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
- // Insert P element instead of BR
- if (tinyMCE.selectedInstance._handleBackSpace(e.type)) {
- // Cancel event
- tinyMCE.execCommand("mceAddUndoLevel");
- e.preventDefault();
- return false;
- }
- }
-
- tinyMCE.selectedElement = null;
- tinyMCE.selectedNode = null;
- var elm = tinyMCE.selectedInstance.getFocusElement();
- tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");
- tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");
- tinyMCE.selectedElement = elm;
-
- // Update visualaids on tabs
- if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)
- tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
-
- // Fix empty elements on return/enter, check where enter occured
- if (tinyMCE.isMSIE && e.type == "keydown" && e.keyCode == 13)
- tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
-
- // Fix empty elements on return/enter
- if (tinyMCE.isMSIE && e.type == "keyup" && e.keyCode == 13) {
- var elm = tinyMCE.enterKeyElement;
- if (elm) {
- var re = new RegExp('^HR|IMG|BR$','g'); // Skip these
- var dre = new RegExp('^H[1-6]$','g'); // Add double on these
-
- if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {
- if (dre.test(elm.nodeName))
- elm.innerHTML = " ";
- else
- elm.innerHTML = " ";
- }
- }
- }
-
- // Check if it's a position key
- var keys = tinyMCE.posKeyCodes;
- var posKey = false;
- for (var i=0; i -1)
- suffix = '?rnd=' + this.operaOpacityCounter++;
-
- element.src = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/images/opacity.png" + suffix;
- element.style.backgroundImage = "url('" + element.mceOldSrc + "')";
- } else {
- if (element.mceOldSrc) {
- element.src = element.mceOldSrc;
- element.parentNode.style.backgroundImage = "";
- element.mceOldSrc = null;
- }
- }
- }
- }
-};
-
-TinyMCE.prototype.restoreClass = function(element) {
- if (element != null && element.oldClassName && !element.classLock) {
- element.className = element.oldClassName;
- element.oldClassName = null;
- }
-};
-
-TinyMCE.prototype.setClassLock = function(element, lock_state) {
- if (element != null)
- element.classLock = lock_state;
-};
-
-TinyMCE.prototype.addEvent = function(obj, name, handler) {
- if (tinyMCE.isMSIE) {
- obj.attachEvent("on" + name, handler);
- } else
- obj.addEventListener(name, handler, false);
-};
-
-TinyMCE.prototype.submitPatch = function() {
- tinyMCE.removeTinyMCEFormElements(this);
- tinyMCE.triggerSave();
- this.mceOldSubmit();
- tinyMCE.isNotDirty = true;
-};
-
-TinyMCE.prototype.onLoad = function() {
- for (var c=0; c 0)
- return;
-
- if (val.indexOf('%') == -1)
- val += 'px';
- break;
-
- case "vspace":
- case "hspace":
- elm.style.marginTop = val + "px";
- elm.style.marginBottom = val + "px";
- elm.removeAttribute(attrib);
- return;
-
- case "align":
- if (elm.nodeName == "IMG") {
- if (tinyMCE.isMSIE)
- elm.style.styleFloat = val;
- else
- elm.style.cssFloat = val;
- } else
- elm.style.textAlign = val;
-
- elm.removeAttribute(attrib);
- return;
- }
-
- if (val != '') {
- eval('elm.style.' + style + ' = val;');
- elm.removeAttribute(attrib);
- }
- }
- } else {
- if (style == '')
- return;
-
- var val = eval('elm.style.' + style) == '' ? tinyMCE.getAttrib(elm, attrib) : eval('elm.style.' + style);
- val = val == null ? '' : '' + val;
-
- switch (attrib) {
- // Always move background to style
- case "background":
- if (val.indexOf('url') == -1 && val != '')
- val = "url('" + val + "');";
-
- if (val != '') {
- elm.style.backgroundImage = val;
- elm.removeAttribute(attrib);
- }
- return;
-
- case "border":
- case "width":
- case "height":
- val = val.replace('px', '');
- break;
-
- case "align":
- if (tinyMCE.getAttrib(elm, 'align') == '') {
- if (elm.nodeName == "IMG") {
- if (tinyMCE.isMSIE && elm.style.styleFloat != '') {
- val = elm.style.styleFloat;
- style = 'styleFloat';
- } else if (tinyMCE.isGecko && elm.style.cssFloat != '') {
- val = elm.style.cssFloat;
- style = 'cssFloat';
- }
- }
- }
- break;
- }
-
- if (val != '') {
- elm.removeAttribute(attrib);
- elm.setAttribute(attrib, val);
- eval('elm.style.' + style + ' = "";');
- }
- }
-};
-
-TinyMCE.prototype._cleanupAttribute = function(valid_attributes, element_name, attribute_node, element_node) {
- var attribName = attribute_node.nodeName.toLowerCase();
- var attribValue = attribute_node.nodeValue;
- var attribMustBeValue = null;
- var verified = false;
-
- // Mozilla attibute, remove them
- if (attribName.indexOf('moz_') != -1)
- return null;
-
- if (!tinyMCE.cleanup_on_save && (attribName == "mce_href" || attribName == "mce_src"))
- return {name : attribName, value : attribValue};
-
- // Verify attrib
- if (tinyMCE.cleanup_verify_html && !verified) {
- for (var i=1; i 1)
- val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";
- }
-
- // Force HEX colors
- if (tinyMCE.getParam("force_hex_style_colors"))
- val = tinyMCE.convertRGBToHex(val, true);
-
- if (val != "url('')")
- str += key.toLowerCase() + ": " + val + "; ";
- }
- }
-
- if (new RegExp('; $').test(str))
- str = str.substring(0, str.length - 2);
-
- return str;
-};
-
-TinyMCE.prototype.convertRGBToHex = function(s, k) {
- if (s.toLowerCase().indexOf('rgb') != -1) {
- var re = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");
- var rgb = s.replace(re, "$1,$2,$3,$4,$5").split(',');
- if (rgb.length == 5) {
- r = parseInt(rgb[1]).toString(16);
- g = parseInt(rgb[2]).toString(16);
- b = parseInt(rgb[3]).toString(16);
-
- r = r.length == 1 ? '0' + r : r;
- g = g.length == 1 ? '0' + g : g;
- b = b.length == 1 ? '0' + b : b;
-
- s = "#" + r + g + b;
-
- if (k)
- s = rgb[0] + s + rgb[4];
- }
- }
-
- return s;
-};
-
-TinyMCE.prototype.convertHexToRGB = function(s) {
- if (s.indexOf('#') != -1) {
- s = s.replace(new RegExp('[^0-9A-F]', 'gi'), '');
- return "rgb(" + parseInt(s.substring(0, 2), 16) + "," + parseInt(s.substring(2, 4), 16) + "," + parseInt(s.substring(4, 6), 16) + ")";
- }
-
- return s;
-};
-
-TinyMCE.prototype._verifyClass = function(node) {
- // Sometimes the class gets set to null, weird Gecko bug?
- if (tinyMCE.isGecko) {
- var className = node.getAttribute('class');
- if (!className)
- return false;
- }
-
- // Trim CSS class
- if (tinyMCE.isMSIE)
- var className = node.getAttribute('className');
-
- if (tinyMCE.cleanup_verify_css_classes && tinyMCE.cleanup_on_save) {
- var csses = tinyMCE.getCSSClasses();
- nonDefinedCSS = true;
- for (var c=0; c' + output;
- }
- }
-
- // Remove deprecated attributes
- var re = new RegExp("^(TABLE|TD|TR)$");
- if (re.test(node.nodeName)) {
- // Move attrib to style
- if ((node.nodeName != "TABLE" || tinyMCE.cleanup_inline_styles) && (width = tinyMCE.getAttrib(node, "width")) != '') {
- node.style.width = width.indexOf('%') != -1 ? width : width.replace(/[^0-9]/gi, '') + "px";
- node.removeAttribute("width");
- }
-
- // Is table and not inline
- if ((node.nodeName == "TABLE" && !tinyMCE.cleanup_inline_styles) && node.style.width != '') {
- tinyMCE.setAttrib(node, "width", node.style.width.replace('px',''));
- node.style.width = '';
- }
-
- // Move attrib to style
- if ((height = tinyMCE.getAttrib(node, "height")) != '') {
- height = "" + height; // Force string
- node.style.height = height.indexOf('%') != -1 ? height : height.replace(/[^0-9]/gi, '') + "px";
- node.removeAttribute("height");
- }
- }
-
- // Handle inline/outline styles
- if (tinyMCE.cleanup_inline_styles) {
- var re = new RegExp("^(TABLE|TD|TR|IMG|HR)$");
- if (re.test(node.nodeName) && tinyMCE.getAttrib(node, "class").indexOf('mceItem') == -1) {
- tinyMCE._moveStyle(node, 'width', 'width');
- tinyMCE._moveStyle(node, 'height', 'height');
- tinyMCE._moveStyle(node, 'borderWidth', 'border');
- tinyMCE._moveStyle(node, '', 'vspace');
- tinyMCE._moveStyle(node, '', 'hspace');
- tinyMCE._moveStyle(node, 'textAlign', 'align');
- tinyMCE._moveStyle(node, 'backgroundColor', 'bgColor');
- tinyMCE._moveStyle(node, 'borderColor', 'borderColor');
- tinyMCE._moveStyle(node, 'backgroundImage', 'background');
-
- // Refresh element in old MSIE
- if (tinyMCE.isMSIE5)
- node.outerHTML = node.outerHTML;
- } else if (tinyMCE.isBlockElement(node))
- tinyMCE._moveStyle(node, 'textAlign', 'align');
-
- if (node.nodeName == "FONT")
- tinyMCE._moveStyle(node, 'color', 'color');
- }
-
- // Set attrib data
- if (elementValidAttribs) {
- for (var a=1; a" + node.innerHTML + "";
-
- // Remove empty tables
- if (elementName == "table" && !node.hasChildNodes())
- return "";
-
- // Handle element attributes
- if (node.attributes.length > 0) {
- var lastAttrib = "";
-
- for (var i=0; i" + this.convertStringToXML(String.fromCharCode(160)) + "" + elementName + ">";
-
- // Is MSIE script element
- if (tinyMCE.isMSIE && elementName == "script")
- return "<" + elementName + elementAttribs + ">" + node.text + "" + elementName + ">";
-
- // Clean up children
- if (node.hasChildNodes()) {
- // If not empty span
- if (!(elementName == "span" && elementAttribs == "" && tinyMCE.getParam("trim_span_elements"))) {
- // Force BR
- if (elementName == "p" && tinyMCE.cleanup_force_br_newlines)
- output += "";
- else
- output += "<" + elementName + elementAttribs + ">";
- }
-
- for (var i=0; i
";
- else
- output += "" + elementName + ">";
- }
- } else {
- if (!nonEmptyTag) {
- if (openTag)
- output += "<" + elementName + elementAttribs + ">" + elementName + ">";
- else
- output += "<" + elementName + elementAttribs + " />";
- }
- }
-
- return output;
-
- case 3: // Text
- // Do not convert script elements
- if (node.parentNode.nodeName == "SCRIPT" || node.parentNode.nodeName == "NOSCRIPT" || node.parentNode.nodeName == "STYLE")
- return node.nodeValue;
-
- return this.convertStringToXML(node.nodeValue);
-
- case 8: // Comment
- return "";
-
- default: // Unknown
- return "[UNKNOWN NODETYPE " + node.nodeType + "]";
- }
-};
-
-TinyMCE.prototype.convertStringToXML = function(html_data) {
- var output = "";
-
- for (var i=0; i 127)
- output += '' + chr + ";";
- else
- output += String.fromCharCode(chr);
-
- continue;
- }
-
- // Raw entities
- if (tinyMCE.settings['entity_encoding'] == "raw") {
- output += String.fromCharCode(chr);
- continue;
- }
-
- // Named entities
- if (typeof(tinyMCE.settings['cleanup_entities']["c" + chr]) != 'undefined' && tinyMCE.settings['cleanup_entities']["c" + chr] != '')
- output += '&' + tinyMCE.settings['cleanup_entities']["c" + chr] + ';';
- else
- output += '' + String.fromCharCode(chr);
- }
-
- return output;
-};
-
-TinyMCE.prototype._getCleanupElementName = function(chunk) {
- var pos;
-
- if (chunk.charAt(0) == '+')
- chunk = chunk.substring(1);
-
- if (chunk.charAt(0) == '-')
- chunk = chunk.substring(1);
-
- if ((pos = chunk.indexOf('/')) != -1)
- chunk = chunk.substring(0, pos);
-
- if ((pos = chunk.indexOf('[')) != -1)
- chunk = chunk.substring(0, pos);
-
- return chunk;
-};
-
-TinyMCE.prototype._initCleanup = function() {
- // Parse valid elements and attributes
- var validElements = tinyMCE.settings["valid_elements"];
- validElements = validElements.split(',');
-
- // Handle extended valid elements
- var extendedValidElements = tinyMCE.settings["extended_valid_elements"];
- extendedValidElements = extendedValidElements.split(',');
- for (var i=0; i/gi, '>');
-
- return html;
- }
-
- if (on_save && tinyMCE.getParam("convert_fonts_to_spans"))
- tinyMCE.convertFontsToSpans(doc);
-
- // Call custom cleanup code
- tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom", doc.body);
-
- // Move bgcolor to style
- var n = doc.getElementsByTagName("font");
- for (var i=0; i[ \n\r]*[ \n\r]*', '
', 'gi'));
- tinyMCE.setInnerHTML(element, tinyMCE.regexpReplace(element.innerHTML, '', '', 'gi'));
- }
-
- var html = this.cleanupNode(element);
-
- if (tinyMCE.settings['debug'])
- tinyMCE.debug("Cleanup process executed in: " + (new Date().getTime()-startTime) + " ms.");
-
- // Remove pesky HR paragraphs and other crap
- html = tinyMCE.regexpReplace(html, '
', '
');
- html = tinyMCE.regexpReplace(html, '
', '
');
- html = tinyMCE.regexpReplace(html, '\\s* \\s* | ', ' | ');
- html = tinyMCE.regexpReplace(html, '\\s*
\\s*
', '
');
- html = tinyMCE.regexpReplace(html, '\\s* \\s*
\\s* \\s*
', '
');
- html = tinyMCE.regexpReplace(html, '\\s* \\s*
\\s*
', '
');
- html = tinyMCE.regexpReplace(html, '\\s*
\\s* \\s*
', '
');
-
- // Remove empty anchors
- html = html.replace(new RegExp('(.*?)', 'gi'), '$1');
-
- // Remove some mozilla crap
- if (!tinyMCE.isMSIE)
- html = html.replace(new RegExp('', 'g'), "");
-
- if (tinyMCE.settings['remove_linebreaks'])
- html = html.replace(new RegExp('\r|\n', 'g'), ' ');
-
- if (tinyMCE.getParam('apply_source_formatting')) {
- html = html.replace(new RegExp('<(p|div)([^>]*)>', 'g'), "\n<$1$2>\n");
- html = html.replace(new RegExp('<\/(p|div)([^>]*)>', 'g'), "\n$1$2>\n");
- html = html.replace(new RegExp('
', 'g'), "
\n");
- }
-
- if (tinyMCE.settings['force_br_newlines']) {
- var re = new RegExp('
', 'g');
- html = html.replace(re, "
");
- }
-
- if (tinyMCE.isGecko && tinyMCE.settings['remove_lt_gt']) {
- // Remove weridness!
- var re = new RegExp('<>', 'g');
- html = html.replace(re, "");
- }
-
- // Call custom cleanup code
- html = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", html);
-
- // Emtpy node, return empty
- var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "").toLowerCase();
- if (chk == "
" || chk == "
" || chk == "
" || chk == "
" || chk == "")
- html = "";
-
- if (tinyMCE.settings["preformatted"])
- return "" + html + "
";
-
- return html;
-};
-
-TinyMCE.prototype.insertLink = function(href, target, title, onclick, style_class) {
- tinyMCE.execCommand('mceBeginUndoLevel');
-
- if (this.selectedInstance && this.selectedElement && this.selectedElement.nodeName.toLowerCase() == "img") {
- var doc = this.selectedInstance.getDoc();
- var linkElement = tinyMCE.getParentElement(this.selectedElement, "a");
- var newLink = false;
-
- if (!linkElement) {
- linkElement = doc.createElement("a");
- newLink = true;
- }
-
- var mhref = href;
- var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);");
- mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
-
- tinyMCE.setAttrib(linkElement, 'href', thref);
- tinyMCE.setAttrib(linkElement, 'mce_href', mhref);
- tinyMCE.setAttrib(linkElement, 'target', target);
- tinyMCE.setAttrib(linkElement, 'title', title);
- tinyMCE.setAttrib(linkElement, 'onclick', onclick);
- tinyMCE.setAttrib(linkElement, 'class', style_class);
-
- if (newLink) {
- linkElement.appendChild(this.selectedElement.cloneNode(true));
- this.selectedElement.parentNode.replaceChild(linkElement, this.selectedElement);
- }
-
- return;
- }
-
- if (!this.linkElement && this.selectedInstance) {
- if (tinyMCE.isSafari) {
- tinyMCE.execCommand("mceInsertContent", false, '' + this.selectedInstance.getSelectedHTML() + '');
- } else
- this.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL);
-
- tinyMCE.linkElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
-
- var elementArray = this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
-
- for (var i=0; i';
-
- tinyMCE.execCommand("mceInsertContent", false, html);
- } else {
- if (!this.imgElement && this.selectedInstance) {
- if (tinyMCE.isSafari)
- tinyMCE.execCommand("mceInsertContent", false, '');
- else
- this.selectedInstance.contentDocument.execCommand("insertimage", false, tinyMCE.uniqueURL);
-
- tinyMCE.imgElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "img", "src", tinyMCE.uniqueURL);
- }
- }
-
- if (this.imgElement) {
- var needsRepaint = false;
- var msrc = src;
-
- src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, tinyMCE.imgElement);");
-
- if (tinyMCE.getParam('convert_urls'))
- msrc = src;
-
- if (onmouseover && onmouseover != "")
- onmouseover = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, tinyMCE.imgElement);") + "';";
-
- if (onmouseout && onmouseout != "")
- onmouseout = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, tinyMCE.imgElement);") + "';";
-
- // Use alt as title if it's undefined
- if (typeof(title) == "undefined")
- title = alt;
-
- if (width != this.imgElement.getAttribute("width") || height != this.imgElement.getAttribute("height") || align != this.imgElement.getAttribute("align"))
- needsRepaint = true;
-
- tinyMCE.setAttrib(this.imgElement, 'src', src);
- tinyMCE.setAttrib(this.imgElement, 'mce_src', msrc);
- tinyMCE.setAttrib(this.imgElement, 'alt', alt);
- tinyMCE.setAttrib(this.imgElement, 'title', title);
- tinyMCE.setAttrib(this.imgElement, 'align', align);
- tinyMCE.setAttrib(this.imgElement, 'border', border, true);
- tinyMCE.setAttrib(this.imgElement, 'hspace', hspace, true);
- tinyMCE.setAttrib(this.imgElement, 'vspace', vspace, true);
- tinyMCE.setAttrib(this.imgElement, 'width', width, true);
- tinyMCE.setAttrib(this.imgElement, 'height', height, true);
- tinyMCE.setAttrib(this.imgElement, 'onmouseover', onmouseover);
- tinyMCE.setAttrib(this.imgElement, 'onmouseout', onmouseout);
-
- // Fix for bug #989846 - Image resize bug
- if (width && width != "")
- this.imgElement.style.pixelWidth = width;
-
- if (height && height != "")
- this.imgElement.style.pixelHeight = height;
-
- if (needsRepaint)
- tinyMCE.selectedInstance.repaint();
- }
-
- tinyMCE.execCommand('mceEndUndoLevel');
-};
-
-TinyMCE.prototype.getElementByAttributeValue = function(node, element_name, attrib, value) {
- var elements = this.getElementsByAttributeValue(node, element_name, attrib, value);
- if (elements.length == 0)
- return null;
-
- return elements[0];
-};
-
-TinyMCE.prototype.getElementsByAttributeValue = function(node, element_name, attrib, value) {
- var elements = new Array();
-
- if (node && node.nodeName.toLowerCase() == element_name) {
- if (node.getAttribute(attrib) && node.getAttribute(attrib).indexOf(value) != -1)
- elements[elements.length] = node;
- }
-
- if (node && node.hasChildNodes()) {
- for (var x=0, n=node.childNodes.length; x= strTok2.length) {
- for (var i=0; i= strTok2.length || strTok1[i] != strTok2[i]) {
- breakPoint = i + 1;
- break;
- }
- }
- }
-
- if (strTok1.length < strTok2.length) {
- for (var i=0; i= strTok1.length || strTok1[i] != strTok2[i]) {
- breakPoint = i + 1;
- break;
- }
- }
- }
-
- if (breakPoint == 1)
- return targetURL.path;
-
- for (var i=0; i<(strTok1.length-(breakPoint-1)); i++)
- outPath += "../";
-
- for (var i=breakPoint-1; i=0; i--) {
- if (baseURLParts[i].length == 0)
- continue;
-
- newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
- }
- baseURLParts = newBaseURLParts.reverse();
-
- // Merge relURLParts chunks
- var newRelURLParts = new Array();
- var numBack = 0;
- for (var i=relURLParts.length-1; i>=0; i--) {
- if (relURLParts[i].length == 0 || relURLParts[i] == ".")
- continue;
-
- if (relURLParts[i] == '..') {
- numBack++;
- continue;
- }
-
- if (numBack > 0) {
- numBack--;
- continue;
- }
-
- newRelURLParts[newRelURLParts.length] = relURLParts[i];
- }
-
- relURLParts = newRelURLParts.reverse();
-
- // Remove end from absolute path
- var len = baseURLParts.length-numBack;
- var absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');
- var start = "", end = "";
-
- // Build output URL
- relURL.protocol = baseURL.protocol;
- relURL.host = baseURL.host;
- relURL.port = baseURL.port;
-
- // Re-add trailing slash if it's removed
- if (relURL.path.charAt(relURL.path.length-1) == "/")
- absPath += "/";
-
- relURL.path = absPath;
-
- return TinyMCE.prototype.serializeURL(relURL);
-};
-
-TinyMCE.prototype.getParam = function(name, default_value, strip_whitespace, split_chr) {
- var value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
- // Fix bool values
- if (value == "true" || value == "false")
- return (value == "true");
-
- if (strip_whitespace)
- value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
-
- if (typeof(split_chr) != "undefined" && split_chr != null) {
- value = value.split(split_chr);
- var outArray = new Array();
-
- for (var i=0; i 0);
-
- if (tinyMCE.settings['custom_undo_redo']) {
- undoIndex = inst.undoIndex;
- undoLevels = inst.undoLevels.length;
- }
-
- tinyMCE.executeCallback('handleNodeChangeCallback', '_handleNodeChange', 0, editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content);
- }
- }
-
- if (this.selectedInstance && (typeof(focus) == "undefined" || focus))
- this.selectedInstance.contentWindow.focus();
-};
-
-TinyMCE.prototype._customCleanup = function(inst, type, content) {
- // Call custom cleanup
- var customCleanup = tinyMCE.settings['cleanup_callback'];
- if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined")
- content = eval(customCleanup + "(type, content, inst);");
-
- // Trigger plugin cleanups
- var plugins = tinyMCE.getParam('plugins', '', true, ',');
- for (var i=0; i 0)
- className += " ";
-
- className += classNames[i];
- }
-
- return className;
-};
-
-TinyMCE.prototype.handleVisualAid = function(el, deep, state, inst) {
- if (!el)
- return;
-
- var tableElement = null;
-
- switch (el.nodeName) {
- case "TABLE":
- var oldW = el.style.width;
- var oldH = el.style.height;
- var bo = tinyMCE.getAttrib(el, "border");
-
- bo = bo == "" || bo == "0" ? true : false;
-
- tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo));
-
- el.style.width = oldW;
- el.style.height = oldH;
-
- for (var y=0; y 0) {
- tinyMCE.setAttrib(s[i], 'size', fSize);
- s[i].style.fontSize = '';
- }
-
- var fFace = s[i].style.fontFamily;
- if (fFace != null && fFace != "") {
- tinyMCE.setAttrib(s[i], 'face', fFace);
- s[i].style.fontFamily = '';
- }
-
- var fColor = s[i].style.color;
- if (fColor != null && fColor != "") {
- tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));
- s[i].style.color = '';
- }
- }
-};
-
-TinyMCE.prototype.convertFontsToSpans = function(doc) {
- var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');
-
- var h = doc.body.innerHTML;
- h = h.replace(/ 0 && fSize < 8) {
- if (fsClasses != null)
- tinyMCE.setAttrib(s[i], 'class', fsClasses[fSize-1]);
- else
- s[i].style.fontSize = sizes[fSize-1];
- }
-
- s[i].removeAttribute('size');
- }
-
- if (fFace != "") {
- s[i].style.fontFamily = fFace;
- s[i].removeAttribute('face');
- }
-
- if (fColor != "") {
- s[i].style.color = fColor;
- s[i].removeAttribute('color');
- }
- }
-};
-
-/*
-TinyMCE.prototype.applyClassesToFonts = function(doc, size) {
- var f = doc.getElementsByTagName("font");
- for (var i=0; i=0; x--)
- tinyMCE.insertAfter(cn[x], an[i]);
- }
- }
-};
-
-TinyMCE.prototype._setHTML = function(doc, html_content) {
- // Force closed anchors open
- //html_content = html_content.replace(new RegExp('', 'gi'), '');
-
- html_content = tinyMCE.cleanupHTMLCode(html_content);
-
- // Try innerHTML if it fails use pasteHTML in MSIE
- try {
- tinyMCE.setInnerHTML(doc.body, html_content);
- } catch (e) {
- if (this.isMSIE)
- doc.body.createTextRange().pasteHTML(html_content);
- }
-
- // Content duplication bug fix
- if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {
- // Remove P elements in P elements
- var paras = doc.getElementsByTagName("P");
- for (var i=0; i<\/o:p>", "
");
- html = tinyMCE.regexpReplace(html, " <\/o:p>", "");
- html = tinyMCE.regexpReplace(html, "", "");
- html = tinyMCE.regexpReplace(html, "<\/p>", "");
- html = tinyMCE.regexpReplace(html, "
<\/p>\r\n
<\/p>", "");
- html = tinyMCE.regexpReplace(html, "
<\/p>", "
");
- html = tinyMCE.regexpReplace(html, "
\s*(
\s*)?", "
");
- html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "
");
- }
-
- // Always set the htmlText output
- tinyMCE.setInnerHTML(doc.body, html);
- }
-
- tinyMCE.cleanupAnchors(doc);
-
- if (tinyMCE.getParam("convert_fonts_to_spans"))
- tinyMCE.convertSpansToFonts(doc);
-};
-
-TinyMCE.prototype.getImageSrc = function(str) {
- var pos = -1;
-
- if (!str)
- return "";
-
- if ((pos = str.indexOf('this.src=')) != -1) {
- var src = str.substring(pos + 10);
-
- src = src.substring(0, src.indexOf('\''));
-
- return src;
- }
-
- return "";
-};
-
-TinyMCE.prototype._getElementById = function(element_id) {
- var elm = document.getElementById(element_id);
- if (!elm) {
- // Check for element in forms
- for (var j=0; j 0) {
- for (var x=0; x 0)
- tinyMCE.cssClasses = output;
-
- return output;
-};
-
-TinyMCE.prototype.regexpReplace = function(in_str, reg_exp, replace_str, opts) {
- if (in_str == null)
- return in_str;
-
- if (typeof(opts) == "undefined")
- opts = 'g';
-
- var re = new RegExp(reg_exp, opts);
- return in_str.replace(re, replace_str);
-};
-
-TinyMCE.prototype.trim = function(str) {
- return str.replace(/^\s*|\s*$/g, "");
-};
-
-TinyMCE.prototype.cleanupEventStr = function(str) {
- str = "" + str;
- str = str.replace('function anonymous()\n{\n', '');
- str = str.replace('\n}', '');
- str = str.replace(/^return true;/gi, ''); // Remove event blocker
-
- return str;
-};
-
-TinyMCE.prototype.getAbsPosition = function(node) {
- var pos = new Object();
-
- pos.absLeft = pos.absTop = 0;
-
- var parentNode = node;
- while (parentNode) {
- pos.absLeft += parentNode.offsetLeft;
- pos.absTop += parentNode.offsetTop;
-
- parentNode = parentNode.offsetParent;
- }
-
- return pos;
-};
-
-TinyMCE.prototype.getControlHTML = function(control_name) {
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
-
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + "_getControlHTML";
- if (eval("typeof(" + templateFunction + ")") != 'undefined') {
- var html = eval(templateFunction + "('" + control_name + "');");
- if (html != "")
- return tinyMCE.replaceVar(html, "pluginurl", tinyMCE.baseURL + "/plugins/" + themePlugins[i]);
- }
- }
-
- return eval('TinyMCE_' + tinyMCE.settings['theme'] + "_getControlHTML" + "('" + control_name + "');");
-};
-
-TinyMCE.prototype._themeExecCommand = function(editor_id, element, command, user_interface, value) {
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
-
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + "_execCommand";
- if (eval("typeof(" + templateFunction + ")") != 'undefined') {
- if (eval(templateFunction + "(editor_id, element, command, user_interface, value);"))
- return true;
- }
- }
-
- // Theme funtion
- templateFunction = 'TinyMCE_' + tinyMCE.settings['theme'] + "_execCommand";
- if (eval("typeof(" + templateFunction + ")") != 'undefined')
- return eval(templateFunction + "(editor_id, element, command, user_interface, value);");
-
- // Pass to normal
- return false;
-};
-
-TinyMCE.prototype._getThemeFunction = function(suffix, skip_plugins) {
- if (skip_plugins)
- return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
-
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
-
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + suffix;
- if (eval("typeof(" + templateFunction + ")") != 'undefined')
- return templateFunction;
- }
-
- return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
-};
-
-
-TinyMCE.prototype.isFunc = function(func_name) {
- if (func_name == null || func_name == "")
- return false;
-
- return eval("typeof(" + func_name + ")") != "undefined";
-};
-
-TinyMCE.prototype.exec = function(func_name, args) {
- var str = func_name + '(';
-
- // Add all arguments
- for (var i=3; i 1 && tinyMCE.currentConfig != this.settings['index']) {
- tinyMCE.settings = this.settings;
- tinyMCE.currentConfig = this.settings['index'];
- }
-};
-
-TinyMCEControl.prototype.convertAllRelativeURLs = function() {
- var body = this.getBody();
-
- // Convert all image URL:s to absolute URL
- var elms = body.getElementsByTagName("img");
- for (var i=0; i 0)
- rng.selectNodeContents(nodes[0]);
- else
- rng.selectNodeContents(node);
- } else
- rng.selectNode(node);
-
- if (collapse) {
- // Special treatment of textnode collapse
- if (!to_start && node.nodeType == 3) {
- rng.setStart(node, node.nodeValue.length);
- rng.setEnd(node, node.nodeValue.length);
- } else
- rng.collapse(to_start);
- }
-
- sel.removeAllRanges();
- sel.addRange(rng);
- }
-
- this.scrollToNode(node);
-
- // Set selected element
- tinyMCE.selectedElement = null;
- if (node.nodeType == 1)
- tinyMCE.selectedElement = node;
-};
-
-TinyMCEControl.prototype.scrollToNode = function(node) {
- // Scroll to node position
- var pos = tinyMCE.getAbsPosition(node);
- var doc = this.getDoc();
- var scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft;
- var scrollY = doc.body.scrollTop + doc.documentElement.scrollTop;
- var height = tinyMCE.isMSIE ? document.getElementById(this.editorId).style.pixelHeight : this.targetElement.clientHeight;
-
- // Only scroll if out of visible area
- if (!tinyMCE.settings['auto_resize'] && !(pos.absTop > scrollY && pos.absTop < (scrollY - 25 + height)))
- this.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25);
-};
-
-TinyMCEControl.prototype.getBody = function() {
- return this.getDoc().body;
-};
-
-TinyMCEControl.prototype.getDoc = function() {
- return this.contentWindow.document;
-};
-
-TinyMCEControl.prototype.getWin = function() {
- return this.contentWindow;
-};
-
-TinyMCEControl.prototype.getSel = function() {
- if (tinyMCE.isMSIE && !tinyMCE.isOpera)
- return this.getDoc().selection;
-
- var sel = this.contentWindow.getSelection();
-
- // Fake getRangeAt
- if (tinyMCE.isSafari && !sel.getRangeAt) {
- var newSel = new Object();
- var doc = this.getDoc();
-
- function getRangeAt(idx) {
- var rng = new Object();
-
- rng.startContainer = this.focusNode;
- rng.endContainer = this.anchorNode;
- rng.commonAncestorContainer = this.focusNode;
- rng.createContextualFragment = function (html) {
- // Seems to be a tag
- if (html.charAt(0) == '<') {
- var elm = doc.createElement("div");
-
- elm.innerHTML = html;
-
- return elm.firstChild;
- }
-
- return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!");
- };
-
- rng.deleteContents = function () {
- doc.execCommand("Delete", false, "");
- };
-
- return rng;
- }
-
- // Patch selection
-
- newSel.focusNode = sel.baseNode;
- newSel.focusOffset = sel.baseOffset;
- newSel.anchorNode = sel.extentNode;
- newSel.anchorOffset = sel.extentOffset;
- newSel.getRangeAt = getRangeAt;
- newSel.text = "" + sel;
- newSel.realSelection = sel;
-
- newSel.toString = function () {return this.text;};
-
- return newSel;
- }
-
- return sel;
-};
-
-TinyMCEControl.prototype.getRng = function() {
- var sel = this.getSel();
- if (sel == null)
- return null;
-
- if (tinyMCE.isMSIE && !tinyMCE.isOpera)
- return sel.createRange();
-
- if (tinyMCE.isSafari) {
- var rng = this.getDoc().createRange();
- var sel = this.getSel().realSelection;
-
- rng.setStart(sel.baseNode, sel.baseOffset);
- rng.setEnd(sel.extentNode, sel.extentOffset);
-
- return rng;
- }
-
- return this.getSel().getRangeAt(0);
-};
-
-TinyMCEControl.prototype._insertPara = function(e) {
- function isEmpty(para) {
- function isEmptyHTML(html) {
- return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == "";
- }
-
- // Check for images
- if (para.getElementsByTagName("img").length > 0)
- return false;
-
- // Check for tables
- if (para.getElementsByTagName("table").length > 0)
- return false;
-
- // Check for HRs
- if (para.getElementsByTagName("hr").length > 0)
- return false;
-
- // Check all textnodes
- var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
- for (var i=0; i " + blockName + "><" + blockName + "> " + blockName + ">";
- paraAfter = body.childNodes[1];
- }
-
- this.selectNode(paraAfter, true, true);
-
- return true;
- }
-
- // Place first part within new paragraph
- if (startChop.nodeName == blockName)
- rngBefore.setStart(startChop, 0);
- else
- rngBefore.setStartBefore(startChop);
-
- rngBefore.setEnd(startNode, startOffset);
- paraBefore.appendChild(rngBefore.cloneContents());
-
- // Place secound part within new paragraph
- rngAfter.setEndAfter(endChop);
- rngAfter.setStart(endNode, endOffset);
- var contents = rngAfter.cloneContents();
-
- if (contents.firstChild && contents.firstChild.nodeName == blockName) {
-/* var nodes = contents.firstChild.childNodes;
- for (var i=0; i 0)
- rng.pasteHTML('' + rng.htmlText + "
");
-
- tinyMCE.triggerNodeChange();
- return;
- }
- }
- }
-
- switch (command) {
- case "mceRepaint":
- this.repaint();
- return true;
-
- case "mceStoreSelection":
- this.selectionBookmark = this.getBookmark();
- return true;
-
- case "mceRestoreSelection":
- this.moveToBookmark(this.selectionBookmark);
- return true;
-
- case "InsertUnorderedList":
- case "InsertOrderedList":
- var tag = (command == "InsertUnorderedList") ? "ul" : "ol";
-
- if (tinyMCE.isSafari)
- this.execCommand("mceInsertContent", false, "<" + tag + "> <" + tag + ">");
- else
- this.getDoc().execCommand(command, user_interface, value);
-
- tinyMCE.triggerNodeChange();
- break;
-
- case "Strikethrough":
- if (tinyMCE.isSafari)
- this.execCommand("mceInsertContent", false, "" + this.getSelectedHTML() + "");
- else
- this.getDoc().execCommand(command, user_interface, value);
-
- tinyMCE.triggerNodeChange();
- break;
-
- case "mceSelectNode":
- this.selectNode(value);
- tinyMCE.triggerNodeChange();
- tinyMCE.selectedNode = value;
- break;
-
- case "FormatBlock":
- if (value == null || value == "") {
- var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address");
-
- if (elm)
- this.execCommand("mceRemoveNode", false, elm);
- } else
- this.getDoc().execCommand("FormatBlock", false, value);
-
- tinyMCE.triggerNodeChange();
-
- break;
-
- case "mceRemoveNode":
- if (!value)
- value = tinyMCE.getParentElement(this.getFocusElement());
-
- if (tinyMCE.isMSIE) {
- value.outerHTML = value.innerHTML;
- } else {
- var rng = value.ownerDocument.createRange();
- rng.setStartBefore(value);
- rng.setEndAfter(value);
- rng.deleteContents();
- rng.insertNode(rng.createContextualFragment(value.innerHTML));
- }
-
- tinyMCE.triggerNodeChange();
-
- break;
-
- case "mceSelectNodeDepth":
- var parentNode = this.getFocusElement();
- for (var i=0; parentNode; i++) {
- if (parentNode.nodeName.toLowerCase() == "body")
- break;
-
- if (parentNode.nodeName.toLowerCase() == "#text") {
- i--;
- parentNode = parentNode.parentNode;
- continue;
- }
-
- if (i == value) {
- this.selectNode(parentNode, false);
- tinyMCE.triggerNodeChange();
- tinyMCE.selectedNode = parentNode;
- return;
- }
-
- parentNode = parentNode.parentNode;
- }
-
- break;
-
- case "SetStyleInfo":
- var rng = this.getRng();
- var sel = this.getSel();
- var scmd = value['command'];
- var sname = value['name'];
- var svalue = value['value'] == null ? '' : value['value'];
- //var svalue = value['value'] == null ? '' : value['value'];
- var wrapper = value['wrapper'] ? value['wrapper'] : "span";
- var parentElm = null;
- var invalidRe = new RegExp("^BODY|HTML$", "g");
- var invalidParentsRe = tinyMCE.settings['merge_styles_invalid_parents'] != '' ? new RegExp(tinyMCE.settings['merge_styles_invalid_parents'], "gi") : null;
-
- // Whole element selected check
- if (tinyMCE.isMSIE) {
- // Control range
- if (rng.item)
- parentElm = rng.item(0);
- else {
- var pelm = rng.parentElement();
- var prng = doc.selection.createRange();
- prng.moveToElementText(pelm);
-
- if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {
- if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))
- parentElm = pelm;
- }
- }
- } else {
- var felm = this.getFocusElement();
- if (sel.isCollapsed || (/td|tr|tbody|table/ig.test(felm.nodeName) && sel.anchorNode == felm.parentNode))
- parentElm = felm;
- }
-
- // Whole element selected
- if (parentElm && !invalidRe.test(parentElm.nodeName)) {
- if (scmd == "setstyle")
- tinyMCE.setStyleAttrib(parentElm, sname, svalue);
-
- if (scmd == "setattrib")
- tinyMCE.setAttrib(parentElm, sname, svalue);
-
- if (scmd == "removeformat") {
- parentElm.style.cssText = '';
- tinyMCE.setAttrib(parentElm, 'class', '');
- }
-
- // Remove style/attribs from all children
- var ch = tinyMCE.getNodeTree(parentElm, new Array(), 1);
- for (var z=0; z=0; i--) {
- var elm = nodes[i];
- var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";
-
- elm.removeAttribute("mce_new");
-
- // Is only child a element
- if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {
- //tinyMCE.debug("merge1" + isNew);
- this._mergeElements(scmd, elm, elm.childNodes[0], isNew);
- continue;
- }
-
- // Is I the only child
- if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {
- //tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);
- if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))
- this._mergeElements(scmd, elm.parentNode, elm, false);
- }
- }
-
- // Remove empty wrappers
- var nodes = doc.getElementsByTagName(wrapper);
- for (var i=nodes.length-1; i>=0; i--) {
- var elm = nodes[i];
- var isEmpty = true;
-
- // Check if it has any attribs
- var tmp = doc.createElement("body");
- tmp.appendChild(elm.cloneNode(false));
-
- // Is empty span, remove it
- tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');
- //tinyMCE.debug(tmp.innerHTML);
- if (new RegExp('', 'gi').test(tmp.innerHTML)) {
- for (var x=0; x 0) {
- value = tinyMCE.replaceVar(value, "selection", selectedText);
- tinyMCE.execCommand('mceInsertContent', false, value);
- }
-
- tinyMCE.triggerNodeChange();
- break;
-
- case "mceSetAttribute":
- if (typeof(value) == 'object') {
- var targetElms = (typeof(value['targets']) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value['targets'];
- var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms);
-
- if (targetNode) {
- targetNode.setAttribute(value['name'], value['value']);
- tinyMCE.triggerNodeChange();
- }
- }
- break;
-
- case "mceSetCSSClass":
- this.execCommand("SetStyleInfo", false, {command : "setattrib", name : "class", value : value});
- break;
-
- case "mceInsertRawHTML":
- var key = 'tiny_mce_marker';
-
- this.execCommand('mceBeginUndoLevel');
-
- // Insert marker key
- this.execCommand('mceInsertContent', false, key);
-
- // Store away scroll pos
- var scrollX = this.getDoc().body.scrollLeft + this.getDoc().documentElement.scrollLeft;
- var scrollY = this.getDoc().body.scrollTop + this.getDoc().documentElement.scrollTop;
-
- // Find marker and replace with RAW HTML
- var html = this.getBody().innerHTML;
- if ((pos = html.indexOf(key)) != -1)
- tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));
-
- // Restore scoll pos
- this.contentWindow.scrollTo(scrollX, scrollY);
-
- this.execCommand('mceEndUndoLevel');
-
- break;
-
- case "mceInsertContent":
- var insertHTMLFailed = false;
- this.getWin().focus();
-/* WP
- if (tinyMCE.isGecko || tinyMCE.isOpera) {
- try {
- // Is plain text or HTML
- if (value.indexOf('<') == -1) {
- var r = this.getRng();
- var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));
- var s = this.getSel();
- var r2 = r.cloneRange();
-
- // Insert text at cursor position
- s.removeAllRanges();
- r.deleteContents();
- r.insertNode(n);
-
- // Move the cursor to the end of text
- r2.selectNode(n);
- r2.collapse(false);
- s.removeAllRanges();
- s.addRange(r2);
- } else {
- value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);
- this.getDoc().execCommand('inserthtml', false, value);
- tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
- }
- } catch (ex) {
- insertHTMLFailed = true;
- }
-
- if (!insertHTMLFailed) {
- tinyMCE.triggerNodeChange();
- return;
- }
- }
-*/
- // Ugly hack in Opera due to non working "inserthtml"
- if (tinyMCE.isOpera && insertHTMLFailed) {
- this.getDoc().execCommand("insertimage", false, tinyMCE.uniqueURL);
- var ar = tinyMCE.getElementsByAttributeValue(this.getBody(), "img", "src", tinyMCE.uniqueURL);
- ar[0].outerHTML = value;
- return;
- }
-
- if (!tinyMCE.isMSIE) {
- var isHTML = value.indexOf('<') != -1;
- var sel = this.getSel();
- var rng = this.getRng();
-
- if (isHTML) {
- if (tinyMCE.isSafari) {
- var tmpRng = this.getDoc().createRange();
-
- tmpRng.setStart(this.getBody(), 0);
- tmpRng.setEnd(this.getBody(), 0);
-
- value = tmpRng.createContextualFragment(value);
- } else
- value = rng.createContextualFragment(value);
- } else {
- // Setup text node
- var el = document.createElement("div");
- el.innerHTML = value;
- value = el.firstChild.nodeValue;
- value = doc.createTextNode(value);
- }
-
- // Insert plain text in Safari
- if (tinyMCE.isSafari && !isHTML) {
- this.execCommand('InsertText', false, value.nodeValue);
- tinyMCE.triggerNodeChange();
- return true;
- } else if (tinyMCE.isSafari && isHTML) {
- rng.deleteContents();
- rng.insertNode(value);
- tinyMCE.triggerNodeChange();
- return true;
- }
-
- rng.deleteContents();
-
- // If target node is text do special treatment, (Mozilla 1.3 fix)
- if (rng.startContainer.nodeType == 3) {
- var node = rng.startContainer.splitText(rng.startOffset);
- node.parentNode.insertBefore(value, node);
- } else
- rng.insertNode(value);
-
- if (!isHTML) {
- // Removes weird selection trails
- sel.selectAllChildren(doc.body);
- sel.removeAllRanges();
-
- // Move cursor to end of content
- var rng = doc.createRange();
-
- rng.selectNode(value);
- rng.collapse(false);
-
- sel.addRange(rng);
- } else
- rng.collapse(false);
- } else {
- var rng = doc.selection.createRange();
- var c = value.indexOf(')/g,'\n');s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,'');return s;};h=h.replace(/');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone();});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange="';else ol=' onload="';ol+='tinymce.dom.ScriptLoader._onLoad(this,\''+u+'\','+ix+');"';}document.write('');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0;}};if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done();}});}else{e=tinymce.DOM.create('script',{id:id,type:'text/javascript',src:tinymce._addVer(u)});Event.add(e,'load',done);(document.getElementsByTagName('head')[0]||document.body).appendChild(e);}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+": "+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeightmx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix,ic;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:"return false;",onmousedown:'return false;'});DOM.addClass(it,s['class']);ic=DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});if(s.icon_src)DOM.add(ic,'img',{src:s.icon_src});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='';if(s.image)h+=''+l+'';else h+=''+(l?''+l+'':'')+'';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){var t=this,e,o;if(idx!=t.selectedIndex){e=DOM.get(t.id+'_text');o=t.items[idx];if(o){t.selectedValue=o.value;t.selectedIndex=idx;DOM.setHTML(e,DOM.encode(o.title));DOM.removeClass(e,'mceTitle');}else{DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');t.selectedValue=t.selectedIndex=null;}e=0;}else t.selectedValue=t.selectedIndex=null;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='';h+=''+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:"return false;",onmousedown:'return false;'},DOM.encode(t.settings.title))+' | ';h+=''+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:"return false;",onmousedown:'return false;'},'')+' | ';h+='
';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){DOM.get(this.id).selectedIndex=idx+1;this.selectedValue=this.items[idx]?this.items[idx].value:null;},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=t.items[e.target.selectedIndex-1];if(v&&(v=v.value)){t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);}};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+=''+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+' | ';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+=''+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+' | ';h+='
';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.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'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});DOM.setStyle(t.id+'_preview','backgroundColor',t.value);},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,''));}if(dom.stdMode)h+=''+co.renderHTML()+' | ';else h+=''+co.renderHTML()+' | ';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,''));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,''));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},''+h+'
');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\?#].*$/,'').replace(/[\/\\][^\/]+$/,'');if(!/[\/\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\.(.+\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:"simple",language:"en",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case"exact":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case"textareas":case"specific_textareas":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case"mceFocus":ed.focus();return true;case"mceAddEditor":case"mceAddControl":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case"mceAddFrameControl":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(ed)ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['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(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.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:'',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,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';t.iframeHTML+='';if(tinymce.relaxedDomain)t.iframeHTML+='';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='