diff --git a/www/extras/tinymce2/docs/option_display_tab_class.html b/www/extras/tinymce2/docs/option_display_tab_class.html
new file mode 100644
index 000000000..7885097cc
--- /dev/null
+++ b/www/extras/tinymce2/docs/option_display_tab_class.html
@@ -0,0 +1,38 @@
+
+
+
+Option: display_tab_class
+
+
+
+
+
+
+
+
+ This option is useful when TinyMCE is used within tabs in MSIE. This property is needed since MSIE has a bug where it's impossible to retrive the width/height on elements like images while it's hidden using display:none. So use this property to define the class name that is used to hide a specific tab, this will help TinyMCE to display the tab while getting the image data.
+
+
+
+
+
Example of usage of the display_tab_class option:
+
+
+tinyMCE.init({
+ ...
+ display_tab_class : "showTab"
+});
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/option_hidden_tab_class.html b/www/extras/tinymce2/docs/option_hidden_tab_class.html
new file mode 100644
index 000000000..2708636ec
--- /dev/null
+++ b/www/extras/tinymce2/docs/option_hidden_tab_class.html
@@ -0,0 +1,38 @@
+
+
+
+Option: hidden_tab_class
+
+
+
+
+
+
+
+
+ This option is useful when TinyMCE is used within tabs in MSIE. This property is needed since MSIE has a bug where it's impossible to retrive the width/height on elements like images while it's hidden using display:none. So use this property to define the class name that is used to hide a specific tab, this will help TinyMCE to display the tab while getting the image data.
+
+
+
+
+
Example of usage of the hidden_tab_class option:
+
+
+tinyMCE.init({
+ ...
+ hidden_tab_class : "hideTab"
+});
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/option_strict_loading_mode.html b/www/extras/tinymce2/docs/option_strict_loading_mode.html
new file mode 100644
index 000000000..e682c7ea0
--- /dev/null
+++ b/www/extras/tinymce2/docs/option_strict_loading_mode.html
@@ -0,0 +1,38 @@
+
+
+
+ Option: strict_loading_mode
+
+
+
+
+
+
+
+
+ This option will force TinyMCE to load script using a DOM insert method instead of document.write on Gecko browsers. Since this results in asynchronous script loading a build in synchronized will ensure that themes, plugins and language packs files are loaded in the correct order. This will on the otherhand make the initialization procedure of TinyMCE a bit slower thats why this isn't the default behavior. So this option is set to true by default if the document content type is application/xhtml+xml.
+
+
+
+
+
Example of usage of the strict_loading_mode option:
+
+
+tinyMCE.init({
+ ...
+ strict_loading_mode : true
+});
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/option_theme_advanced_source_editor_wrap.html b/www/extras/tinymce2/docs/option_theme_advanced_source_editor_wrap.html
new file mode 100644
index 000000000..6271a79d6
--- /dev/null
+++ b/www/extras/tinymce2/docs/option_theme_advanced_source_editor_wrap.html
@@ -0,0 +1,38 @@
+
+
+
+Option: theme_advanced_source_editor_wrap
+
+
+
+
+
+
+
+
+ This option enables you to force word wrap for the source editor, this option is set to true by default.
+
+
+
+
+
Example of usage of the theme_advanced_source_editor_wrap option:
+
+
+tinyMCE.init({
+ ...
+ theme_advanced_source_editor_wrap : false
+});
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/plugin_layer.html b/www/extras/tinymce2/docs/plugin_layer.html
new file mode 100644
index 000000000..e644bfd2f
--- /dev/null
+++ b/www/extras/tinymce2/docs/plugin_layer.html
@@ -0,0 +1,46 @@
+
+
+
+Plugin: layer
+
+
+
+
+
+
+
+
Adds a layer suport to TinyMCE by making it possible to create/remove and z-index block elements.
+
+
These are the possible button control that this plugin contains: insertlayer,moveforward,movebackward,absolute
+
+
Installation Instructions
+
+
+ Add plugin to TinyMCE plugin option list example: plugins : "layer".
+ Add the insertlayer,moveforward,movebackward,absolute button names to button list, example: theme_advanced_buttons3_add : "insertlayer,moveforward,movebackward,absolute".
+
+
+
Initialization Example
+
+
+
+tinyMCE.init({
+ theme : "advanced",
+ mode : "textareas",
+ plugins : "layer ",
+ theme_advanced_buttons3_add : "insertlayer,moveforward,movebackward,absolute "
+});
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/plugin_style.html b/www/extras/tinymce2/docs/plugin_style.html
new file mode 100644
index 000000000..7214399d8
--- /dev/null
+++ b/www/extras/tinymce2/docs/plugin_style.html
@@ -0,0 +1,303 @@
+
+
+
+Plugin: style
+
+
+
+
+
+
+
+
Adds CSS style editing support to TinyMCE, this will enable you to edit allmost any CSS style property in a visual way.
+
+
Installation Instructions
+
+
+ Add plugin to TinyMCE plugin option list example: plugins : "style".
+ Add the styleprops butto names to button list, example: theme_advanced_buttons3_add : "styleprops".
+
+
+
Initialization Example
+
+
+
+tinyMCE.init({
+ theme : "advanced",
+ mode : "textareas",
+ plugins : "style ",
+ theme_advanced_buttons3_add : "styleprops "
+});
+
+
+
+
+
Options
+
+
+
+ [style_font]
+ Semicolon separated list of select box option name/values. Default: Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;Times New Roman, Times, serif=Times New Roman, Times, serif;Courier New, Courier, mono=Courier New, Courier, mono;Times New Roman, Times, serif=Times New Roman, Times, serif;Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif
+
+
+ [style_font_size]
+ Semicolon separated list of select box option name/values. In format key1=value1;key2=value2;..
+
+
+ [style_font_size_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_text_case]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_font_weight]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_font_style]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_font_variant]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_font_line_height]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_font_line_height_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_attachment]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_repeat]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_hpos_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_vpos_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_hpos]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_background_vpos]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_wordspacing]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_wordspacing_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_letterspacing]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_letterspacing_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_vertical_alignment]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_text_align]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_whitespace]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_display]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_text_indent_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_box_width_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_box_height_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_float]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_clear]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_padding_left_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_padding_top_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_padding_bottom_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_padding_right_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_margin_left_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_margin_top_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_margin_bottom_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_margin_right_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_style_top]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_style_right]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_style_bottom]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_style_left]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_top]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_right]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_bottom]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_left]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_top_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_right_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_bottom_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_border_width_left_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_list_type]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_list_position]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_type]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_visibility]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_width_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_height_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_overflow]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_placement_top_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_placement_right_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_placement_bottom_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_placement_left_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_clip_top_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_clip_right_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_clip_bottom_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+ [style_positioning_clip_left_measurement]
+ Semicolon separated list of select box option name/values.
+
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/GLOBALS.html b/www/extras/tinymce2/docs/tinymce_api/GLOBALS.html
new file mode 100644
index 000000000..96d0b987c
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/GLOBALS.html
@@ -0,0 +1,267 @@
+
+
+
+
+
+GLOBALS
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class GLOBALS
+Object
+ |
+ +--GLOBALS
+
+
+
+
+
+
+ class
+ GLOBALS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ <static> void
+
+
+
+
+
+ TinyMCE_Menu ()
+
+
+
+ Constructor for the menu layer class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ TinyMCE_Menu
+ <static> void TinyMCE_Menu ()
+
+ Constructor for the menu layer class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Cleanup.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Cleanup.html
new file mode 100644
index 000000000..a0f7741db
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Cleanup.html
@@ -0,0 +1,675 @@
+
+
+
+
+
+TinyMCE_Cleanup
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Cleanup
+Object
+ |
+ +--TinyMCE_Cleanup
+
+
+
+
+
+
+ class
+ TinyMCE_Cleanup
+
+
+
+
+
+ Defined in TinyMCE_Cleanup.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Cleanup
+
+ ()
+
+
+
+ TinyMCE_Cleanup class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addRuleStr (<string> s)
+
+
+
+ Adds a cleanup rule string, for TinyMCE_Cleanup.prototype.example = a;[href|name|title=title|class=class1?class2?class3].
+
+
+
+
+
+
+ string
+
+
+
+
+
+ formatHTML (<string> h)
+
+
+
+ Applies source formatting/indentation on the specified HTML string.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ init (<Array> s)
+
+
+
+ Initializes the cleanup engine with the specified config.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ parseRuleStr (<string> s)
+
+
+
+ Parses a cleanup rule string, for TinyMCE_Cleanup.prototype.example = a;[href|name|title=title|class=class1?class2?class3].
+
+
+
+
+
+
+ string
+
+
+
+
+
+ serializeNodeAsHTML (<HTMLNode> n)
+
+
+
+ Serializes the specified node as a XHTML string.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ serializeNodeAsXML (<HTMLNode> n)
+
+
+
+ Serializes the specified node as a HTML string.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ split (<RegEx> re, <string> s)
+
+
+
+ Splits the specified string and removed empty chunks.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ xmlEncode (<string> s)
+
+
+
+ XML Encodes the specified string based on configured entity encoding.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Cleanup
+TinyMCE_Cleanup ()
+
+
+
+ TinyMCE_Cleanup class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ addRuleStr
+ void addRuleStr (<string> s)
+
+ Adds a cleanup rule string, for TinyMCE_Cleanup.prototype.example = a;[href|name|title=title|class=class1?class2?class3].
+ These rules are then used when serializing the DOM tree as a HTML string, it gives the possibility
+ to control the valid elements and attributes and force attribute values or default them.
+
+
+
+
+
+ Parameters:
+
+ s - Rule string to parse and add to the cleanup rules array.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ formatHTML
+ string formatHTML (<string> h)
+
+ Applies source formatting/indentation on the specified HTML string.
+
+
+
+
+
+ Parameters:
+
+ h - HTML string to apply formatting to.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Formatted HTML string.
+
+
+
+
+
+
+
+
+
+
+ init
+ void init (<Array> s)
+
+ Initializes the cleanup engine with the specified config.
+
+
+
+
+
+ Parameters:
+
+ s - Name/Value array with config settings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parseRuleStr
+ Array parseRuleStr (<string> s)
+
+ Parses a cleanup rule string, for TinyMCE_Cleanup.prototype.example = a;[href|name|title=title|class=class1?class2?class3].
+ These rules are then used when serializing the DOM tree as a HTML string, it gives the possibility
+ to control the valid elements and attributes and force attribute values or default them.
+
+
+
+
+
+ Parameters:
+
+ s - Rule string to parse as a name/value rule array.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Parsed name/value rule array.
+
+
+
+
+
+
+
+
+
+
+ serializeNodeAsHTML
+ string serializeNodeAsHTML (<HTMLNode> n)
+
+ Serializes the specified node as a XHTML string. This uses the TinyMCE serializer logic since it gives more
+ control over the output than the build in browser XML serializer.
+
+
+
+
+
+ Parameters:
+
+ n - Node to serialize as a XHTML string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Serialized XHTML string based on specified node.
+
+
+
+
+
+
+
+
+
+
+ serializeNodeAsXML
+ string serializeNodeAsXML (<HTMLNode> n)
+
+ Serializes the specified node as a HTML string. This uses the XML parser and serializer
+ to generate a XHTML string.
+
+
+
+
+
+ Parameters:
+
+ n - Node to serialize as a XHTML string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Serialized XHTML string based on specified node.
+
+
+
+
+
+
+
+
+
+
+ split
+ string split (<RegEx> re, <string> s)
+
+ Splits the specified string and removed empty chunks.
+
+
+
+
+
+ Parameters:
+
+ re - RegEx to split string by.
+
+
+ s - String value to split.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Array with parts from specified string.
+
+
+
+
+
+
+
+
+
+
+ xmlEncode
+ string xmlEncode (<string> s)
+
+ XML Encodes the specified string based on configured entity encoding. The entity encoding modes
+ are raw, numeric and named. Where raw is the fastest and named is default.
+
+
+
+
+
+ Parameters:
+
+ s - String to convert to XML.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Encoded XML string based on configured entity encoding.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Control.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Control.html
new file mode 100644
index 000000000..4baff31a2
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Control.html
@@ -0,0 +1,1387 @@
+
+
+
+
+
+TinyMCE_Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Control
+Object
+ |
+ +--TinyMCE_Control
+
+
+
+
+
+
+ class
+ TinyMCE_Control
+
+
+
+
+
+ Defined in TinyMCE_Control.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Control
+
+ (<Array> settings)
+
+
+
+ This is the TinyMCE editor control instance class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addPlugin (<string> n, p)
+
+
+
+ Adds a plugin to the editor instance.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ addShortcut (<string> m, <Object> k, <string> d, <string> cmd, <boolean> ui, <Object> va)
+
+
+
+ Adds a keyboard shortcut to a specific command.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ autoResetDesignMode ()
+
+
+
+ Auto resets the design mode of the document if it gets lost.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ execCommand (<string> command, <boolean> user_interface, <mixed> value)
+
+
+
+ Executes a command on the current instance.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getBody ()
+
+
+
+ Returns the body element of a editor instance.
+
+
+
+
+
+
+ DOMDocument
+
+
+
+
+
+ getDoc ()
+
+
+
+ Returns the DOM document of a editor instance.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getFocusElement ()
+
+
+
+ Returns the currently selected element.
+
+
+
+
+
+
+ DOMRange
+
+
+
+
+
+ getRng ()
+
+
+
+ Returns the browsers selections first range instance.
+
+
+
+
+
+
+ DOMSelection
+
+
+
+
+
+ getSel ()
+
+
+
+ Returns the browsers selection instance.
+
+
+
+
+
+
+ Window
+
+
+
+
+
+ getWin ()
+
+
+
+ Returns the window of a editor instance.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ handleShortcut (<DOMEvent> e)
+
+
+
+ Executes shortcuts based on the event information.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ hasPlugin (<string> n)
+
+
+
+ Returns true/false if the instance has the current plugin available.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ isDirty ()
+
+
+
+ Returns true/false if the editor instance is dirty or not.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ isHidden ()
+
+
+
+ Returns if the instance is hidden or not.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ queryCommandState (<string> c)
+
+
+
+ Returns a command specific state, for example if bold is enabled or not.
+
+
+
+
+
+
+ mixed
+
+
+
+
+
+ queryCommandValue (<string> c)
+
+
+
+ Returns a command specific value, for example the current font size.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ repaint ()
+
+
+
+ Repaints the editarea in Gecko browsers.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setBaseHREF (<string> u)
+
+
+
+ Sets the base href url of the current document instance.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ switchSettings ()
+
+
+
+ Switches the global TinyMCE settings to the current instance settings.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ triggerSave (<boolean> skip_cleanup, <boolean> skip_callback)
+
+
+
+ Moves the contents from the TinyMCE editor control instance to the hidden textarea
+ that got replaced with TinyMCE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cleanup
+ Object cleanup
+
+
+
+
+ hasMouseMoved
+ Object hasMouseMoved
+
+
+
+
+ isTinyMCE_Control
+ Object isTinyMCE_Control
+
+
+
+
+ plugins
+ Object plugins
+
+
+
+
+ selection
+ Object selection
+
+
+
+
+ settings
+ Object settings
+
+
+
+
+ shortcuts
+ Object shortcuts
+
+
+
+
+ undoRedo
+ Object undoRedo
+
+
+
+
+ undoRedoLevel
+ Object undoRedoLevel
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Control
+TinyMCE_Control (<Array> settings)
+
+
+
+ This is the TinyMCE editor control instance class. A instance of this class will is made for each
+ converted text area.
+
+
+
+
+
+ Parameters:
+
+ settings - Name/Value array of instance specific configuration settings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ addPlugin
+ void addPlugin (<string> n, p)
+
+ Adds a plugin to the editor instance. This will also add it globaly.
+
+
+
+
+
+ Parameters:
+
+ n - Plugin name to check for.
+
+
+ n - TinyMCE plugin instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addShortcut
+ boolean addShortcut (<string> m, <Object> k, <string> d, <string> cmd, <boolean> ui, <Object> va)
+
+ Adds a keyboard shortcut to a specific command. These shortcuts can for example be added
+ at the initInstance callback of a plugin. The shortcut description can be a language variable name
+ or a string describing the function. If you don't specify a command, the shortcut will simply be a blocker
+ shortcut. This enables you to remove built in shortcuts or remove theme specific shortcuts from a plugin.
+ Example shortcut inst.addShortcut('ctrl,alt', 'k', 'mceSomeCommand', false, 'somevalue');
+ Example blocker inst.addShortcut('ctrl,alt', 'k');
+
+
+
+
+
+ Parameters:
+
+ m - List of shortcut modifiers keys, for example "ctrl,alt".
+
+
+ k - Shortcut key char for example "s" or a keycode value "13".
+
+
+ d - Optional Shortcut description, this will be presented in the about dialog.
+
+
+ cmd - Optional Command name to execute, for example mceLink or Bold.
+
+
+ ui - Optional True/false state if a UI (dialog) should be presented or not.
+
+
+ va - Optional command value, this can be anything.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the shortcut was added or not
+
+
+
+
+
+
+
+
+
+
+ autoResetDesignMode
+ void autoResetDesignMode ()
+
+ Auto resets the design mode of the document if it gets lost.
+ This is a Gecko specific function since it's a workaround for a bug where Gecko browsers
+ loose the designMode state if the editor is hidden and shown in a tab or div.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ execCommand
+ Object execCommand (<string> command, <boolean> user_interface, <mixed> value)
+
+ Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
+ they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
+ This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
+ return true it will handle the command as a internal browser command.
+
+
+
+
+
+ Parameters:
+
+ command - Command name to execute, for example mceLink or Bold.
+
+
+ user_interface - True/false state if a UI (dialog) should be presented or not.
+
+
+ value - Optional command value, this can be anything.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getBody
+ HTMLElement getBody ()
+
+ Returns the body element of a editor instance.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Body element of a editor instance.
+
+
+
+
+
+
+
+
+
+
+ getDoc
+ DOMDocument getDoc ()
+
+ Returns the DOM document of a editor instance.
+
+
+
+
+
+
+
+
+ Returns:
+
+ DOM document of a editor instance.
+
+
+
+
+
+
+
+
+
+
+ getFocusElement
+ HTMLElement getFocusElement ()
+
+ Returns the currently selected element. This is was added for compatiblity and is deprecated.
+ Please use inst.selection.getFocusElement instead.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Currently selected element.
+
+
+
+
+
+
+
+
+
+
+
+
+ getRng
+ DOMRange getRng ()
+
+ Returns the browsers selections first range instance. This is was added for compatiblity and is deprecated.
+ Please use inst.selection.getRng instead.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Browsers selections first range instance.
+
+
+
+
+
+
+
+
+
+
+
+
+ getSel
+ DOMSelection getSel ()
+
+ Returns the browsers selection instance. This is was added for compatiblity and is deprecated.
+ Please use inst.selection.getSel instead.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Browser selection instance.
+
+
+
+
+
+
+
+
+
+
+
+
+ getWin
+ Window getWin ()
+
+ Returns the window of a editor instance.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Window of a editor instance.
+
+
+
+
+
+
+
+
+
+
+ handleShortcut
+ boolean handleShortcut (<DOMEvent> e)
+
+ Executes shortcuts based on the event information.
+
+
+
+
+
+ Parameters:
+
+ e - Keyboard event to handle.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the shortcut was found and executed or not.
+
+
+
+
+
+
+
+
+
+
+ hasPlugin
+ boolean hasPlugin (<string> n)
+
+ Returns true/false if the instance has the current plugin available.
+
+
+
+
+
+ Parameters:
+
+ n - Plugin name to check for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the instance has the current plugin available.
+
+
+
+
+
+
+
+
+
+
+ isDirty
+ boolean isDirty ()
+
+ Returns true/false if the editor instance is dirty or not. In other words if it has been modified
+ or not.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Editor instance dirty state.
+
+
+
+
+
+
+
+
+
+
+ isHidden
+ boolean isHidden ()
+
+ Returns if the instance is hidden or not. This is a Gecko specific function
+ other browsers will always return false. This function is used to workaround the lost
+ designMode bug in Gecko browsers.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Returns if the instance is hidden or not.
+
+
+
+
+
+
+
+
+
+
+ queryCommandState
+ boolean queryCommandState (<string> c)
+
+ Returns a command specific state, for example if bold is enabled or not.
+
+
+
+
+
+ Parameters:
+
+ c - Command to query state from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Command specific state, for example if bold is enabled or not.
+
+
+
+
+
+
+
+
+
+
+ queryCommandValue
+ mixed queryCommandValue (<string> c)
+
+ Returns a command specific value, for example the current font size.
+
+
+
+
+
+ Parameters:
+
+ c - Command to query value from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Command specific value, for example the current font size.
+
+
+
+
+
+
+
+
+
+
+ repaint
+ void repaint ()
+
+ Repaints the editarea in Gecko browsers. This method removes ghost resize handlers
+ and other trailing graphics.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setBaseHREF
+ void setBaseHREF (<string> u)
+
+ Sets the base href url of the current document instance. This method is used
+ to temporarly remove the base url during copy/paste and drag/drop operations
+ of relative links from external sites into TinyMCE. MSIE has a bug and converts
+ relative links from external sites to absolute links incorrectly.
+
+
+
+
+
+ Parameters:
+
+ u - URL to set as base URL or null to remove it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ switchSettings
+ void switchSettings ()
+
+ Switches the global TinyMCE settings to the current instance settings. This method is
+ used to handle multiple configurations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ triggerSave
+ void triggerSave (<boolean> skip_cleanup, <boolean> skip_callback)
+
+ Moves the contents from the TinyMCE editor control instance to the hidden textarea
+ that got replaced with TinyMCE. This is executed automaticly on for example form submit unless you configure otherwice.
+
+
+
+
+
+ Parameters:
+
+ skip_cleanup - Optional Skip cleanup, simply move the contents as fast as possible.
+
+
+ skip_callback - Optional Skip callback, don't call the save_callback function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Engine.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Engine.html
new file mode 100644
index 000000000..60845b3bc
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Engine.html
@@ -0,0 +1,6390 @@
+
+
+
+
+
+TinyMCE_Engine
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Engine
+Object
+ |
+ +--TinyMCE_Engine
+
+
+
+
+
+
+ class
+ TinyMCE_Engine
+
+
+
+
+
+ Defined in TinyMCE_Engine.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Engine
+
+ ()
+
+
+
+ Core engine class for TinyMCE, a instance of this class is available as a global called tinyMCE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ _getElementById (<string> i<DOMDocument> d, d)
+
+
+
+ Returns a element by id, this will also search the form names to match the id.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ _removeInternal (<DOMNode> n)
+
+
+
+ Removes any internal content inserted by regexps.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ accessibleEventHandler (<DOMEvent> e)
+
+
+
+ Accessibility handler that gets executed when the user hits a key in a select element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addButtonMap (<string> m)
+
+
+
+ Adds a list of buttons available in the tiled button image used by the button_tile_map option.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ addCSSClass (<HTMLElement> e, c, b)
+
+
+
+ Adds a CSS class to the specified element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addEvent (<HTMLElement> o, <string> n, <function> h)
+
+
+
+ Adds a event handler function to the specified object.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addEventHandlers (<inst> inst)
+
+
+
+ Adds the handleEvent function to the specified editor instance.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addMCEControl (<HTMLElement> replace_element, <string> form_element_name, <DOMDocument> target_document)
+
+
+
+ Adds a TinyMCE editor control instance to a specific form element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addMenu (<string> n, <TinyMCE_Menu> m)
+
+
+
+ Adds a floating menu instance to TinyMCE.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addPlugin (n, <TinyMCE_Plugin> p)
+
+
+
+ Adds the specified plugin to the list of loaded plugins, this will also setup the baseURL
+ property of the plugin.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ addSelectAccessibility (<DOMEvent> e, <HTMLElement> s, <DOMWindow> w)
+
+
+
+ Adds accessibility keydown handler to the specified select element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addTheme (&l<TinyMCE_Theme> t;string> n, t)
+
+
+
+ Adds the specified theme in to the list of loaded themes.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ addToLang (<string> prefix, <Array> ar)
+
+
+
+ Adds language items to the global language array.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ applyTemplate (<string> h, <Array> as)
+
+
+
+ Replaces language, args and settings variables in a HTML string.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ callFunc (<<<Array> a href="TinyMCE_Control.html">TinyMCE_Control> ins, <string> p, <string> n, <int> m, a)
+
+
+
+ Executes callback chain.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ cancelEvent (<DOMEvent> e)
+
+
+
+ Cancels the specified event, this will disable the event from be passed to other listeners in event chain.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ cleanupAnchors (<DOMDocument> doc)
+
+
+
+ Moves the contents of a anchor outside and after the anchor.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ cleanupEventStr (<string> s)
+
+
+
+ Removes MSIE 5.5 specific event wrapper function form a event string.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ cleanupHTMLCode (<string> s)
+
+
+
+ Makes some preprocessing cleanup routines on the specified HTML string.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ clearArray (a)
+
+
+
+ Returns a cleared array, since some external libraries tend to extend the Array core object
+ arrays needs to be cleaned from these extended functions.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ closeWindow (<DOMWindow> win)
+
+
+
+ Closes the specified window.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ compressStyle (<Array> ar, <string> pr, <string> sf, <string> res)
+
+
+
+ Compresses larger styles into a smaller.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ confirmAdd (<DOMEvent> e, <Array> settings)
+
+
+
+ Displays a confirm dialog when a user clicks/focus a textarea that is to be converted into
+ a TinyMCE instance.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ convertAbsoluteURLToRelativeURL (<string> base_url, <string> url_to_relative)
+
+
+
+ Converts an absolute path to relative path.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ convertAllRelativeURLs (<HTMLElement> body)
+
+
+
+ Converts all img and a element URLs to absolute URLs.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ convertFontsToSpans (<DOMDocument> doc)
+
+
+
+ Convers fonts to spans in the specified document.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ convertHexToRGB (<string> s)
+
+
+
+ Returns a rgb(n,n,n) string from a hexadecimal value.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ convertRelativeToAbsoluteURL (<string> base_url, <string> relative_url)
+
+
+
+ Converts an relative path to absolute path.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ convertRGBToHex (<string> s, <boolean> k)
+
+
+
+ Returns a hexadecimal version of the specified rgb(1,2,3) string.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ convertSpansToFonts (<DOMDocument> doc)
+
+
+
+ Converts span elements to font elements in the specified document instance.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ convertURL (<string> url, <HTMLElement> node, <boolean> on_save)
+
+
+
+ Converts the specified URL based in TinyMCE configuration settings.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ debug ()
+
+
+
+ Debugs the specified message to a screen.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ dispatchCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+
+
+ Dispatches the specified callback on all options, plugins and themes.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ entityDecode (<string> s)
+
+
+
+ HTML entity decode a string, replaces < with <.
+
+
+
+
+
+
+ object
+
+
+
+
+
+ evalFunc (<string> f, <int> idx, <Array> a)
+
+
+
+ Evaluates the specified function and uses the array of arguments.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ execCommand (<string> command, <boolean> user_interface, <object> value)
+
+
+
+ Executes a command on the selected or last selected TinyMCE editor control instance.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ execCommandCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+
+
+ Executes the specified execcommand callback on all options, plugins and themes.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ execInstanceCommand (<string> editor_id, <string> command, <boolean> user_interface, <object> value, <boolean> focus)
+
+
+
+ Executes a command on a specific editor instance by id.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ executeCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+
+
+ Executes the specified callback on all options, plugins and themes.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ explode (<string> d, <string> s)
+
+
+
+ Splits a string by the specified delimiter and skips any empty items.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ extend (<Object> p, <Object> np)
+
+
+
+ Extends the specified prototype with new methods.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ fixGeckoBaseHREFBug (<boolean> m, <HTMLElement> e, <string> h)
+
+
+
+ Fixes a Gecko specific bug where href, src attribute values gets converted incorrectly
+ when inserted into editor.
+
+
+
+
+
+
+ TinyMCE_ElementPosition
+
+
+
+
+
+ getAbsPosition (<HTMLNode> n)
+
+
+
+ Returns the absolute x, y position of a node.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getAttrib (<HTMLElement> elm, <string> name, <string> default_value)
+
+
+
+ Returns the attribute value of a element or the default value if it wasn't found.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getButtonHTML (<string> id, <string> lang, <string> img, <string> cmd, <string> ui, <string> val)
+
+
+
+ Returns the HTML code for a normal button control.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getContent (<string> editor_id)
+
+
+
+ Returns the HTML contents of the specified editor instance id.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getControlHTML (<string> c)
+
+
+
+ Returns the HTML for the specified control this will loop through
+ the theme and all plugins inorder to find the control.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ getCSSClasses (<string> editor_id, <DOMDocument> doc)
+
+
+
+ Returns a array of CSS classes that is available in a document.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getEditorId (<string> form_element)
+
+
+
+ Returns the editor instance id of a specific form element.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getElementByAttributeValue (<HTMLElement> n, <string> e, <string> a, <string> v)
+
+
+
+ Returns a element by a specific attribute and it's value.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ getElementsByAttributeValue (<HTMLElement> n, <string> e, <string> a, <string> v)
+
+
+
+ Returns a element array by a specific attribute and it's value.
+
+
+
+
+
+
+ TinyMCE_Control
+
+
+
+
+
+ getInstanceById (<string> editor_id)
+
+
+
+ Returns a TinyMCE editor instance by the specified editor id or null if it wasn't found.
+
+
+
+
+
+
+ object
+
+
+
+
+
+ getLang (<string> name, <string> default_value, <boolean> parse_entities, <Array> va)
+
+
+
+ Returns a language variable value from the language packs.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ getNodeTree (&l<int> t;HTMLNode> n, <Array> na, t, <string> nn)
+
+
+
+ Returns a array of nodes selected retrived from the child nodes of the specified node.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getOuterHTML (<HTMLElement> e)
+
+
+
+ Returns the outer HTML of a element, this uses the outerHTML
+ property in MSIE and Opera and a workaround for Gecko.
+
+
+
+
+
+
+ object
+
+
+
+
+
+ getParam (<string> name, <string> default_value, <boolean> strip_whitespace, <string> split_chr)
+
+
+
+ Returns a specific configuration setting or the default value if it wasn't found.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getParentBlockElement (<HTMLNode> n)
+
+
+
+ Returns the first block element parent of the specified node.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getParentElement (<HTMLNode> node, <string> names, <string> attrib_name, <string> attrib_value)
+
+
+
+ Returns the parent element of the specified node based on the search criteria.
+
+
+
+
+
+
+ DOMNode
+
+
+
+
+
+ getParentNode (<DOMNode> n, <function> f)
+
+
+
+ Returns a node by the specified selector function.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getVisualAidClass (<string> class_name, <boolean> state)
+
+
+
+ Returns the visual aid class string, this will add/remove the visual aid class.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ getWindowArg (<string> n, d)
+
+
+
+ Returns the window argument to be passed to TinyMCE popup.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ handleEvent (<DOMEvent> e)
+
+
+
+ Event handler function that gets executed each time a event occurs in a TinyMCE editor control instance.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ handleVisualAid (<HTMLElement> el, <boolean> deep, <boolean> state, <TinyMCE_Control > inst, skip_dispatch)
+
+
+
+ Adds visual aid classes to all elements that need them recursive in the DOM tree.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ hasMenu (<string> n)
+
+
+
+ Checks if the specified menu by name is added to TinyMCE.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ hasPlugin (<string> n)
+
+
+
+ Returns true/false if the specified plugin is loaded or not.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ hasTheme (<string> n)
+
+
+
+ Returns true/false if the specified theme is loaded or not.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ importCSS (<DOMDocument> doc, <string> css)
+
+
+
+ Imports a CSS file into a allready loaded document.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ importPluginLanguagePack (<string> name, <string> valid_languages)
+
+
+
+ Loads a plugin specific language pack.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ importThemeLanguagePack (<string> name)
+
+
+
+ Loads a theme specific language pack.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ init (settings)
+
+
+
+ Initializes TinyMCE with the specific configuration settings.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ insertAfter (<HTMLNode> n, <HTMLNode> r)
+
+
+
+ Inserts a node after the specific node.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ isBlockElement (<HTMLNode> n)
+
+
+
+ Returns true/false if the specified node is a block element or not.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ isInstance (<object> o)
+
+
+
+ Returns true/false if a specific object is a TinyMCE_Control instance or not.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ loadCSS (<string> url)
+
+
+
+ Loads the specified CSS by writing the a link tag to the current page.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ loadPlugin (<string> n, <string> u)
+
+
+
+ Load plugin from external URL.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ loadScript (<string> url)
+
+
+
+ Loads the specified script by writing the a script tag to the current page.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ nextNode (<HTMLNode> e, <string> n)
+
+
+
+ Finds any element after the current one by name.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ onLoad ()
+
+
+
+ Gets executed when the page loads or get intitialized.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ onMouseMove ()
+
+
+
+ Mouse move handler function, this will be executed each time
+ the mouse is moved within a editor instance.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ openWindow (<Array> template, <Array> args)
+
+
+
+ Opens a popup window based in the specified input data.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ parseStyle (<string> str)
+
+
+
+ Parses the specified HTML style data.
+
+
+
+
+
+
+ TinyMCE_URL_Item
+
+
+
+
+
+ parseURL (<string> url_str)
+
+
+
+ Parses a URL in to its diffrent components.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ prevNode (<HTMLNode> e, <string> n)
+
+
+
+ Finds any previous element by name.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ queryInstanceCommandState (<string> editor_id, <string> command)
+
+
+
+ Queries a command state for a specific command on a specific editor instance.
+
+
+
+
+
+
+ object
+
+
+
+
+
+ queryInstanceCommandValue (<string> editor_id, <string> command)
+
+
+
+ Queries a command value for a specific command on a specific editor instance.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ regexpReplace (<string> in_str, <string> reg_exp, <string> replace_str, opts)
+
+
+
+ Regexp replaces the contents of a string.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ removeCSSClass (<HTMLElement> e, c)
+
+
+
+ Removes the specified CSS class from the element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ removeMCEControl (<string> editor_id)
+
+
+
+ Removes a TinyMCE editor control instance by id.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ removeTinyMCEFormElements (<HTMLElement> form_obj)
+
+
+
+ Removes/disables TinyMCE built in form elements such as select boxes for font sizes etc.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ renameElement (<HTMLElement> e, <string> n, <DOMDocument> d)
+
+
+
+ Renames the specified element to the specified name.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ replaceVar (<string> h, <string> r, <string> v)
+
+
+
+ Replaces a specific variable in the string with a nother string.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ resetForm (<int> form_index)
+
+
+
+ Resets a forms TinyMCE instances based on form index.
+
+
+
+
+
+
+ Array
+
+
+
+
+
+ selectNodes (<DOMNode> n, <function> f, <Array> a)
+
+
+
+ Returns a array of nodes when the specified function matches a node.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ serializeStyle (<Array> ar)
+
+
+
+ Serializes the specified style item name/value array into a HTML string.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ serializeURL (<TinyMCE_URL_Item> up)
+
+
+
+ Serializes the specified URL object into a string.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setAttrib (<HTMLElement> element, <string> name, <string> value, <boolean> fix_value)
+
+
+
+ Sets the attribute value for a specific attribute.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setContent (<string> h)
+
+
+
+ Sets the HTML contents of the selected editor instance.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setInnerHTML (<HTMLElement> e, <string> h)
+
+
+
+ Sets the innerHTML property of a element, this function also
+ fixes a MSIE bug where the first comment is removed.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setOuterHTML (<HTMLElement> e, <string> h)
+
+
+
+ Sets the outer HTML of a element, this uses the outerHTML
+ property in MSIE and Opera and a workaround for Gecko.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setPluginBaseURL (<string> n, <string> u)
+
+
+
+ Sets the baseURL of the specified plugin, this is useful if the plugin is loaded from
+ a external location.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setStyleAttrib (<HTMLElement> elm, <string> name, <string> value)
+
+
+
+ Sets a style attribute item value.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setupContent (<string> editor_id)
+
+
+
+ Setups the contents of TinyMCE editor instance and fills it with contents.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setWindowArg (<string> n, <string> v)
+
+
+
+ Sets the window argument to be passed to TinyMCE popup.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ storeAwayURLs (<string> s)
+
+
+
+ Stores away the src and href attribute values in separate mce_src and mce_href attributes.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ submitPatch ()
+
+
+
+ Piggyback onsubmit event handler function, this will remove/hide the TinyMCE specific form elements
+ call triggerSave to fill the textarea with the correct contents then call the old piggy backed event handler.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ switchClass (<HTMLElement> ei, <string> c)
+
+
+
+ Switches the CSS class of the specified element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ triggerNodeChange (<boolean> focus, <boolean> setup_content)
+
+
+
+ Triggers a nodeChange event to every theme and plugin.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ triggerSave (<boolean> skip_cleanup, <boolean> skip_callback)
+
+
+
+ Moves the contents from a TinyMCE editor control instance to the hidden textarea
+ that got replaced with TinyMCE.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ trim (<string> s)
+
+
+
+ Removes all prefix, suffix whitespace of a string.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ unloadHandler ()
+
+
+
+ Unload document event handler function.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ updateContent (<string> form_element_name)
+
+
+
+ Moves the contents from the hidden textarea to the editor that gets inserted.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ xmlEncode (<string> s)
+
+
+
+ Encodes the string to raw XML entities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ buttonMap
+ Object buttonMap
+
+
+
+
+ configs
+ Object configs
+
+
+
+
+ currentConfig
+ Object currentConfig
+
+
+
+
+ dialogCounter
+ Object dialogCounter
+
+
+
+
+ eventHandlers
+ Object eventHandlers
+
+
+
+
+ idCounter
+ Object idCounter
+
+
+
+
+ instances
+ Object instances
+
+
+
+
+ isGecko
+ Object isGecko
+
+
+
+
+ isLoaded
+ Object isLoaded
+
+
+
+
+ isMac
+ Object isMac
+
+
+
+
+ isMSIE
+ Object isMSIE
+
+
+
+
+ isMSIE5
+ Object isMSIE5
+
+
+
+
+ isMSIE5_0
+ Object isMSIE5_0
+
+
+
+
+ isNS7
+ Object isNS7
+
+
+
+
+ isNS71
+ Object isNS71
+
+
+
+
+ isOpera
+ Object isOpera
+
+
+
+
+ isSafari
+ Object isSafari
+
+
+
+
+ loadedFiles
+ Object loadedFiles
+
+
+
+
+ loadedPlugins
+ Object loadedPlugins
+
+
+
+
+ majorVersion
+ Object majorVersion
+
+
+
+
+ menus
+ Object menus
+
+
+
+
+ minorVersion
+ Object minorVersion
+
+
+
+
+ plugins
+ Object plugins
+
+
+
+
+ releaseDate
+ Object releaseDate
+
+
+
+
+ switchClassCache
+ Object switchClassCache
+
+
+
+
+ themes
+ Object themes
+
+
+
+
+ windowArgs
+ Object windowArgs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Engine
+TinyMCE_Engine ()
+
+
+
+ Core engine class for TinyMCE, a instance of this class is available as a global called tinyMCE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ _getElementById
+ HTMLElement _getElementById (<string> i<DOMDocument> d, d)
+
+ Returns a element by id, this will also search the form names to match the id.
+
+
+
+
+
+ Parameters:
+
+
+
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML element that matches the id.
+
+
+
+
+
+
+
+
+
+
+ _removeInternal
+ void _removeInternal (<DOMNode> n)
+
+ Removes any internal content inserted by regexps.
+
+
+
+
+
+ Parameters:
+
+ n - Node to remove internal content from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ accessibleEventHandler
+ Object accessibleEventHandler (<DOMEvent> e)
+
+ Accessibility handler that gets executed when the user hits a key in a select element.
+ This handler trams the enter/return or space key and then executes the onchange event handler.
+
+
+
+
+
+ Parameters:
+
+ e - DOM event object instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addButtonMap
+ void addButtonMap (<string> m)
+
+ Adds a list of buttons available in the tiled button image used by the button_tile_map option.
+
+
+
+
+
+ Parameters:
+
+ m - Comma separated list of buttons that are available in tiled image.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addCSSClass
+ string addCSSClass (<HTMLElement> e, c, b)
+
+ Adds a CSS class to the specified element. It will remove any previous item with the same name
+ so adding a class that already exists will move it to the end.
+
+
+
+
+
+ Parameters:
+
+ e - HTML element to add CSS class to.
+
+
+ string - ] c CSS class to add to HTML element.
+
+
+ boolean - ] b Optional parameter, if set to true, class will be added to the beginning.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Returns the new class attribute value.
+
+
+
+
+
+
+
+
+
+
+ addEvent
+ void addEvent (<HTMLElement> o, <string> n, <function> h)
+
+ Adds a event handler function to the specified object.
+
+
+
+
+
+ Parameters:
+
+ o - Object to add event handler to.
+
+
+ n - Event name to listen to for example "click".
+
+
+ h - Function handler to execute when event occurs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addEventHandlers
+ void addEventHandlers (<inst> inst)
+
+ Adds the handleEvent function to the specified editor instance.
+
+
+
+
+
+ Parameters:
+
+ inst - Editor control instance to add event handler to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addMCEControl
+ void addMCEControl (<HTMLElement> replace_element, <string> form_element_name, <DOMDocument> target_document)
+
+ Adds a TinyMCE editor control instance to a specific form element.
+
+
+
+
+
+ Parameters:
+
+ replace_element - HTML element object to replace.
+
+
+ form_element_name - HTML form element name,
+
+
+ target_document - Target document that holds the element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addMenu
+ void addMenu (<string> n, <TinyMCE_Menu> m)
+
+ Adds a floating menu instance to TinyMCE.
+
+
+
+
+
+ Parameters:
+
+
+
+ m - TinyMCE menu instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addPlugin
+ void addPlugin (n, <TinyMCE_Plugin> p)
+
+ Adds the specified plugin to the list of loaded plugins, this will also setup the baseURL
+ property of the plugin.
+
+
+
+
+
+ Parameters:
+
+ p - Plugin instance to add.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addSelectAccessibility
+ Object addSelectAccessibility (<DOMEvent> e, <HTMLElement> s, <DOMWindow> w)
+
+ Adds accessibility keydown handler to the specified select element.
+
+
+
+
+
+ Parameters:
+
+ e - Event that gets passed when the element is focused.
+
+
+ s - Select element that the keydown handler gets added to.
+
+
+ w - DOM window reference to add.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addTheme
+ void addTheme (&l<TinyMCE_Theme> t;string> n, t)
+
+ Adds the specified theme in to the list of loaded themes.
+
+
+
+
+
+ Parameters:
+
+ n - Theme name/id to add the object reference to.
+
+
+ t - Theme instance to add to the loaded list.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addToLang
+ void addToLang (<string> prefix, <Array> ar)
+
+ Adds language items to the global language array.
+
+
+
+
+
+ Parameters:
+
+ prefix - Prefix string to add infront of every array item before adding it.
+
+
+ ar - Language item array to add to global language array.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ applyTemplate
+ string applyTemplate (<string> h, <Array> as)
+
+ Replaces language, args and settings variables in a HTML string.
+
+
+
+
+
+ Parameters:
+
+ h - HTML string to replace language variables in.
+
+
+ as - Optional arguments array to take variables from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML string with replaced varliables.
+
+
+
+
+
+
+
+
+
+
+ callFunc
+ boolean callFunc (<<<Array> a href="TinyMCE_Control.html">TinyMCE_Control> ins, <string> p, <string> n, <int> m, a)
+
+ Executes callback chain. Callback TinyMCE_Engine.prototype.order = Option; Plugins, Themes.
+
+
+
+
+
+ Parameters:
+
+ ins - TinyMCE editor control instance to execute callback on.
+
+
+ p - TinyMCE callback parameter name.
+
+
+ n - Function name to execute.
+
+
+ m - Execution mode value, 0 = no chain, 1 = event chain, 2 = execcommand chain.
+
+
+ a - Array with function arguments.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true - if the callback was executed, false if it wasn't.
+
+
+
+
+
+
+
+
+
+
+ cancelEvent
+ void cancelEvent (<DOMEvent> e)
+
+ Cancels the specified event, this will disable the event from be passed to other listeners in event chain.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cleanupAnchors
+ void cleanupAnchors (<DOMDocument> doc)
+
+ Moves the contents of a anchor outside and after the anchor. Only if the anchor doesn't
+ have a href.
+
+
+
+
+
+ Parameters:
+
+ doc - DOM document instance to fix anchors in.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cleanupEventStr
+ string cleanupEventStr (<string> s)
+
+ Removes MSIE 5.5 specific event wrapper function form a event string.
+ This will also remove the event blocker if it's added in front of the event.
+
+
+
+
+
+ Parameters:
+
+ s - String to replace event data in.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Replaced string value.
+
+
+
+
+
+
+
+
+
+
+ cleanupHTMLCode
+ string cleanupHTMLCode (<string> s)
+
+ Makes some preprocessing cleanup routines on the specified HTML string.
+ This includes forcing some tags to be open so MSIE doesn't fail. Forcing other to close and
+ padding paragraphs with non breaking spaces. This function is used when the editor gets
+ initialized with content.
+
+
+
+
+
+ Parameters:
+
+ s - HTML string to cleanup.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ clearArray
+ Array clearArray (a)
+
+ Returns a cleared array, since some external libraries tend to extend the Array core object
+ arrays needs to be cleaned from these extended functions. So this function simply sets any
+ named properties back to null.
+
+
+
+
+
+ Parameters:
+
+ Name - /Value array to clear.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Cleared name/value array.
+
+
+
+
+
+
+
+
+
+
+ closeWindow
+ void closeWindow (<DOMWindow> win)
+
+ Closes the specified window. This function is deprecated and should be replaced with
+ tinyMCEPopup.close();.
+
+
+
+
+
+ Parameters:
+
+ win - Window reference to close.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ compressStyle
+ void compressStyle (<Array> ar, <string> pr, <string> sf, <string> res)
+
+ Compresses larger styles into a smaller. Since MSIE automaticly converts
+ border: 1px solid red to border-left: 1px solid red, border-righ: 1px solid red and so forth.'
+ This will bundle them together again if the information is the same in each item.
+
+
+
+
+
+ Parameters:
+
+ ar - Style name/value array with items.
+
+
+ pr - Style item prefix to bundle for example border.
+
+
+ sf - Style item suffix to bunlde for example -width or -width.
+
+
+ res - Result name, for example border-width.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ confirmAdd
+ void confirmAdd (<DOMEvent> e, <Array> settings)
+
+ Displays a confirm dialog when a user clicks/focus a textarea that is to be converted into
+ a TinyMCE instance.
+
+
+
+
+
+ Parameters:
+
+ e - DOM event instance.
+
+
+ settings - Name/Value array of initialization settings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ convertAbsoluteURLToRelativeURL
+ string convertAbsoluteURLToRelativeURL (<string> base_url, <string> url_to_relative)
+
+ Converts an absolute path to relative path.
+
+
+
+
+
+ Parameters:
+
+ base_url - URL to make as a base path, URLs will be converted relative from this point.
+
+
+ url_to_relative - URL to convert into a relative URL.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Relative URL based in input.
+
+
+
+
+
+
+
+
+
+
+ convertAllRelativeURLs
+ void convertAllRelativeURLs (<HTMLElement> body)
+
+ Converts all img and a element URLs to absolute URLs. This will use the mce_src or mce_href attribute values
+ if they are provided. This function is used when the editor is initialized.
+
+
+
+
+
+ Parameters:
+
+ body - HTML element to convert all URLs in.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ convertFontsToSpans
+ void convertFontsToSpans (<DOMDocument> doc)
+
+ Convers fonts to spans in the specified document.
+ Todo: Move this function into a XHTML plugin or simmilar.
+
+
+
+
+
+ Parameters:
+
+ doc - Document instance to convert fonts in.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ convertHexToRGB
+ string convertHexToRGB (<string> s)
+
+ Returns a rgb(n,n,n) string from a hexadecimal value.
+
+
+
+
+
+ Parameters:
+
+ s - Hexadecimal string to parse.
+
+
+
+
+
+
+
+
+ Returns:
+
+ rgb(n,n,n) string from a hexadecimal value.
+
+
+
+
+
+
+
+
+
+
+ convertRelativeToAbsoluteURL
+ string convertRelativeToAbsoluteURL (<string> base_url, <string> relative_url)
+
+ Converts an relative path to absolute path.
+
+
+
+
+
+ Parameters:
+
+ base_url - URL to make as a base path, URLs will be converted absolute from this point.
+
+
+ relative_url - URL to convert into a absolute URL.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Absolute URL based in input.
+
+
+
+
+
+
+
+
+
+
+ convertRGBToHex
+ string convertRGBToHex (<string> s, <boolean> k)
+
+ Returns a hexadecimal version of the specified rgb(1,2,3) string.
+
+
+
+
+
+ Parameters:
+
+ s - RGB string to parse, if this doesn't isn't a rgb(n,n,n) it will passthrough the string.
+
+
+ k - Keep before/after contents. If enabled contents before after the rgb(n,n,n) will be intact.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Hexadecimal version of the specified rgb(1,2,3) string.
+
+
+
+
+
+
+
+
+
+
+ convertSpansToFonts
+ void convertSpansToFonts (<DOMDocument> doc)
+
+ Converts span elements to font elements in the specified document instance.
+ Todo: Move this function into a XHTML plugin or simmilar.
+
+
+
+
+
+ Parameters:
+
+ doc - Document instance to convert spans in.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ convertURL
+ string convertURL (<string> url, <HTMLElement> node, <boolean> on_save)
+
+ Converts the specified URL based in TinyMCE configuration settings.
+
+
+
+
+
+ Parameters:
+
+ url - URL to convert based on config.
+
+
+ node - HTML element that holds the URL.
+
+
+ on_save - Is this convertion the final output URL.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Converted URL string.
+
+
+
+
+
+
+
+
+
+
+ debug
+ void debug ()
+
+ Debugs the specified message to a screen.
+
+
+
+
+
+ Parameters:
+
+ Numerous - arguments that will be outputed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dispatchCallback
+ Object dispatchCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+ Dispatches the specified callback on all options, plugins and themes. This will not
+ chain them, so all functions callbacks will be executed regardless if the return true/false.
+
+
+
+
+
+ Parameters:
+
+ i - TinyMCE editor control instance to execute callback on.
+
+
+ p - TinyMCE callback parameter to execute.
+
+
+ n - Function name to execute.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if they where dispatched.
+
+
+
+
+
+
+
+
+
+
+ entityDecode
+ string entityDecode (<string> s)
+
+ HTML entity decode a string, replaces < with <.
+
+
+
+
+
+ Parameters:
+
+ s - Entity string to decode into normal string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Entity decoded string.
+
+
+
+
+
+
+
+
+
+
+ evalFunc
+ object evalFunc (<string> f, <int> idx, <Array> a)
+
+ Evaluates the specified function and uses the array of arguments.
+
+
+
+
+
+ Parameters:
+
+ f - Function reference to execute.
+
+
+ idx - Index in array to start grabbing arguments from.
+
+
+ a - Array of function arguments.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Value returned from the evaluated function.
+
+
+
+
+
+
+
+
+
+
+ execCommand
+ void execCommand (<string> command, <boolean> user_interface, <object> value)
+
+ Executes a command on the selected or last selected TinyMCE editor control instance. This function also handles
+ some non instance specific commands like mceAddControl, mceRemoveControl, mceHelp or mceFocus.
+
+
+
+
+
+ Parameters:
+
+ command - Command name to execute, for example mceLink or Bold.
+
+
+ user_interface - True/false state if a UI (dialog) should be presented or not.
+
+
+ value - Optional command value, this can be anything.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ execCommandCallback
+ Object execCommandCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+ Executes the specified execcommand callback on all options, plugins and themes. This will
+ chain them, so callback chain will be broken if one function returns true.
+
+
+
+
+
+ Parameters:
+
+ i - TinyMCE editor control instance to execute callback on.
+
+
+ p - TinyMCE callback parameter to execute.
+
+
+ n - Function name to execute.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if a callback was executed.
+
+
+
+
+
+
+
+
+
+
+ execInstanceCommand
+ void execInstanceCommand (<string> editor_id, <string> command, <boolean> user_interface, <object> value, <boolean> focus)
+
+ Executes a command on a specific editor instance by id.
+
+
+
+
+
+ Parameters:
+
+ editor_id - TinyMCE editor control instance id to perform comman on.
+
+
+ command - Command name to execute, for example mceLink or Bold.
+
+
+ user_interface - True/false state if a UI (dialog) should be presented or not.
+
+
+ value - Optional command value, this can be anything.
+
+
+ focus - True/false if the editor instance should be focused first.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ executeCallback
+ Object executeCallback (<TinyMCE_Control > i, <string> p, <string> n)
+
+ Executes the specified callback on all options, plugins and themes. This will
+ chain them, so callback chain will be broken if one function returns false.
+
+
+
+
+
+ Parameters:
+
+ i - TinyMCE editor control instance to execute callback on.
+
+
+ p - TinyMCE callback parameter to execute.
+
+
+ n - Function name to execute.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if a callback was executed.
+
+
+
+
+
+
+
+
+
+
+ explode
+ Array explode (<string> d, <string> s)
+
+ Splits a string by the specified delimiter and skips any empty items.
+
+
+
+
+
+ Parameters:
+
+ d - Delimiter to split by.
+
+
+
+
+
+
+
+
+
+
+ Returns:
+
+ Array with chunks from string.
+
+
+
+
+
+
+
+
+
+
+ extend
+ Object extend (<Object> p, <Object> np)
+
+ Extends the specified prototype with new methods.
+
+
+
+
+
+ Parameters:
+
+ p - Prototype to extend with new methods.
+
+
+ np - New prototype to extend the other one with.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Extended prototype array.
+
+
+
+
+
+
+
+
+
+
+ fixGeckoBaseHREFBug
+ string fixGeckoBaseHREFBug (<boolean> m, <HTMLElement> e, <string> h)
+
+ Fixes a Gecko specific bug where href, src attribute values gets converted incorrectly
+ when inserted into editor. This function will replace all src, href with mce_tsrc and mce_thref
+ to keep the values from chaging when they get inserted.
+
+
+
+
+
+ Parameters:
+
+ m - Mode state, true is to replace the src, href attributes to mce_tsrc and mce_thref.
+
+
+ e - HTML element to replace them in. (Will be used if m is 0)
+
+
+ h - HTML code to replace them in. (Will be used if m is 1)
+
+
+
+
+
+
+
+
+ Returns:
+
+ Converted string or the specified HTML value depending on mode.
+
+
+
+
+
+
+
+
+
+
+ getAbsPosition
+ TinyMCE_ElementPosition getAbsPosition (<HTMLNode> n)
+
+ Returns the absolute x, y position of a node. The position will be returned in a object with
+ two properties absLeft and absTop.
+
+
+
+
+
+ Parameters:
+
+ n - HTML element to get x, y position from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Absolute position of the specified element.
+
+
+
+
+
+
+
+
+
+
+ getAttrib
+ string getAttrib (<HTMLElement> elm, <string> name, <string> default_value)
+
+ Returns the attribute value of a element or the default value if it wasn't found.
+
+
+
+
+
+ Parameters:
+
+ elm - HTML element to get attribute from.
+
+
+ name - Attribute name to retrive.
+
+
+ default_value - Optional default value to return, this value defaults to a empty string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Attribute value or default value if it wasn't found in element.
+
+
+
+
+
+
+
+
+
+
+ getButtonHTML
+ string getButtonHTML (<string> id, <string> lang, <string> img, <string> cmd, <string> ui, <string> val)
+
+ Returns the HTML code for a normal button control.
+
+
+
+
+
+ Parameters:
+
+ id - Button control id, this will be the suffix for the element id, the prefix is the editor id.
+
+
+ lang - Language variable key name to insert as the title/alt of the button image.
+
+
+ img - Image URL to insert, {$themeurl} and {$pluginurl} will be replaced.
+
+
+ cmd - Command to execute when the user clicks the button.
+
+
+ ui - Optional user interface boolean for command.
+
+
+ val - Optional value for command.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML code for a normal button based in input information.
+
+
+
+
+
+
+
+
+
+
+ getContent
+ string getContent (<string> editor_id)
+
+ Returns the HTML contents of the specified editor instance id.
+
+
+
+
+
+ Parameters:
+
+ editor_id - Editor instance id to retrive HTML code from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML contents of editor id or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getControlHTML
+ string getControlHTML (<string> c)
+
+ Returns the HTML for the specified control this will loop through
+ the theme and all plugins inorder to find the control. The callback for each
+ theme and plugin is called getControlHTML.
+
+
+
+
+
+ Parameters:
+
+ c - Control name/id to get HTML code for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML code for the specified control or empty string if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getCSSClasses
+ Array getCSSClasses (<string> editor_id, <DOMDocument> doc)
+
+ Returns a array of CSS classes that is available in a document.
+ TinyMCE_Engine.prototype.Todo = Fix;this one, it's so ugly. :)
+
+
+
+
+
+ Parameters:
+
+ editor_id - Editor id to get CSS classes from.
+
+
+ doc - DOM document to get the CSS classes from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Array of CSS classes that is available in a document.
+
+
+
+
+
+
+
+
+
+
+ getEditorId
+ string getEditorId (<string> form_element)
+
+ Returns the editor instance id of a specific form element.
+
+
+
+
+
+ Parameters:
+
+ form_element - Form element name to get instance id for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ TinyMCE editor instance id or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getElementByAttributeValue
+ HTMLElement getElementByAttributeValue (<HTMLElement> n, <string> e, <string> a, <string> v)
+
+ Returns a element by a specific attribute and it's value.
+
+
+
+
+
+ Parameters:
+
+ n - Element to search in.
+
+
+ e - Element name to search for.
+
+
+ a - Attribute name to search for.
+
+
+ v - Attribute value to search for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML element that matched the criterias or null on failure.
+
+
+
+
+
+
+
+
+
+
+ getElementsByAttributeValue
+ Array getElementsByAttributeValue (<HTMLElement> n, <string> e, <string> a, <string> v)
+
+ Returns a element array by a specific attribute and it's value.
+
+
+
+
+
+ Parameters:
+
+ n - Element to search in.
+
+
+ e - Element name to search for.
+
+
+ a - Attribute name to search for.
+
+
+ v - Attribute value to search for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML element array that matched the criterias or null on failure.
+
+
+
+
+
+
+
+
+
+
+ getInstanceById
+ TinyMCE_Control getInstanceById (<string> editor_id)
+
+ Returns a TinyMCE editor instance by the specified editor id or null if it wasn't found.
+
+
+
+
+
+ Parameters:
+
+ editor_id - Editor id to get instance for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ TinyMCE editor control instance or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getLang
+ object getLang (<string> name, <string> default_value, <boolean> parse_entities, <Array> va)
+
+ Returns a language variable value from the language packs.
+
+
+
+
+
+ Parameters:
+
+ name - Name of the key to retrive.
+
+
+ default_value - Optional default value to return if it wasn't found.
+
+
+ parse_entities - Is HTML entities to be resolved or not.
+
+
+ va - Optional name/value array of variables to replace in language string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Language string value could be a number if it's a relative dimenstion.
+
+
+
+
+
+
+
+
+
+
+ getNodeTree
+ Array getNodeTree (&l<int> t;HTMLNode> n, <Array> na, t, <string> nn)
+
+ Returns a array of nodes selected retrived from the child nodes of the specified node.
+
+
+
+
+
+ Parameters:
+
+ n - Node to get children from.
+
+
+ na - Array to fill with children.
+
+
+
+
+ nn - Node name of items to retrive.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getOuterHTML
+ string getOuterHTML (<HTMLElement> e)
+
+ Returns the outer HTML of a element, this uses the outerHTML
+ property in MSIE and Opera and a workaround for Gecko.
+
+
+
+
+
+ Parameters:
+
+ e - HTML element to get outerHTML from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getParam
+ object getParam (<string> name, <string> default_value, <boolean> strip_whitespace, <string> split_chr)
+
+ Returns a specific configuration setting or the default value if it wasn't found.
+
+
+
+
+
+ Parameters:
+
+ name - Configuration setting to get.
+
+
+ default_value - Default value to return if it wasn't found.
+
+
+ strip_whitespace - Optional remove all whitespace.
+
+
+ split_chr - Split char/regex/string.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Number, string or other object based in parameter and default_value.
+
+
+
+
+
+
+
+
+
+
+ getParentBlockElement
+ HTMLElement getParentBlockElement (<HTMLNode> n)
+
+ Returns the first block element parent of the specified node.
+
+
+
+
+
+ Parameters:
+
+ n - Node get parent block element for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ First block element parent of the specified node or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getParentElement
+ HTMLElement getParentElement (<HTMLNode> node, <string> names, <string> attrib_name, <string> attrib_value)
+
+ Returns the parent element of the specified node based on the search criteria.
+
+
+
+
+
+ Parameters:
+
+ node - Node to get parent element of.
+
+
+ names - Comma separated list of element names to get.
+
+
+ attrib_name - Optional attribute name to match.
+
+
+ attrib_value - Optional attribute value to match.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTMLElement or null based on search criteras.
+
+
+
+
+
+
+
+
+
+
+ getParentNode
+ DOMNode getParentNode (<DOMNode> n, <function> f)
+
+ Returns a node by the specified selector function. This function will
+ loop through all parent nodes and call the specified function for each node.
+ If the function then returns true it will stop the execution and return that node.
+
+
+
+
+
+ Parameters:
+
+ n - HTML node to search parents on.
+
+
+ f - Selection function to execute on each node.
+
+
+
+
+
+
+
+
+ Returns:
+
+ DOMNode or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ getVisualAidClass
+ string getVisualAidClass (<string> class_name, <boolean> state)
+
+ Returns the visual aid class string, this will add/remove the visual aid class.
+
+
+
+
+
+ Parameters:
+
+ class_name - Class name value to add/remove visual aid classes from.
+
+
+ state - true/false if the classes should be added or removed.
+
+
+
+
+
+
+
+
+ Returns:
+
+ New class value containing the visual aid classes or not.
+
+
+
+
+
+
+
+
+
+
+ getWindowArg
+ Object getWindowArg (<string> n, d)
+
+ Returns the window argument to be passed to TinyMCE popup.
+ TinyMCE_Engine.prototype.Use = tinyMCEPopup;.getWindowArg instead.
+
+
+
+
+
+ Parameters:
+
+ n - Window argument name.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Argument value or default value if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+
+
+ handleEvent
+ boolean handleEvent (<DOMEvent> e)
+
+ Event handler function that gets executed each time a event occurs in a TinyMCE editor control instance.
+ TinyMCE_Engine.prototype.Todo = Fix;the return statements so they return true or false.
+
+
+
+
+
+ Parameters:
+
+ e - DOM event object reference.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true - if the event is to be chained, false - if the event chain is to be canceled.
+
+
+
+
+
+
+
+
+
+
+ handleVisualAid
+ void handleVisualAid (<HTMLElement> el, <boolean> deep, <boolean> state, <TinyMCE_Control > inst, skip_dispatch)
+
+ Adds visual aid classes to all elements that need them recursive in the DOM tree.
+
+
+
+
+
+ Parameters:
+
+ el - HTML element to add visual aid classes to.
+
+
+ deep - Should they be added to all children aswell.
+
+
+ state - Should they be added or removed.
+
+
+ inst - TinyMCE editor control instance to add/remove them to/from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hasMenu
+ boolean hasMenu (<string> n)
+
+ Checks if the specified menu by name is added to TinyMCE.
+
+
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if it exists or not.
+
+
+
+
+
+
+
+
+
+
+ hasPlugin
+ boolean hasPlugin (<string> n)
+
+ Returns true/false if the specified plugin is loaded or not.
+
+
+
+
+
+ Parameters:
+
+ n - Plugin name to look for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the specified plugin is loaded or not.
+
+
+
+
+
+
+
+
+
+
+ hasTheme
+ boolean hasTheme (<string> n)
+
+ Returns true/false if the specified theme is loaded or not.
+
+
+
+
+
+ Parameters:
+
+ n - Theme name/id to check for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the specified theme is loaded or not.
+
+
+
+
+
+
+
+
+
+
+ importCSS
+ void importCSS (<DOMDocument> doc, <string> css)
+
+ Imports a CSS file into a allready loaded document. This will add a link element
+ to the head element of the document.
+
+
+
+
+
+ Parameters:
+
+ doc - DOM Document to load CSS into.
+
+
+ css - CSS File URL to load or comma separated list of files.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ importPluginLanguagePack
+ void importPluginLanguagePack (<string> name, <string> valid_languages)
+
+ Loads a plugin specific language pack.
+
+
+
+
+
+ Parameters:
+
+ name - Plugin name/id to load language pack for.
+
+
+ valid_languages - Comma separated list of valid languages for the plugin.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ importThemeLanguagePack
+ void importThemeLanguagePack (<string> name)
+
+ Loads a theme specific language pack.
+
+
+
+
+
+ Parameters:
+
+ name - Optional name of the theme to load language pack from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ init
+ void init (settings)
+
+ Initializes TinyMCE with the specific configuration settings. This method
+ may be called multiple times when multiple instances with diffrent settings is to be created.
+
+
+
+
+
+ Parameters:
+
+ Name - /Value array of initialization settings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insertAfter
+ void insertAfter (<HTMLNode> n, <HTMLNode> r)
+
+ Inserts a node after the specific node.
+
+
+
+
+
+ Parameters:
+
+ n - New node to insert.
+
+
+ r - Reference node to insert after.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ isBlockElement
+ boolean isBlockElement (<HTMLNode> n)
+
+ Returns true/false if the specified node is a block element or not.
+
+
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if the specified node is a block element or not.
+
+
+
+
+
+
+
+
+
+
+ isInstance
+ boolean isInstance (<object> o)
+
+ Returns true/false if a specific object is a TinyMCE_Control instance or not.
+
+
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if it's a control or not.
+
+
+
+
+
+
+
+
+
+
+ loadCSS
+ void loadCSS (<string> url)
+
+ Loads the specified CSS by writing the a link tag to the current page.
+ This will also check if the file has been loaded before. This function should only be used
+ when the page is loading.
+
+
+
+
+
+ Parameters:
+
+ url - CSS file URL to load or comma separated list of files.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ loadPlugin
+ void loadPlugin (<string> n, <string> u)
+
+ Load plugin from external URL.
+
+
+
+
+
+ Parameters:
+
+ n - Plugin name for example \"emotions\".
+
+
+ u - URL of plugin directory to load.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ loadScript
+ void loadScript (<string> url)
+
+ Loads the specified script by writing the a script tag to the current page.
+ This will also check if the file has been loaded before. This function should only be used
+ when the page is loading.
+
+
+
+
+
+ Parameters:
+
+ url - Script URL to load.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nextNode
+ HTMLElement nextNode (<HTMLNode> e, <string> n)
+
+ Finds any element after the current one by name. This will loop through the siblings
+ inorder to find the specified element by name. If the element wasn't found
+ it will return a null value.
+
+
+
+
+
+ Parameters:
+
+ e - HTML node to search from.
+
+
+ n - Comma separated list of element names to search for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML Element or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ onLoad
+ boolean onLoad ()
+
+ Gets executed when the page loads or get intitialized. This function will then convert all textareas/divs that
+ is to be converted into TinyMCE editor controls.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true - if the event is to be chained, false - if the event chain is to be canceled.
+
+
+
+
+
+
+
+
+
+
+ onMouseMove
+ void onMouseMove ()
+
+ Mouse move handler function, this will be executed each time
+ the mouse is moved within a editor instance. This function stores away the current selection in MSIE
+ this will then be used when a undo/redo level is added.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ openWindow
+ void openWindow (<Array> template, <Array> args)
+
+ Opens a popup window based in the specified input data. This function
+ is used for all popup windows in TinyMCE.
+
+ These are the current template TinyMCE_Engine.prototype.keys = file; width, height, close_previous.
+
+
+
+
+
+ Parameters:
+
+ template - Popup template data such as with, height etc.
+
+
+ args - Popup arguments that is to be passed to the popup such as custom data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parseStyle
+ Array parseStyle (<string> str)
+
+ Parses the specified HTML style data. This will parse for example
+ "border-left: 1px; background-color: red" into an key/value array.
+
+
+
+
+
+ Parameters:
+
+ str - Style data to parse.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Name/Value array of style items.
+
+
+
+
+
+
+
+
+
+
+ parseURL
+ TinyMCE_URL_Item parseURL (<string> url_str)
+
+ Parses a URL in to its diffrent components.
+
+
+
+
+
+ Parameters:
+
+ url_str - URL string to parse into a URL object.
+
+
+
+
+
+
+
+
+ Returns:
+
+ URL object based on input string.
+
+
+
+
+
+
+
+
+
+
+ prevNode
+ HTMLElement prevNode (<HTMLNode> e, <string> n)
+
+ Finds any previous element by name. This will loop through the siblings
+ inorder to find the specified element by name. If the element wasn't found
+ it will return a null value.
+
+
+
+
+
+ Parameters:
+
+ e - HTML node to search from.
+
+
+ n - Comma separated list of element names to search for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML Element or null if it wasn't found.
+
+
+
+
+
+
+
+
+
+
+ queryInstanceCommandState
+ boolean queryInstanceCommandState (<string> editor_id, <string> command)
+
+ Queries a command state for a specific command on a specific editor instance.
+
+
+
+
+
+ Parameters:
+
+ editor_id - Editor id to query command state on.
+
+
+ command - Command to query for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Command state passed from browser.
+
+
+
+
+
+
+
+
+
+
+ queryInstanceCommandValue
+ object queryInstanceCommandValue (<string> editor_id, <string> command)
+
+ Queries a command value for a specific command on a specific editor instance.
+
+
+
+
+
+ Parameters:
+
+ editor_id - Editor id to query command value on.
+
+
+ command - Command to query for.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Command value passed from browser.
+
+
+
+
+
+
+
+
+
+
+ regexpReplace
+ string regexpReplace (<string> in_str, <string> reg_exp, <string> replace_str, opts)
+
+ Regexp replaces the contents of a string. Use normal replace instead.
+
+
+
+
+
+ Parameters:
+
+ in_str - String to replace in.
+
+
+ in_str - Optional regexp options like "gi".
+
+
+ reg_exp - Regexp to replace.
+
+
+ replace_str - String to replace with.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Replaced string value.
+
+
+
+
+
+
+
+
+
+
+
+
+ removeCSSClass
+ string removeCSSClass (<HTMLElement> e, c)
+
+ Removes the specified CSS class from the element.
+
+
+
+
+
+ Parameters:
+
+ e - HTML element to remove CSS class to.
+
+
+ string - ] c CSS class to remove to HTML element.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Returns the new class attribute value.
+
+
+
+
+
+
+
+
+
+
+ removeMCEControl
+ void removeMCEControl (<string> editor_id)
+
+ Removes a TinyMCE editor control instance by id.
+
+
+
+
+
+ Parameters:
+
+ editor_id - Id of editor instance to remove.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ removeTinyMCEFormElements
+ void removeTinyMCEFormElements (<HTMLElement> form_obj)
+
+ Removes/disables TinyMCE built in form elements such as select boxes for font sizes etc.
+ These are disabled when the user submits a form so they don't get picked up by the backend script
+ that intercepts the contents.
+
+
+
+
+
+ Parameters:
+
+ form_obj - Form object to loop through for TinyMCE specific form elements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ renameElement
+ void renameElement (<HTMLElement> e, <string> n, <DOMDocument> d)
+
+ Renames the specified element to the specified name.
+
+
+
+
+
+ Parameters:
+
+
+
+ n - New name of the element.
+
+
+ d - Optional document reference.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ replaceVar
+ string replaceVar (<string> h, <string> r, <string> v)
+
+ Replaces a specific variable in the string with a nother string.
+
+
+
+
+
+ Parameters:
+
+ h - String to search in for the variable.
+
+
+ r - Variable name to search for.
+
+
+ v - Value to insert where a variable is found.
+
+
+
+
+
+
+
+
+ Returns:
+
+ String with replaced variable.
+
+
+
+
+
+
+
+
+
+
+ resetForm
+ void resetForm (<int> form_index)
+
+ Resets a forms TinyMCE instances based on form index.
+
+
+
+
+
+ Parameters:
+
+ form_index - Form index to reset.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ selectNodes
+ Array selectNodes (<DOMNode> n, <function> f, <Array> a)
+
+ Returns a array of nodes when the specified function matches a node.
+
+
+
+
+
+ Parameters:
+
+ n - Node to select children from.
+
+
+ f - Function that returns true/false if the node is to be added or not.
+
+
+ a - Optional array to fill with nodes.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Array with selected nodes.
+
+
+
+
+
+
+
+
+
+
+ serializeStyle
+ string serializeStyle (<Array> ar)
+
+ Serializes the specified style item name/value array into a HTML string. This function
+ will force HEX colors in Firefox and convert the URL items of a style correctly.
+
+
+
+
+
+ Parameters:
+
+ ar - Name/Value array of items to serialize.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Serialized HTML string containing the items.
+
+
+
+
+
+
+
+
+
+
+ serializeURL
+ string serializeURL (<TinyMCE_URL_Item> up)
+
+ Serializes the specified URL object into a string.
+
+
+
+
+
+ Parameters:
+
+ up - URL object to serialize.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Serialized URL object.
+
+
+
+
+
+
+
+
+
+
+ setAttrib
+ void setAttrib (<HTMLElement> element, <string> name, <string> value, <boolean> fix_value)
+
+ Sets the attribute value for a specific attribute.
+
+
+
+
+
+ Parameters:
+
+ element - HTML element to set attribute on.
+
+
+ name - Attribute name to set.
+
+
+ value - Attribute value to set.
+
+
+ fix_value - Optional fix value state, if true only number data will be accepted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setContent
+ void setContent (<string> h)
+
+ Sets the HTML contents of the selected editor instance.
+
+
+
+
+
+ Parameters:
+
+ h - HTML contents to set in the selected instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setInnerHTML
+ void setInnerHTML (<HTMLElement> e, <string> h)
+
+ Sets the innerHTML property of a element, this function also
+ fixes a MSIE bug where the first comment is removed.
+
+
+
+
+
+ Parameters:
+
+ e - Element to insert HTML in.
+
+
+ h - HTML code to insert into innerHTML.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setOuterHTML
+ void setOuterHTML (<HTMLElement> e, <string> h)
+
+ Sets the outer HTML of a element, this uses the outerHTML
+ property in MSIE and Opera and a workaround for Gecko.
+
+
+
+
+
+ Parameters:
+
+ e - HTML element to set outerHTML on.
+
+
+ h - HTML string to set in property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setPluginBaseURL
+ void setPluginBaseURL (<string> n, <string> u)
+
+ Sets the baseURL of the specified plugin, this is useful if the plugin is loaded from
+ a external location.
+
+
+
+
+
+ Parameters:
+
+ n - Plugin name/id to set base URL on. This have to be added before.
+
+
+ u - Base URL of plugin, this string should be the URL prefix for the plugin without a trailing slash.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setStyleAttrib
+ void setStyleAttrib (<HTMLElement> elm, <string> name, <string> value)
+
+ Sets a style attribute item value.
+
+
+
+
+
+ Parameters:
+
+ elm - HTML element to set style attribute item on.
+
+
+ name - Style item name to set.
+
+
+ value - Style item value to set.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setupContent
+ void setupContent (<string> editor_id)
+
+ Setups the contents of TinyMCE editor instance and fills it with contents.
+
+
+
+
+
+ Parameters:
+
+ editor_id - TinyMCE editor instance control id to fill.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setWindowArg
+ void setWindowArg (<string> n, <string> v)
+
+ Sets the window argument to be passed to TinyMCE popup.
+
+
+
+
+
+ Parameters:
+
+ n - Window argument name.
+
+
+ v - Window argument value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ storeAwayURLs
+ string storeAwayURLs (<string> s)
+
+ Stores away the src and href attribute values in separate mce_src and mce_href attributes.
+ This is needed since both MSIE and Gecko messes with these attributes. The old
+ src and href will be intact, this simply adds them to a separate attribute.
+
+
+
+
+
+ Parameters:
+
+ s - HTML string to replace src and href attributes in.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML string with replaced src and href attributes.
+
+
+
+
+
+
+
+
+
+
+ submitPatch
+ void submitPatch ()
+
+ Piggyback onsubmit event handler function, this will remove/hide the TinyMCE specific form elements
+ call triggerSave to fill the textarea with the correct contents then call the old piggy backed event handler.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ switchClass
+ void switchClass (<HTMLElement> ei, <string> c)
+
+ Switches the CSS class of the specified element. This method also caches the
+ elements in a lookup table for performance. This should only be used for TinyMCE main UI controls
+ like buttons or select elements.
+
+
+
+
+
+ Parameters:
+
+ ei - Element to set CSS class on.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ triggerNodeChange
+ void triggerNodeChange (<boolean> focus, <boolean> setup_content)
+
+ Triggers a nodeChange event to every theme and plugin. This will be executed when the cursor moves or
+ when a command that modifies the editor contents is executed.
+
+
+
+
+
+ Parameters:
+
+ focus - Optional state if the last selected editor instance is to be focused or not.
+
+
+ setup_content - Optional state if it's called from setup content function or not.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ triggerSave
+ void triggerSave (<boolean> skip_cleanup, <boolean> skip_callback)
+
+ Moves the contents from a TinyMCE editor control instance to the hidden textarea
+ that got replaced with TinyMCE. This is executed automaticly on for example form submit.
+
+
+
+
+
+ Parameters:
+
+ skip_cleanup - Optional Skip cleanup, simply move the contents as fast as possible.
+
+
+ skip_callback - Optional Skip callback, don't call the save_callback function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ trim
+ string trim (<string> s)
+
+ Removes all prefix, suffix whitespace of a string.
+
+
+
+
+
+ Parameters:
+
+ s - String to replace whitespace in.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Replaced string value.
+
+
+
+
+
+
+
+
+
+
+ unloadHandler
+ void unloadHandler ()
+
+ Unload document event handler function. This function will be executed when the
+ page is unloaded, this will automaticly move the current editor contents to the textarea element this enables
+ the editor to restore it's state when the user presses the back button in the browser.
+ This will execute the triggerSave function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateContent
+ void updateContent (<string> form_element_name)
+
+ Moves the contents from the hidden textarea to the editor that gets inserted.
+
+
+
+
+
+ Parameters:
+
+ form_element_name - Form element name to move contents from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlEncode
+ string xmlEncode (<string> s)
+
+ Encodes the string to raw XML entities. This will only convert the most common ones.
+ For real entity encoding use the xmlEncode method of the Cleanup class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Layer.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Layer.html
new file mode 100644
index 000000000..9e7411771
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Layer.html
@@ -0,0 +1,952 @@
+
+
+
+
+
+TinyMCE_Layer
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Layer
+Object
+ |
+ +--TinyMCE_Layer
+
+
+
+
+
+
+ class
+ TinyMCE_Layer
+
+
+
+
+
+ Defined in TinyMCE_Layer.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Layer
+
+ (<string> id, <boolean> bm)
+
+
+
+ Constructor for the TinyMCE Layer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ create (<string> n, <string> c, <HTMLElement> p)
+
+
+
+ Creates a element for the layer based on the id and specified name.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ getAbsPosition (<DOMElement> n)
+
+
+
+ Returns the absolute x, y cordinate of the specified node.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getBlocker ()
+
+
+
+ Returns the blocker DOM element, this is a invisible iframe.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getElement ()
+
+
+
+ Returns the DOM element that the layer is binded to.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ hide ()
+
+
+
+ Hides the layer.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ isVisible ()
+
+
+
+ Returns true/false if the layer is visible or not.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ moveBy (<int> x, <int> y)
+
+
+
+ Moves the layer relative in pixels.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ moveRelativeTo (<HTMLElement> re, <string> p)
+
+
+
+ Moves the layer relative to the specified HTML element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ moveTo (<int> x, <int> y)
+
+
+
+ Moves the layer absolute in pixels.
+
+
+
+
+
+
+ int
+
+
+
+
+
+ parseInt (<string> s)
+
+
+
+ Parses a int value this method will return 0 if the string is empty.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ resizeBy (<int> w, <int> h)
+
+
+
+ Resizes the layer by the specified relative width and height.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ resizeTo (<int> w, <int> h)
+
+
+
+ Resizes the layer to the specified width and height.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ setBlockMode (<boolean> s)
+
+
+
+ Sets the block mode.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ show ()
+
+
+
+ Shows the layer.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ updateBlocker ()
+
+
+
+ Updates the select/iframe/flash blocker this will also block the caret in Firefox.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Layer
+TinyMCE_Layer (<string> id, <boolean> bm)
+
+
+
+ Constructor for the TinyMCE Layer. This class enables you to construct
+ floating layers that is visible on top of select input fields, flashes and iframes.
+
+
+
+
+
+ Parameters:
+
+ id - Unique ID name for the layer.
+
+
+ bm - Block mode, defaults to true.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ create
+ HTMLElement create (<string> n, <string> c, <HTMLElement> p)
+
+ Creates a element for the layer based on the id and specified name.
+
+
+
+
+
+ Parameters:
+
+ n - Element tag name, like div.
+
+
+ c - Optional class name to set as class attribute value.
+
+
+ p - Optional parent element reference, defaults to body.
+
+
+
+
+
+
+
+
+ Returns:
+
+ HTML DOM element that got created.
+
+
+
+
+
+
+
+
+
+
+ getAbsPosition
+ Object getAbsPosition (<DOMElement> n)
+
+ Returns the absolute x, y cordinate of the specified node.
+
+
+
+
+
+ Parameters:
+
+ n - DOM node to retrive x, y of.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Object containing absLeft and absTop properties.
+
+
+
+
+
+
+
+
+
+
+ getBlocker
+ HTMLElement getBlocker ()
+
+ Returns the blocker DOM element, this is a invisible iframe.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getElement
+ HTMLElement getElement ()
+
+ Returns the DOM element that the layer is binded to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hide
+ void hide ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ isVisible
+ boolean isVisible ()
+
+ Returns true/false if the layer is visible or not.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if it's visible or not.
+
+
+
+
+
+
+
+
+
+
+ moveBy
+ void moveBy (<int> x, <int> y)
+
+ Moves the layer relative in pixels.
+
+
+
+
+
+ Parameters:
+
+ x - Horizontal relative position in pixels.
+
+
+ y - Vertical relative position in pixels.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ moveRelativeTo
+ void moveRelativeTo (<HTMLElement> re, <string> p)
+
+ Moves the layer relative to the specified HTML element.
+
+
+
+
+
+ Parameters:
+
+ re - Element to move the layer relative to.
+
+
+ p - Position of the layer tl = top left, tr = top right, bl = bottom left, br = bottom right.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ moveTo
+ void moveTo (<int> x, <int> y)
+
+ Moves the layer absolute in pixels.
+
+
+
+
+
+ Parameters:
+
+ x - Horizontal absolute position in pixels.
+
+
+ y - Vertical absolute position in pixels.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parseInt
+ int parseInt (<string> s)
+
+ Parses a int value this method will return 0 if the string is empty.
+
+
+
+
+
+ Parameters:
+
+ s - String to parse value of.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ resizeBy
+ void resizeBy (<int> w, <int> h)
+
+ Resizes the layer by the specified relative width and height.
+
+
+
+
+
+ Parameters:
+
+ w - Relative width value.
+
+
+ h - Relative height value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ resizeTo
+ void resizeTo (<int> w, <int> h)
+
+ Resizes the layer to the specified width and height.
+
+
+
+
+
+ Parameters:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setBlockMode
+ void setBlockMode (<boolean> s)
+
+ Sets the block mode. If you set this property to true a control box blocker iframe
+ will be added to the document since MSIE has a issue where select boxes are visible
+ through layers.
+
+
+
+
+
+ Parameters:
+
+ s - Block mode state, true is the default value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ show
+ void show ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateBlocker
+ void updateBlocker ()
+
+ Updates the select/iframe/flash blocker this will also block the caret in Firefox.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Popup.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Popup.html
new file mode 100644
index 000000000..bc1e18a15
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Popup.html
@@ -0,0 +1,789 @@
+
+
+
+
+
+TinyMCE_Popup
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Popup
+Object
+ |
+ +--TinyMCE_Popup
+
+
+
+
+
+
+ class
+ TinyMCE_Popup
+
+
+
+
+
+ Defined in TinyMCE_Popup.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Popup
+
+ ()
+
+
+
+ Constructor for the popup class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ void
+
+
+
+
+
+ close ()
+
+
+
+ Closes the current window.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ execCommand (<string> command, <boolean> user_interface, <mixed> value)
+
+
+
+ Executes the specific command on the parent instance that opened the window.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ executeOnLoad (<string> str)
+
+
+
+ Executes the specified string onload.
+
+
+
+
+
+
+ Object
+
+
+
+
+
+ getWindowArg (<string> name, <string> default_value)
+
+
+
+ Returns a window argument, window arguments can be passed from a plugin to a window
+ by using the tinyMCE.openWindow function.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ importClass (<string> c)
+
+
+
+ Imports the specified class into the current popup.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ init ()
+
+
+
+ Initializes the TinyMCE Popup class.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ onLoad ()
+
+
+
+ Gets executed when the window has finished loading it's contents.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ openBrowser (<string> element_id, <string> type, <string> option)
+
+
+
+ Opens a filebrowser/imagebrowser this will set the output value from
+ the browser as a value on the specified element.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ pickColor (<DOMEvent> e, <string> element_id)
+
+
+
+ Executes a color picker on the specified element id.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ resizeToContent ()
+
+
+
+ Resizes the current window to the dimensions of the body.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ resizeToInnerSize ()
+
+
+
+ Resizes the current window to it's inner body size.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ restoreSelection ()
+
+
+
+ Restores the selection back to the one stored after executing a command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Popup
+TinyMCE_Popup ()
+
+
+
+ Constructor for the popup class. This class contains base logic for popup/dialogs and sets up
+ object references to the TinyMCE core.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ close
+ void close ()
+
+ Closes the current window. This should be used instead of window.close. Since this will
+ also handle inlinepopups closing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ execCommand
+ void execCommand (<string> command, <boolean> user_interface, <mixed> value)
+
+ Executes the specific command on the parent instance that opened the window. This method
+ will also take care of the storage and restorage of the current selection in MSIE when
+ using inlinepopups. So we suggest using this method instead of tinyMCE.execCommand when using
+ popup windows.
+
+
+
+
+
+ Parameters:
+
+ command - Command name to execute, for example mceLink or Bold.
+
+
+ user_interface - True/false state if a UI (dialog) should be presented or not.
+
+
+ value - Optional command value, this can be anything.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ executeOnLoad
+ void executeOnLoad (<string> str)
+
+ Executes the specified string onload. This is a workaround for Opera since it
+ doesn't execute the events in the same order than MSIE and Firefox.
+
+
+
+
+
+ Parameters:
+
+ str - String to evaluate on load.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getWindowArg
+ Object getWindowArg (<string> name, <string> default_value)
+
+ Returns a window argument, window arguments can be passed from a plugin to a window
+ by using the tinyMCE.openWindow function.
+
+
+
+
+
+ Parameters:
+
+ name - Argument name to retrive.
+
+
+ default_value - Optional default value to assign if the argument wasn't set.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Argument value object.
+
+
+
+
+
+
+
+
+
+
+ importClass
+ void importClass (<string> c)
+
+ Imports the specified class into the current popup. This will setup a local class definition
+ by importing from the parent window.
+
+
+
+
+
+ Parameters:
+
+ c - Class name to import to current page.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ init
+ void init ()
+
+ Initializes the TinyMCE Popup class. This will setup the TinyMCE core references and other popup/dialog related functions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ onLoad
+ void onLoad ()
+
+ Gets executed when the window has finished loading it's contents. This function will then
+ replace language variables with their real values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ openBrowser
+ void openBrowser (<string> element_id, <string> type, <string> option)
+
+ Opens a filebrowser/imagebrowser this will set the output value from
+ the browser as a value on the specified element.
+
+
+
+
+
+ Parameters:
+
+ element_id - Id of the element to set value in.
+
+
+ type - Type of browser to open image/file/flash.
+
+
+ option - Option name to get the file_broswer_callback function name from.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pickColor
+ void pickColor (<DOMEvent> e, <string> element_id)
+
+ Executes a color picker on the specified element id. When the user
+ then selects a color it will be set as the value of the specified element.
+
+
+
+
+
+ Parameters:
+
+
+
+ element_id - Element id to be filled with the color value from the picker.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ resizeToContent
+ void resizeToContent ()
+
+ Resizes the current window to the dimensions of the body.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ resizeToInnerSize
+ void resizeToInnerSize ()
+
+ Resizes the current window to it's inner body size. This function
+ was needed since MSIE makes the visible dialog area diffrent depending
+ on what Theme/Skin you use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ restoreSelection
+ void restoreSelection ()
+
+ Restores the selection back to the one stored after executing a command.
+ This function was needed in MSIE when using inlinepopups, the selection
+ would otherwice get lost if the user focused another field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Selection.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Selection.html
new file mode 100644
index 000000000..b3248c70e
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_Selection.html
@@ -0,0 +1,732 @@
+
+
+
+
+
+TinyMCE_Selection
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_Selection
+Object
+ |
+ +--TinyMCE_Selection
+
+
+
+
+
+
+ class
+ TinyMCE_Selection
+
+
+
+
+
+ Defined in TinyMCE_Selection.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Field Summary
+
+
+
+
+
+
+ Object
+ instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_Selection
+
+ (<TinyMCE_Control > inst)
+
+
+
+ Constructs a Selection instance and binds it to the specificed TinyMCE editor control.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ TinyMCE_Bookmark
+
+
+
+
+
+ getBookmark (<boolean> simple)
+
+
+
+ Returns a selection bookmark that can be restored later with moveToBookmark.
+
+
+
+
+
+
+ HTMLElement
+
+
+
+
+
+ getFocusElement ()
+
+
+
+ Returns the currently selected/focused element.
+
+
+
+
+
+
+ DOMRange
+
+
+
+
+
+ getRng ()
+
+
+
+ Returns the browsers selections first range instance.
+
+
+
+
+
+
+ DOMSelection
+
+
+
+
+
+ getSel ()
+
+
+
+ Returns the browsers selection instance.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getSelectedHTML ()
+
+
+
+ Returns the selected HTML code.
+
+
+
+
+
+
+ string
+
+
+
+
+
+ getSelectedText ()
+
+
+
+ Returns the selected text.
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ moveToBookmark (<TinyMCE_Bookmark> bookmark)
+
+
+
+ Restores the selection to the specified bookmark.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ scrollToNode (<HTMLNode> node)
+
+
+
+ Scrolls to the specified node location.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ selectNode (<HTMLNode> node, <boolean> collapse, <boolean> select_text_node, <boolean> to_start)
+
+
+
+ Selects the specified node.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ instance
+ Object instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_Selection
+TinyMCE_Selection (<TinyMCE_Control > inst)
+
+
+
+ Constructs a Selection instance and binds it to the specificed TinyMCE editor control.
+
+
+
+
+
+ Parameters:
+
+ inst - TinyMCE editor control instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ getBookmark
+ TinyMCE_Bookmark getBookmark (<boolean> simple)
+
+ Returns a selection bookmark that can be restored later with moveToBookmark.
+ This acts much like the one MSIE has built in but this one is persistent if between DOM
+ tree rewritings. The simple mode enables a quicker and non persistent bookmark.
+
+
+
+
+
+ Parameters:
+
+ simple - If this is set to true, the selection bookmark will not me dom persistent.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Selection bookmark that can be restored later with moveToBookmark.
+
+
+
+
+
+
+
+
+
+
+ getFocusElement
+ HTMLElement getFocusElement ()
+
+ Returns the currently selected/focused element.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Currently selected element.
+
+
+
+
+
+
+
+
+
+
+ getRng
+ DOMRange getRng ()
+
+ Returns the browsers selections first range instance.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Browsers selections first range instance.
+
+
+
+
+
+
+
+
+
+
+ getSel
+ DOMSelection getSel ()
+
+ Returns the browsers selection instance.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Browser selection instance.
+
+
+
+
+
+
+
+
+
+
+ getSelectedHTML
+ string getSelectedHTML ()
+
+ Returns the selected HTML code.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Selected HTML contents.
+
+
+
+
+
+
+
+
+
+
+ getSelectedText
+ string getSelectedText ()
+
+ Returns the selected text.
+
+
+
+
+
+
+
+
+ Returns:
+
+ Selected text contents.
+
+
+
+
+
+
+
+
+
+
+ moveToBookmark
+ boolean moveToBookmark (<TinyMCE_Bookmark> bookmark)
+
+ Restores the selection to the specified bookmark.
+
+
+
+
+
+ Parameters:
+
+ bookmark - Bookmark to restore selection from.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false if it was successful or not.
+
+
+
+
+
+
+
+
+
+
+ scrollToNode
+ void scrollToNode (<HTMLNode> node)
+
+ Scrolls to the specified node location.
+
+
+
+
+
+ Parameters:
+
+ node - Node to scroll to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ selectNode
+ void selectNode (<HTMLNode> node, <boolean> collapse, <boolean> select_text_node, <boolean> to_start)
+
+ Selects the specified node.
+
+
+
+
+
+ Parameters:
+
+ node - Node object to move selection to.
+
+
+ collapse - True/false if it will be collasped.
+
+
+ select_text_node - True/false if the text contents should be selected or not.
+
+
+ to_start - True/false if the collapse should be to start or end of range.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/TinyMCE_UndoRedo.html b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_UndoRedo.html
new file mode 100644
index 000000000..19034eab6
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/TinyMCE_UndoRedo.html
@@ -0,0 +1,513 @@
+
+
+
+
+
+TinyMCE_UndoRedo
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TinyMCE_UndoRedo
+Object
+ |
+ +--TinyMCE_UndoRedo
+
+
+
+
+
+
+ class
+ TinyMCE_UndoRedo
+
+
+
+
+
+ Defined in TinyMCE_UndoRedo.class.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+ TinyMCE_UndoRedo
+
+ (<TinyMCE_Control > inst)
+
+
+
+ Constructs a undo redo instance, this instance handles the custom undo/redo handeling in TinyMCE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+ boolean
+
+
+
+
+
+ add (<TinyMCE_UndoRedoLevel> l)
+
+
+
+ Adds a new undo level, this will take a snapshot of the current instance HTML or use the specified level.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ redo ()
+
+
+
+ Performes a undo action, this will restore the HTML contents of the editor to a former undoed state.
+
+
+
+
+
+
+ void
+
+
+
+
+
+ undo ()
+
+
+
+ Performes a undo action, this will restore the HTML contents of the editor to a former state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ instance
+ Object instance
+
+
+
+
+ typingUndoIndex
+ Object typingUndoIndex
+
+
+
+
+ undoIndex
+ Object undoIndex
+
+
+
+
+ undoLevels
+ Object undoLevels
+
+
+
+
+ undoRedo
+ Object undoRedo
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructor Detail
+
+
+
+
+
+TinyMCE_UndoRedo
+TinyMCE_UndoRedo (<TinyMCE_Control > inst)
+
+
+
+ Constructs a undo redo instance, this instance handles the custom undo/redo handeling in TinyMCE.
+
+
+
+
+
+ Parameters:
+
+ inst - TinyMCE editor control instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Detail
+
+
+
+
+
+
+
+ add
+ boolean add (<TinyMCE_UndoRedoLevel> l)
+
+ Adds a new undo level, this will take a snapshot of the current instance HTML or use the specified level.
+
+
+
+
+
+ Parameters:
+
+ l - Optional undo/redo level to add.
+
+
+
+
+
+
+
+
+ Returns:
+
+ true/false on success or failure.
+
+
+
+
+
+
+
+
+
+
+ redo
+ void redo ()
+
+ Performes a undo action, this will restore the HTML contents of the editor to a former undoed state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ undo
+ void undo ()
+
+ Performes a undo action, this will restore the HTML contents of the editor to a former state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/allclasses-frame.html b/www/extras/tinymce2/docs/tinymce_api/allclasses-frame.html
new file mode 100644
index 000000000..d2eabd4ef
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/allclasses-frame.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+ All Classes
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/allclasses-noframe.html b/www/extras/tinymce2/docs/tinymce_api/allclasses-noframe.html
new file mode 100644
index 000000000..4be61de5a
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/allclasses-noframe.html
@@ -0,0 +1,76 @@
+
+
+
+
+ All Classes
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/help-doc.html b/www/extras/tinymce2/docs/tinymce_api/help-doc.html
new file mode 100644
index 000000000..638433849
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/help-doc.html
@@ -0,0 +1,160 @@
+
+
+
+
+ API Help
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+How This API Document Is Organized
+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+Class
+
+
+
+Each class has its own separate page. Each of these pages has three sections consisting of a class description, summary tables, and detailed member descriptions:
+Class inheritance diagram Direct Subclasses Class declaration Class description
+
+
Field Summary Constructor Summary Method Summary
+
+
Field Detail Constructor Detail Method Detail
+Each summary entry contains the first sentence from the detailed description for that item.
+
+
+
+Index
+
+The Index contains an alphabetic list of all classes, constructors, methods, and fields.
+
+Prev/Next
+These links take you to the next or previous class, interface, package, or related page.
+Frames/No Frames
+These links show and hide the HTML frames. All pages are available with or without frames.
+
+
+
+This help file applies to API documentation generated using the standard doclet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/index-all.html b/www/extras/tinymce2/docs/tinymce_api/index-all.html
new file mode 100644
index 000000000..48596d246
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/index-all.html
@@ -0,0 +1,1663 @@
+
+
+
+
+
+Index ()
+
+
+
+
+
+
+
+
+
+
+
+
+ _ A B C D E F G H I L M N O P Q R S T U W X
+
+
+
+
+_
+
+
+_getElementById(id, d) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+_removeInternal(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+A
+
+
+accessibleEventHandler(e) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+add(l) -
+Instance method in class TinyMCE_UndoRedo
+
+
+
+
+addButtonMap(m) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addCSSClass(e, c, b) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addEvent(o, n, h) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addEventHandlers(inst) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addMCEControl(replace_element, form_element_name, target_document) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addMenu(n, m) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addPlugin(n, p) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addPlugin(n, p) -
+Instance method in class TinyMCE_Control
+
+
+
+
+addRuleStr(s) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+addSelectAccessibility(e, s, w) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addShortcut(m, k, d, cmd, ui, va) -
+Instance method in class TinyMCE_Control
+
+
+
+
+addTheme(n, t) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+addToLang(prefix, ar) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+applyTemplate(h, as) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+autoResetDesignMode() -
+Instance method in class TinyMCE_Control
+
+
+
+
+
+
+B
+
+
+buttonMap -
+Instance field in class TinyMCE_Engine
+
+
+
+
+
+
+C
+
+
+callFunc(ins, p, n, m, a) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+cancelEvent(e) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+cleanup -
+Instance field in class TinyMCE_Control
+
+
+
+
+cleanupAnchors(doc) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+cleanupEventStr(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+cleanupHTMLCode(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+clearArray(a) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+close() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+closeWindow(win) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+compressStyle(ar, pr, sf, res) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+configs -
+Instance field in class TinyMCE_Engine
+
+
+
+
+confirmAdd(e, settings) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertAbsoluteURLToRelativeURL(base_url, url_to_relative) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertAllRelativeURLs(body) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertFontsToSpans(doc) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertHexToRGB(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertRelativeToAbsoluteURL(base_url, relative_url) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertRGBToHex(s, k) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertSpansToFonts(doc) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+convertURL(url, node, on_save) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+create(n, c, p) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+currentConfig -
+Instance field in class TinyMCE_Engine
+
+
+
+
+
+
+D
+
+
+debug() -
+Instance method in class TinyMCE_Engine
+
+
+
+
+dialogCounter -
+Instance field in class TinyMCE_Engine
+
+
+
+
+dispatchCallback(i, p, n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+E
+
+
+entityDecode(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+evalFunc(f, idx, a) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+eventHandlers -
+Instance field in class TinyMCE_Engine
+
+
+
+
+execCommand(command, user_interface, value) -
+Instance method in class TinyMCE_Control
+
+
+
+
+execCommand(command, user_interface, value) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+execCommand(command, user_interface, value) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+execCommandCallback(i, p, n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+execInstanceCommand(editor_id, command, user_interface, value, focus) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+executeCallback(i, p, n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+executeOnLoad(str) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+explode(d, s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+extend(p, np) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+F
+
+
+fixGeckoBaseHREFBug(m, e, h) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+formatHTML(h) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+
+
+G
+
+
+getAbsPosition(n) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+getAbsPosition(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getAttrib(elm, name, default_value) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getBlocker() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+getBody() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getBookmark(simple) -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getButtonHTML(id, lang, img, cmd, ui, val) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getContent(editor_id) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getControlHTML(c) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getCSSClasses(editor_id, doc) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getDoc() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getEditorId(form_element) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getElement() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+getElementByAttributeValue(n, e, a, v) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getElementsByAttributeValue(n, e, a, v) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getFocusElement() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getFocusElement() -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getInstanceById(editor_id) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getLang(name, default_value, parse_entities, va) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getNodeTree(n, na, t, nn) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getOuterHTML(e) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getParam(name, default_value, strip_whitespace, split_chr) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getParentBlockElement(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getParentElement(node, names, attrib_name, attrib_value) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getParentNode(n, f) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getRng() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getRng() -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getSel() -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getSel() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getSelectedHTML() -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getSelectedText() -
+Instance method in class TinyMCE_Selection
+
+
+
+
+getVisualAidClass(class_name, state) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getWin() -
+Instance method in class TinyMCE_Control
+
+
+
+
+getWindowArg(n, d) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+getWindowArg(name, default_value) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+GLOBALS -
+ class GLOBALS
+
+
+
+
+
+
+H
+
+
+handleEvent(e) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+handleShortcut(e) -
+Instance method in class TinyMCE_Control
+
+
+
+
+handleVisualAid(el, deep, state, inst, skip_dispatch) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+hasMenu(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+hasMouseMoved -
+Instance field in class TinyMCE_Control
+
+
+
+
+hasPlugin(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+hasPlugin(n) -
+Instance method in class TinyMCE_Control
+
+
+
+
+hasTheme(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+hide() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+
+
+I
+
+
+idCounter -
+Instance field in class TinyMCE_Engine
+
+
+
+
+importClass(c) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+importCSS(doc, css) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+importPluginLanguagePack(name, valid_languages) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+importThemeLanguagePack(name) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+init() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+init(s) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+init(settings) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+insertAfter(n, r) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+instance -
+Instance field in class TinyMCE_Selection
+
+
+
+
+instance -
+Instance field in class TinyMCE_UndoRedo
+
+
+
+
+instances -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isBlockElement(n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+isDirty() -
+Instance method in class TinyMCE_Control
+
+
+
+
+isGecko -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isHidden() -
+Instance method in class TinyMCE_Control
+
+
+
+
+isInstance(o) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+isLoaded -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isMac -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isMSIE -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isMSIE5 -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isMSIE5_0 -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isNS7 -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isNS71 -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isOpera -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isSafari -
+Instance field in class TinyMCE_Engine
+
+
+
+
+isTinyMCE_Control -
+Instance field in class TinyMCE_Control
+
+
+
+
+isVisible() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+
+
+L
+
+
+loadCSS(url) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+loadedFiles -
+Instance field in class TinyMCE_Engine
+
+
+
+
+loadedPlugins -
+Instance field in class TinyMCE_Engine
+
+
+
+
+loadPlugin(n, u) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+loadScript(url) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+M
+
+
+majorVersion -
+Instance field in class TinyMCE_Engine
+
+
+
+
+menus -
+Instance field in class TinyMCE_Engine
+
+
+
+
+minorVersion -
+Instance field in class TinyMCE_Engine
+
+
+
+
+moveBy(x, y) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+moveRelativeTo(re, p) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+moveTo(x, y) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+moveToBookmark(bookmark) -
+Instance method in class TinyMCE_Selection
+
+
+
+
+
+
+N
+
+
+nextNode(e, n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+O
+
+
+onLoad() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+onLoad() -
+Instance method in class TinyMCE_Engine
+
+
+
+
+onMouseMove() -
+Instance method in class TinyMCE_Engine
+
+
+
+
+openBrowser(element_id, type, option) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+openWindow(template, args) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+P
+
+
+parseInt(s) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+parseRuleStr(s) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+parseStyle(str) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+parseURL(url_str) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+pickColor(e, element_id) -
+Instance method in class TinyMCE_Popup
+
+
+
+
+plugins -
+Instance field in class TinyMCE_Engine
+
+
+
+
+plugins -
+Instance field in class TinyMCE_Control
+
+
+
+
+prevNode(e, n) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+Q
+
+
+queryCommandState(c) -
+Instance method in class TinyMCE_Control
+
+
+
+
+queryCommandValue(c) -
+Instance method in class TinyMCE_Control
+
+
+
+
+queryInstanceCommandState(editor_id, command) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+queryInstanceCommandValue(editor_id, command) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+R
+
+
+redo() -
+Instance method in class TinyMCE_UndoRedo
+
+
+
+
+regexpReplace(in_str, reg_exp, replace_str, opts) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+releaseDate -
+Instance field in class TinyMCE_Engine
+
+
+
+
+removeCSSClass(e, c) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+removeMCEControl(editor_id) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+removeTinyMCEFormElements(form_obj) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+renameElement(e, n, d) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+repaint() -
+Instance method in class TinyMCE_Control
+
+
+
+
+replaceVar(h, r, v) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+resetForm(form_index) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+resizeBy(w, h) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+resizeTo(w, h) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+resizeToContent() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+resizeToInnerSize() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+restoreSelection() -
+Instance method in class TinyMCE_Popup
+
+
+
+
+
+
+S
+
+
+scrollToNode(node) -
+Instance method in class TinyMCE_Selection
+
+
+
+
+selection -
+Instance field in class TinyMCE_Control
+
+
+
+
+selectNode(node, collapse, select_text_node, to_start) -
+Instance method in class TinyMCE_Selection
+
+
+
+
+selectNodes(n, f, a) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+serializeNodeAsHTML(n) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+serializeNodeAsXML(n) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+serializeStyle(ar) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+serializeURL(up) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setAttrib(element, name, value, fix_value) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setBaseHREF(u) -
+Instance method in class TinyMCE_Control
+
+
+
+
+setBlockMode(s) -
+Instance method in class TinyMCE_Layer
+
+
+
+
+setContent(h) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setInnerHTML(e, h) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setOuterHTML(e, h) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setPluginBaseURL(n, u) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setStyleAttrib(elm, name, value) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+settings -
+Instance field in class TinyMCE_Control
+
+
+
+
+setupContent(editor_id) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+setWindowArg(n, v) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+shortcuts -
+Instance field in class TinyMCE_Control
+
+
+
+
+show() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+split(re, s) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+storeAwayURLs(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+submitPatch() -
+Instance method in class TinyMCE_Engine
+
+
+
+
+switchClass(ei, c) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+switchClassCache -
+Instance field in class TinyMCE_Engine
+
+
+
+
+switchSettings() -
+Instance method in class TinyMCE_Control
+
+
+
+
+
+
+T
+
+
+themes -
+Instance field in class TinyMCE_Engine
+
+
+
+
+TinyMCE_Cleanup -
+ class TinyMCE_Cleanup
+
+
+
+
+TinyMCE_Cleanup() -
+Constructor in class TinyMCE_Cleanup
+
+
+
+
+TinyMCE_Control -
+ class TinyMCE_Control
+
+
+
+
+TinyMCE_Control(settings) -
+Constructor in class TinyMCE_Control
+
+
+
+
+TinyMCE_Engine -
+ class TinyMCE_Engine
+
+
+
+
+TinyMCE_Engine() -
+Constructor in class TinyMCE_Engine
+
+
+
+
+TinyMCE_Layer -
+ class TinyMCE_Layer
+
+
+
+
+TinyMCE_Layer(id, bm) -
+Constructor in class TinyMCE_Layer
+
+
+
+
+TinyMCE_Menu() -
+Class method in class GLOBALS
+
+
+
+
+TinyMCE_Popup -
+ class TinyMCE_Popup
+
+
+
+
+TinyMCE_Popup() -
+Constructor in class TinyMCE_Popup
+
+
+
+
+TinyMCE_Selection -
+ class TinyMCE_Selection
+
+
+
+
+TinyMCE_Selection(inst) -
+Constructor in class TinyMCE_Selection
+
+
+
+
+TinyMCE_UndoRedo -
+ class TinyMCE_UndoRedo
+
+
+
+
+TinyMCE_UndoRedo(inst) -
+Constructor in class TinyMCE_UndoRedo
+
+
+
+
+triggerNodeChange(focus, setup_content) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+triggerSave(skip_cleanup, skip_callback) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+triggerSave(skip_cleanup, skip_callback) -
+Instance method in class TinyMCE_Control
+
+
+
+
+trim(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+typingUndoIndex -
+Instance field in class TinyMCE_UndoRedo
+
+
+
+
+
+
+U
+
+
+undo() -
+Instance method in class TinyMCE_UndoRedo
+
+
+
+
+undoIndex -
+Instance field in class TinyMCE_UndoRedo
+
+
+
+
+undoLevels -
+Instance field in class TinyMCE_UndoRedo
+
+
+
+
+undoRedo -
+Instance field in class TinyMCE_Control
+
+
+
+
+undoRedo -
+Instance field in class TinyMCE_UndoRedo
+
+
+
+
+undoRedoLevel -
+Instance field in class TinyMCE_Control
+
+
+
+
+unloadHandler() -
+Instance method in class TinyMCE_Engine
+
+
+
+
+updateBlocker() -
+Instance method in class TinyMCE_Layer
+
+
+
+
+updateContent(form_element_name) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+
+
+W
+
+
+windowArgs -
+Instance field in class TinyMCE_Engine
+
+
+
+
+
+
+X
+
+
+xmlEncode(s) -
+Instance method in class TinyMCE_Engine
+
+
+
+
+xmlEncode(s) -
+Instance method in class TinyMCE_Cleanup
+
+
+
+
+
+
+ _ A B C D E F G H I L M N O P Q R S T U W X
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/index.html b/www/extras/tinymce2/docs/tinymce_api/index.html
new file mode 100644
index 000000000..520a2ae6b
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+Generated Javascript Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frame Alert
+
+
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+
+Link to Non-frame version.
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Array.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Array.class.js.html
new file mode 100644
index 000000000..26af9adb2
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Array.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_Array.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Array.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Cleanup.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Cleanup.class.js.html
new file mode 100644
index 000000000..52450056b
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Cleanup.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Cleanup.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Cleanup.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Control.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Control.class.js.html
new file mode 100644
index 000000000..4e2da1f7d
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Control.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Control.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Control.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_DOMUtils.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_DOMUtils.class.js.html
new file mode 100644
index 000000000..5373ef27c
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_DOMUtils.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_DOMUtils.class.js
+
+
+
+
+
+
+
+
+TinyMCE_DOMUtils.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Debug.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Debug.class.js.html
new file mode 100644
index 000000000..c9f7af589
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Debug.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_Debug.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Debug.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Engine.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Engine.class.js.html
new file mode 100644
index 000000000..5e748e1cb
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Engine.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Engine.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Engine.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Event.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Event.class.js.html
new file mode 100644
index 000000000..4aa83e716
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Event.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_Event.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Event.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_ForceParagraphs.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_ForceParagraphs.class.js.html
new file mode 100644
index 000000000..0c2c201af
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_ForceParagraphs.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_ForceParagraphs.class.js
+
+
+
+
+
+
+
+
+TinyMCE_ForceParagraphs.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Layer.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Layer.class.js.html
new file mode 100644
index 000000000..b54982bc6
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Layer.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Layer.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Layer.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Menu.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Menu.class.js.html
new file mode 100644
index 000000000..334f06824
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Menu.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_Menu.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Menu.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Popup.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Popup.class.js.html
new file mode 100644
index 000000000..d5877914f
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Popup.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Popup.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Popup.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Selection.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Selection.class.js.html
new file mode 100644
index 000000000..079703a47
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_Selection.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_Selection.class.js
+
+
+
+
+
+
+
+
+TinyMCE_Selection.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_URL.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_URL.class.js.html
new file mode 100644
index 000000000..5269f4c98
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_URL.class.js.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ TinyMCE_URL.class.js
+
+
+
+
+
+
+
+
+TinyMCE_URL.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_UndoRedo.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_UndoRedo.class.js.html
new file mode 100644
index 000000000..ac7c77e97
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-TinyMCE_UndoRedo.class.js.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ TinyMCE_UndoRedo.class.js
+
+
+
+
+
+
+
+
+TinyMCE_UndoRedo.class.js
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-frame.html b/www/extras/tinymce2/docs/tinymce_api/overview-frame.html
new file mode 100644
index 000000000..2019c7676
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-frame.html
@@ -0,0 +1,67 @@
+
+
+
+
+Overview ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Array.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Array.class.js.html
new file mode 100644
index 000000000..18a95620a
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Array.class.js.html
@@ -0,0 +1,180 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Array.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Array.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.prototype .clearArray = function (a) {
+ for (var k in a)
+ a[k] = null;
+
+ return a;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Cleanup.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Cleanup.class.js.html
new file mode 100644
index 000000000..9dee6db6f
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Cleanup.class.js.html
@@ -0,0 +1,1480 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Cleanup.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Cleanup.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.prototype .cleanupHTMLCode = function (s) {
+ s = s.replace(new RegExp('<p \\/>' , 'gi' ), '<p> </p>' );
+ s = s.replace(new RegExp('<p>\\s*<\\/p>' , 'gi' ), '<p> </p>' );
+
+
+ s = s.replace(new RegExp('<br>\\s*<\\/br>' , 'gi' ), '<br />' );
+
+
+ s = s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>' , 'gi' ), '<$1$2$3></$1$2>' );
+
+
+ s = s.replace(new RegExp('\\s+></' , 'gi' ), '></' );
+
+
+ s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>' , 'gi' ), '<$1$2 />' );
+
+
+ if (tinyMCE.isMSIE)
+ s = s.replace(new RegExp('<p><hr \\/><\\/p>' , 'gi' ), "<hr>" );
+
+
+ if (tinyMCE.getParam('convert_urls' ))
+ s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)' , 'gi' ), '$1' + tinyMCE.settings['document_base_url' ] + "#" );
+
+ return s;
+};
+
+
+TinyMCE_Engine.prototype .parseStyle = function (str) {
+ var ar = new Array();
+
+ if (str == null)
+ return ar;
+
+ var st = str.split(';' );
+
+ tinyMCE.clearArray(ar);
+
+ for (var i=0; i<st.length; i++) {
+ if (st[i] == '' )
+ continue;
+
+ var re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$' );
+ var pa = st[i].replace(re, '$1||$2' ).split('||' );
+
+ if (pa.length == 2)
+ ar[pa[0].toLowerCase()] = pa[1];
+ }
+
+ return ar;
+};
+
+
+TinyMCE_Engine.prototype .compressStyle = function (ar, pr, sf, res) {
+ var box = new Array();
+
+ box[0] = ar[pr + '-top' + sf];
+ box[1] = ar[pr + '-left' + sf];
+ box[2] = ar[pr + '-right' + sf];
+ box[3] = ar[pr + '-bottom' + sf];
+
+ for (var i=0; i<box.length; i++) {
+ if (box[i] == null)
+ return ;
+
+ for (var a=0; a<box.length; a++) {
+ if (box[a] != box[i])
+ return ;
+ }
+ }
+
+
+ ar[res] = box[0];
+ ar[pr + '-top' + sf] = null;
+ ar[pr + '-left' + sf] = null;
+ ar[pr + '-right' + sf] = null;
+ ar[pr + '-bottom' + sf] = null;
+};
+
+
+TinyMCE_Engine.prototype .serializeStyle = function (ar) {
+ var str = "" ;
+
+
+ tinyMCE.compressStyle(ar, "border" , "" , "border" );
+ tinyMCE.compressStyle(ar, "border" , "-width" , "border-width" );
+ tinyMCE.compressStyle(ar, "border" , "-color" , "border-color" );
+ tinyMCE.compressStyle(ar, "border" , "-style" , "border-style" );
+ tinyMCE.compressStyle(ar, "padding" , "" , "padding" );
+ tinyMCE.compressStyle(ar, "margin" , "" , "margin" );
+
+ for (var key in ar) {
+ var val = ar[key];
+
+ if (typeof(val) == 'function' )
+ continue;
+
+ if (key.indexOf('mso-' ) == 0)
+ continue;
+
+ if (val != null && val != '' ) {
+ val = '' + val;
+
+
+ val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)" , 'gi' ), "url('$1')" );
+
+
+ if (val.indexOf('url(' ) != -1 && tinyMCE.getParam('convert_urls' )) {
+ var m = new RegExp("url\\('(.*?)'\\)" ).exec(val);
+
+ if (m.length > 1)
+ val = "url('" + eval(tinyMCE.getParam('urlconverter_callback' ) + "(m[1], null, true);" ) + "')" ;
+ }
+
+
+ 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_Engine.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_Engine.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_Engine.prototype .convertSpansToFonts = function (doc) {
+ var sizes = tinyMCE.getParam('font_size_style_values' ).replace(/\s+/, '' ).split(',' );
+
+ var h = doc.body.innerHTML;
+ h = h.replace(/<span/gi, '<font' );
+ h = h.replace(/<\/span/gi, '</font' );
+ doc.body.innerHTML = h;
+
+ var s = doc.getElementsByTagName("font" );
+ for (var i=0; i<s.length; i++) {
+ var size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();
+ var fSize = 0;
+
+ for (var x=0; x<sizes.length; x++) {
+ if (sizes[x] == size) {
+ fSize = x + 1;
+ break;
+ }
+ }
+
+ if (fSize > 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_Engine.prototype .convertFontsToSpans = function (doc) {
+ var sizes = tinyMCE.getParam('font_size_style_values' ).replace(/\s+/, '' ).split(',' );
+
+ var h = doc.body.innerHTML;
+ h = h.replace(/<font/gi, '<span' );
+ h = h.replace(/<\/font/gi, '</span' );
+ doc.body.innerHTML = h;
+
+ var fsClasses = tinyMCE.getParam('font_size_classes' );
+ if (fsClasses != '' )
+ fsClasses = fsClasses.replace(/\s+/, '' ).split(',' );
+ else
+ fsClasses = null;
+
+ var s = doc.getElementsByTagName("span" );
+ for (var i=0; i<s.length; i++) {
+ var fSize, fFace, fColor;
+
+ fSize = tinyMCE.getAttrib(s[i], 'size' );
+ fFace = tinyMCE.getAttrib(s[i], 'face' );
+ fColor = tinyMCE.getAttrib(s[i], 'color' );
+
+ if (fSize != "" ) {
+ fSize = parseInt(fSize);
+
+ if (fSize > 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_Engine.prototype .cleanupAnchors = function (doc) {
+ var i, cn, x, an = doc.getElementsByTagName("a" );
+
+
+ for (i=an.length-1; i>=0; i--) {
+ if (tinyMCE.getAttrib(an[i], "name" ) != "" && tinyMCE.getAttrib(an[i], "href" ) == "" ) {
+ cn = an[i].childNodes;
+
+ for (x=cn.length-1; x>=0; x--)
+ tinyMCE.insertAfter(cn[x], an[i]);
+ }
+ }
+};
+
+
+TinyMCE_Engine.prototype .getContent = function (editor_id) {
+ var h;
+
+ if (typeof(editor_id) != "undefined" )
+ tinyMCE.selectedInstance = tinyMCE.getInstanceById(editor_id);
+
+ if (tinyMCE.selectedInstance) {
+ h = tinyMCE._cleanupHTML(this .selectedInstance, this .selectedInstance.getDoc(), tinyMCE.settings, this .selectedInstance.getBody(), false, true);
+
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertSpansToFonts(this .selectedInstance.getDoc());
+
+ return h;
+ }
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype ._fixListElements = function (d) {
+ var nl, x, a = ['ol' , 'ul' ], i, n, p, r = new RegExp('^(OL|UL)$' ), np;
+
+ for (x=0; x<a.length; x++) {
+ nl = d.getElementsByTagName(a[x]);
+
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+ p = n.parentNode;
+
+ if (r.test(p.nodeName)) {
+ np = tinyMCE.prevNode(n, 'LI' );
+
+ if (!np) {
+ np = d.createElement('li' );
+ np.innerHTML = ' ' ;
+ np.appendChild(n);
+ p.insertBefore(np, p.firstChild);
+ } else
+ np.appendChild(n);
+ }
+ }
+ }
+};
+
+
+TinyMCE_Engine.prototype ._fixTables = function (d) {
+ var nl, i, n, p, np, x, t;
+
+ nl = d.getElementsByTagName('table' );
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+
+ if ((p = tinyMCE.getParentElement(n, 'p,div,h1,h2,h3,h4,h5,h6' )) != null) {
+ np = p.cloneNode(false);
+ np.removeAttribute('id' );
+
+ t = n;
+
+ while ((n = n.nextSibling))
+ np.appendChild(n);
+
+ tinyMCE.insertAfter(np, p);
+ tinyMCE.insertAfter(t, p);
+ }
+ }
+};
+
+
+TinyMCE_Engine.prototype ._cleanupHTML = function (inst, doc, config, elm, visual, on_save, on_submit) {
+ var h, d, t1, t2, t3, t4, t5, c, s;
+
+ if (!tinyMCE.getParam('cleanup' ))
+ return elm.innerHTML;
+
+ on_save = typeof(on_save) == 'undefined' ? false : on_save;
+
+ c = inst.cleanup;
+ s = inst.settings;
+ d = c.settings.debug;
+
+ if (d)
+ t1 = new Date().getTime();
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertFontsToSpans(doc);
+
+ if (tinyMCE.getParam("fix_list_elements" ))
+ tinyMCE._fixListElements(doc);
+
+ if (tinyMCE.getParam("fix_table_elements" ))
+ tinyMCE._fixTables(doc);
+
+
+ tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom" , doc.body);
+
+ if (d)
+ t2 = new Date().getTime();
+
+ c.settings.on_save = on_save;
+
+
+ c.idCount = 0;
+ c.serializationId++;
+ c.serializedNodes = new Array();
+ c.sourceIndex = -1;
+
+ if (s.cleanup_serializer == "xml" )
+ h = c.serializeNodeAsXML(elm);
+ else
+ h = c.serializeNodeAsHTML(elm);
+
+ if (d)
+ t3 = new Date().getTime();
+
+
+ h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '' );
+ h = h.replace(new RegExp(' (rowspan="1"|colspan="1")' , 'g' ), '' );
+ h = h.replace(/<p><hr \/><\/p>/g, '<hr />' );
+ h = h.replace(/<p>( | )<\/p><hr \/><p>( | )<\/p>/g, '<hr />' );
+ h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td> </td>' );
+ h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p> </p>' );
+ h = h.replace(/<p>\s*( | )\s*<br \/>\s*( | )\s*<\/p>/g, '<p> </p>' );
+ h = h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g, '<p> </p>' );
+ h = h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g, '<p> </p>' );
+ h = h.replace(new RegExp('<a>(.*?)<\\/a>' , 'g' ), '$1' );
+ h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1> </p>' );
+
+
+ if (/^\s*(<br \/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))
+ h = '' ;
+
+
+ if (s.preformatted) {
+ h = h.replace(/^<pre>/, '' );
+ h = h.replace(/<\/pre>$/, '' );
+ h = '<pre>' + h + '</pre>' ;
+ }
+
+
+ if (tinyMCE.isGecko) {
+ h = h.replace(/<o:p _moz-userdefined="" \/>/g, '' );
+ h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1> </td>' );
+ }
+
+ if (s.force_br_newlines)
+ h = h.replace(/<p>( | )<\/p>/g, '<br />' );
+
+
+ h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor" , h);
+
+
+ if (on_save) {
+ h = h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|' + s.visual_table_class + ')' , 'g' ), '' );
+ h = h.replace(new RegExp(' ?class=""' , 'g' ), '' );
+ }
+
+ if (s.remove_linebreaks && !c.settings.indent)
+ h = h.replace(/\n|\r/g, ' ' );
+
+ if (d)
+ t4 = new Date().getTime();
+
+ if (on_save && c.settings.indent)
+ h = c.formatHTML(h);
+
+
+ if (on_submit && (s.encoding == "xml" || s.encoding == "html" ))
+ h = c.xmlEncode(h);
+
+ if (d)
+ t5 = new Date().getTime();
+
+ if (c.settings.debug)
+ tinyMCE.debug("Cleanup in ms: Pre=" + (t2-t1) + ", Serialize: " + (t3-t2) + ", Post: " + (t4-t3) + ", Format: " + (t5-t4) + ", Sum: " + (t5-t1) + "." );
+
+ return h;
+};
+
+
+function TinyMCE_Cleanup() {
+ this .isMSIE = (navigator.appName == "Microsoft Internet Explorer" );
+ this .rules = tinyMCE.clearArray(new Array());
+
+
+ this .settings = {
+ indent_elements : 'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object' ,
+ newline_before_elements : 'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td' ,
+ newline_after_elements : 'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script' ,
+ newline_before_after_elements : 'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div' ,
+ indent_char : '\t' ,
+ indent_levels : 1,
+ entity_encoding : 'raw' ,
+ valid_elements : '*[*]' ,
+ entities : '' ,
+ url_converter : '' ,
+ invalid_elements : '' ,
+ verify_html : false
+ };
+
+ this .vElements = tinyMCE.clearArray(new Array());
+ this .vElementsRe = '' ;
+ this .closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|BUTTON|AREA)$/;
+ this .codeElementsRe = /^(SCRIPT|STYLE)$/;
+ this .serializationId = 0;
+ this .mceAttribs = {
+ href : 'mce_href' ,
+ src : 'mce_src' ,
+ type : 'mce_type'
+ };
+}
+
+TinyMCE_Cleanup.prototype = {
+
+ init : function (s) {
+ var n, a, i, ir, or, st;
+
+ for (n in s)
+ this .settings[n] = s[n];
+
+
+ s = this .settings;
+
+
+ this .inRe = this ._arrayToRe(s.indent_elements.split(',' ), '' , '^<(' , ')[^>]*' );
+ this .ouRe = this ._arrayToRe(s.indent_elements.split(',' ), '' , '^<\\/(' , ')[^>]*' );
+ this .nlBeforeRe = this ._arrayToRe(s.newline_before_elements.split(',' ), 'gi' , '<(' , ')([^>]*)>' );
+ this .nlAfterRe = this ._arrayToRe(s.newline_after_elements.split(',' ), 'gi' , '<(' , ')([^>]*)>' );
+ this .nlBeforeAfterRe = this ._arrayToRe(s.newline_before_after_elements.split(',' ), 'gi' , '<(\\/?)(' , ')([^>]*)>' );
+
+ if (s.invalid_elements != '' )
+ this .iveRe = this ._arrayToRe(s.invalid_elements.toUpperCase().split(',' ), 'g' , '^(' , ')$' );
+ else
+ this .iveRe = null;
+
+
+ st = '' ;
+ for (i=0; i<s.indent_levels; i++)
+ st += s.indent_char;
+
+ this .inStr = st;
+
+
+ if (!s.verify_html) {
+ s.valid_elements = '*[*]' ;
+ s.extended_valid_elements = '' ;
+ }
+
+ this .fillStr = s.entity_encoding == "named" ? " " : " " ;
+ this .idCount = 0;
+ },
+
+
+ addRuleStr : function (s) {
+ var r = this .parseRuleStr(s);
+ var n;
+
+ for (n in r) {
+ if (r[n])
+ this .rules[n] = r[n];
+ }
+
+ this .vElements = tinyMCE.clearArray(new Array());
+
+ for (n in this .rules) {
+ if (this .rules[n])
+ this .vElements[this .vElements.length] = this .rules[n].tag;
+ }
+
+ this .vElementsRe = this ._arrayToRe(this .vElements, '' );
+ },
+
+
+ parseRuleStr : function (s) {
+ var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray(new Array()), dv;
+
+ if (s == null || s.length == 0)
+ return or;
+
+ ta = s.split(',' );
+ for (x=0; x<ta.length; x++) {
+ s = ta[x];
+ if (s.length == 0)
+ continue;
+
+
+ p = this .split(/\[|\]/, s);
+ if (p == null || p.length < 1)
+ t = s.toUpperCase();
+ else
+ t = p[0].toUpperCase();
+
+
+ tn = this .split('/' , t);
+ for (y=0; y<tn.length; y++) {
+ r = {};
+
+ r.tag = tn[y];
+ r.forceAttribs = null;
+ r.defaultAttribs = null;
+ r.validAttribValues = null;
+
+
+ px = r.tag.charAt(0);
+ r.forceOpen = px == '+' ;
+ r.removeEmpty = px == '-' ;
+ r.fill = px == '#' ;
+ r.tag = r.tag.replace(/\+|-|#/g, '' );
+ r.oTagName = tn[0].replace(/\+|-|#/g, '' ).toLowerCase();
+ r.isWild = new RegExp('\\*|\\?|\\+' , 'g' ).test(r.tag);
+ r.validRe = new RegExp(this ._wildcardToRe('^' + r.tag + '$' ));
+
+
+ if (p.length > 1) {
+ r.vAttribsRe = '^(' ;
+ a = this .split(/\|/, p[1]);
+
+ for (i=0; i<a.length; i++) {
+ t = a[i];
+
+ av = new RegExp('(=|:|<)(.*?)$' ).exec(t);
+ t = t.replace(new RegExp('(=|:|<).*?$' ), '' );
+ if (av && av.length > 0) {
+ if (av[0].charAt(0) == ':' ) {
+ if (!r.forceAttribs)
+ r.forceAttribs = tinyMCE.clearArray(new Array());
+
+ r.forceAttribs[t.toLowerCase()] = av[0].substring(1);
+ } else if (av[0].charAt(0) == '=' ) {
+ if (!r.defaultAttribs)
+ r.defaultAttribs = tinyMCE.clearArray(new Array());
+
+ dv = av[0].substring(1);
+
+ r.defaultAttribs[t.toLowerCase()] = dv == "" ? "mce_empty" : dv;
+ } else if (av[0].charAt(0) == '<' ) {
+ if (!r.validAttribValues)
+ r.validAttribValues = tinyMCE.clearArray(new Array());
+
+ r.validAttribValues[t.toLowerCase()] = this ._arrayToRe(this .split('?' , av[0].substring(1)), '' );
+ }
+ }
+
+ r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' : '' );
+
+ a[i] = t.toLowerCase();
+ }
+
+ r.vAttribsRe += ')$' ;
+ r.vAttribsRe = this ._wildcardToRe(r.vAttribsRe);
+ r.vAttribsReIsWild = new RegExp('\\*|\\?|\\+' , 'g' ).test(r.vAttribsRe);
+ r.vAttribsRe = new RegExp(r.vAttribsRe);
+ r.vAttribs = a.reverse();
+
+
+ } else {
+ r.vAttribsRe = '' ;
+ r.vAttribs = tinyMCE.clearArray(new Array());
+ r.vAttribsReIsWild = false;
+ }
+
+ or[r.tag] = r;
+ }
+ }
+
+ return or;
+ },
+
+
+ serializeNodeAsXML : function (n) {
+ var s, b;
+
+ if (!this .xmlDoc) {
+ if (this .isMSIE) {
+ try {this .xmlDoc = new ActiveXObject('MSXML2.DOMDocument' );} catch (e) {}
+
+ if (!this .xmlDoc)
+ try {this .xmlDoc = new ActiveXObject('Microsoft.XmlDom' );} catch (e) {}
+ } else
+ this .xmlDoc = document.implementation.createDocument('' , '' , null);
+
+ if (!this .xmlDoc)
+ alert("Error XML Parser could not be found." );
+ }
+
+ if (this .xmlDoc.firstChild)
+ this .xmlDoc.removeChild(this .xmlDoc.firstChild);
+
+ b = this .xmlDoc.createElement("html" );
+ b = this .xmlDoc.appendChild(b);
+
+ this ._convertToXML(n, b);
+
+ if (this .isMSIE)
+ return this .xmlDoc.xml;
+ else
+ return new XMLSerializer().serializeToString(this .xmlDoc);
+ },
+
+
+ _convertToXML : function (n, xn) {
+ var xd, el, i, l, cn, at, no, hc = false;
+
+ if (this ._isDuplicate(n))
+ return ;
+
+ xd = this .xmlDoc;
+
+ switch (n.nodeType) {
+ case 1:
+ hc = n.hasChildNodes();
+
+ el = xd.createElement(n.nodeName.toLowerCase());
+
+ at = n.attributes;
+ for (i=at.length-1; i>-1; i--) {
+ no = at[i];
+
+ if (no.specified && no.nodeValue)
+ el.setAttribute(no.nodeName.toLowerCase(), no.nodeValue);
+ }
+
+ if (!hc && !this .closeElementsRe.test(n.nodeName))
+ el.appendChild(xd.createTextNode("" ));
+
+ xn = xn.appendChild(el);
+ break;
+
+ case 3:
+ xn.appendChild(xd.createTextNode(n.nodeValue));
+ return ;
+
+ case 8:
+ xn.appendChild(xd.createComment(n.nodeValue));
+ return ;
+ }
+
+ if (hc) {
+ cn = n.childNodes;
+
+ for (i=0, l=cn.length; i<l; i++)
+ this ._convertToXML(cn[i], xn);
+ }
+ },
+
+
+ serializeNodeAsHTML : function (n) {
+ var en, no, h = '' , i, l, r, cn, va = false, f = false, at, hc;
+
+ this ._setupRules();
+
+ if (this ._isDuplicate(n))
+ return '' ;
+
+ switch (n.nodeType) {
+ case 1:
+ hc = n.hasChildNodes();
+
+
+ if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && n.nodeName.indexOf('/' ) != -1)
+ break;
+
+ if (this .vElementsRe.test(n.nodeName) && (!this .iveRe || !this .iveRe.test(n.nodeName))) {
+ va = true;
+
+ r = this .rules[n.nodeName];
+ if (!r) {
+ at = this .rules;
+ for (no in at) {
+ if (at[no] && at[no].validRe.test(n.nodeName)) {
+ r = at[no];
+ break;
+ }
+ }
+ }
+
+ en = r.isWild ? n.nodeName.toLowerCase() : r.oTagName;
+ f = r.fill;
+
+ if (r.removeEmpty && !hc)
+ return "" ;
+
+ h += '<' + en;
+
+ if (r.vAttribsReIsWild) {
+
+ at = n.attributes;
+ for (i=at.length-1; i>-1; i--) {
+ no = at[i];
+ if (no.specified && r.vAttribsRe.test(no.nodeName))
+ h += this ._serializeAttribute(n, r, no.nodeName);
+ }
+ } else {
+
+ for (i=r.vAttribs.length-1; i>-1; i--)
+ h += this ._serializeAttribute(n, r, r.vAttribs[i]);
+ }
+
+
+ if (!this .settings.on_save) {
+ at = this .mceAttribs;
+
+ for (no in at) {
+ if (at[no])
+ h += this ._serializeAttribute(n, r, at[no]);
+ }
+ }
+
+
+ if (this .closeElementsRe.test(n.nodeName))
+ return h + ' />' ;
+
+ h += '>' ;
+
+ if (this .isMSIE && this .codeElementsRe.test(n.nodeName))
+ h += n.innerHTML;
+ }
+ break;
+
+ case 3:
+ if (n.parentNode && this .codeElementsRe.test(n.parentNode.nodeName))
+ return this .isMSIE ? '' : n.nodeValue;
+
+ return this .xmlEncode(n.nodeValue);
+
+ case 8:
+ return "<!--" + this ._trimComment(n.nodeValue) + "-->" ;
+ }
+
+ if (hc) {
+ cn = n.childNodes;
+
+ for (i=0, l=cn.length; i<l; i++)
+ h += this .serializeNodeAsHTML(cn[i]);
+ }
+
+
+ if (f && !hc)
+ h += this .fillStr;
+
+
+ if (va)
+ h += '</' + en + '>' ;
+
+ return h;
+ },
+
+
+ _serializeAttribute : function (n, r, an) {
+ var av = '' , t, os = this .settings.on_save;
+
+ if (os && (an.indexOf('mce_' ) == 0 || an.indexOf('_moz' ) == 0))
+ return '' ;
+
+ if (os && this .mceAttribs[an])
+ av = this ._getAttrib(n, this .mceAttribs[an]);
+
+ if (av.length == 0)
+ av = this ._getAttrib(n, an);
+
+ if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) {
+ av = t;
+
+ if (av == "mce_empty" )
+ return " " + an + '=""' ;
+ }
+
+ if (r.forceAttribs && (t = r.forceAttribs[an]))
+ av = t;
+
+ if (os && av.length != 0 && this .settings.url_converter.length != 0 && /^(src|href|longdesc)$/.test(an))
+ av = eval(this .settings.url_converter + '(this, n, av)' );
+
+ if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av))
+ return "" ;
+
+ if (av.length != 0 && av == "{$uid}" )
+ av = "uid_" + (this .idCount++);
+
+ if (av.length != 0)
+ return " " + an + "=" + '"' + this .xmlEncode(av) + '"' ;
+
+ return "" ;
+ },
+
+
+ formatHTML : function (h) {
+ var s = this .settings, p = '' , i = 0, li = 0, o = '' , l;
+
+ h = h.replace(/\r/g, '' );
+ h = '\n' + h;
+ h = h.replace(new RegExp('\\n\\s+' , 'gi' ), '\n' );
+ h = h.replace(this .nlBeforeRe, '\n<$1$2>' );
+ h = h.replace(this .nlAfterRe, '<$1$2>\n' );
+ h = h.replace(this .nlBeforeAfterRe, '\n<$1$2$3>\n' );
+ h += '\n' ;
+
+
+
+ while ((i = h.indexOf('\n' , i + 1)) != -1) {
+ if ((l = h.substring(li + 1, i)).length != 0) {
+ if (this .ouRe.test(l) && p.length >= s.indent_levels)
+ p = p.substring(s.indent_levels);
+
+ o += p + l + '\n' ;
+
+ if (this .inRe.test(l))
+ p += this .inStr;
+ }
+
+ li = i;
+ }
+
+
+
+ return o;
+ },
+
+
+ xmlEncode : function (s) {
+ var i, l, e, o = '' , c;
+
+ this ._setupEntities();
+
+ switch (this .settings.entity_encoding) {
+ case "raw" :
+ return tinyMCE.xmlEncode(s);
+
+ case "named" :
+ for (i=0, l=s.length; i<l; i++) {
+ c = s.charCodeAt(i);
+ e = this .entities[c];
+
+ if (e && e != '' )
+ o += '&' + e + ';' ;
+ else
+ o += String.fromCharCode(c);
+ }
+
+ return o;
+
+ case "numeric" :
+ for (i=0, l=s.length; i<l; i++) {
+ c = s.charCodeAt(i);
+
+ if (c > 127 || c == 60 || c == 62 || c == 38 || c == 39 || c == 34)
+ o += '&#' + c + ";" ;
+ else
+ o += String.fromCharCode(c);
+ }
+
+ return o;
+ }
+
+ return s;
+ },
+
+
+ split : function (re, s) {
+ var c = s.split(re);
+ var i, l, o = new Array();
+
+ for (i=0, l=c.length; i<l; i++) {
+ if (c[i] != '' )
+ o[i] = c[i];
+ }
+
+ return o;
+ },
+
+
+ _trimComment : function (s) {
+
+ s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"' , 'gi' ), "" );
+ s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"' , 'gi' ), "" );
+
+ return s;
+ },
+
+
+ _getAttrib : function (e, n, d) {
+ if (typeof(d) == "undefined" )
+ d = "" ;
+
+ if (!e || e.nodeType != 1)
+ return d;
+
+ var v = e.getAttribute(n, 0);
+
+ if (n == "class" && !v)
+ v = e.className;
+
+ if (this .isMSIE && n == "http-equiv" )
+ v = e.httpEquiv;
+
+ if (this .isMSIE && e.nodeName == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded" )
+ v = "" ;
+
+ if (this .isMSIE && e.nodeName == "INPUT" && n == "size" && v == "20" )
+ v = "" ;
+
+ if (this .isMSIE && e.nodeName == "INPUT" && n == "maxlength" && v == "2147483647" )
+ v = "" ;
+
+ if (n == "style" && !tinyMCE.isOpera)
+ v = e.style.cssText;
+
+ if (n == 'style' )
+ v = tinyMCE.serializeStyle(tinyMCE.parseStyle(v));
+
+ if (this .settings.on_save && n.indexOf('on' ) != -1 && this .settings.on_save && v && v != "" )
+ v = tinyMCE.cleanupEventStr(v);
+
+ return (v && v != "" ) ? '' + v : d;
+ },
+
+
+ _urlConverter : function (c, n, v) {
+ if (!c.settings.on_save)
+ return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, v);
+ else if (tinyMCE.getParam('convert_urls' ))
+ return eval(tinyMCE.settings.urlconverter_callback + "(v, n, true);" );
+
+ return v;
+ },
+
+
+ _arrayToRe : function (a, op, be, af) {
+ var i, r;
+
+ op = typeof(op) == "undefined" ? "gi" : op;
+ be = typeof(be) == "undefined" ? "^(" : be;
+ af = typeof(af) == "undefined" ? ")$" : af;
+
+ r = be;
+
+ for (i=0; i<a.length; i++)
+ r += this ._wildcardToRe(a[i]) + (i != a.length-1 ? "|" : "" );
+
+ r += af;
+
+ return new RegExp(r, op);
+ },
+
+
+ _wildcardToRe : function (s) {
+ s = s.replace(/\?/g, '(\\S?)' );
+ s = s.replace(/\+/g, '(\\S+)' );
+ s = s.replace(/\*/g, '(\\S*)' );
+
+ return s;
+ },
+
+
+ _setupEntities : function () {
+ var n, a, i, s = this .settings;
+
+
+ if (!this .entitiesDone) {
+ if (s.entity_encoding == "named" ) {
+ n = tinyMCE.clearArray(new Array());
+ a = this .split(',' , s.entities);
+ for (i=0; i<a.length; i+=2)
+ n[a[i]] = a[i+1];
+
+ this .entities = n;
+ }
+
+ this .entitiesDone = true;
+ }
+ },
+
+
+ _setupRules : function () {
+ var s = this .settings;
+
+
+ if (!this .rulesDone) {
+ this .addRuleStr(s.valid_elements);
+ this .addRuleStr(s.extended_valid_elements);
+
+ this .rulesDone = true;
+ }
+ },
+
+
+ _isDuplicate : function (n) {
+ var i;
+
+ if (!this .settings.fix_content_duplication)
+ return false;
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera && n.nodeType == 1) {
+
+ if (n.mce_serialized == this .serializationId)
+ return true;
+
+ n.setAttribute('mce_serialized' , this .serializationId);
+ } else {
+
+ for (i=0; i<this .serializedNodes.length; i++) {
+ if (this .serializedNodes[i] == n)
+ return true;
+ }
+
+ this .serializedNodes[this .serializedNodes.length] = n;
+ }
+
+ return false;
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Control.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Control.class.js.html
new file mode 100644
index 000000000..04a04e439
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Control.class.js.html
@@ -0,0 +1,1710 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Control.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Control.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_Control(settings) {
+ var t, i, to, fu, p, x, fn, fu, pn, s = settings;
+
+ this .undoRedoLevel = true;
+ this .isTinyMCE_Control = true;
+
+
+ this .settings = s;
+ this .settings['theme' ] = tinyMCE.getParam("theme" , "default" );
+ this .settings['width' ] = tinyMCE.getParam("width" , -1);
+ this .settings['height' ] = tinyMCE.getParam("height" , -1);
+ this .selection = new TinyMCE_Selection(this );
+ this .undoRedo = new TinyMCE_UndoRedo(this );
+ this .cleanup = new TinyMCE_Cleanup();
+ this .shortcuts = new Array();
+ this .hasMouseMoved = false;
+
+ this .cleanup.init({
+ valid_elements : s.valid_elements,
+ extended_valid_elements : s.extended_valid_elements,
+ entities : s.entities,
+ entity_encoding : s.entity_encoding,
+ debug : s.cleanup_debug,
+ url_converter : 'TinyMCE_Cleanup.prototype._urlConverter' ,
+ indent : s.apply_source_formatting,
+ invalid_elements : s.invalid_elements,
+ verify_html : s.verify_html,
+ fix_content_duplication : s.fix_content_duplication
+ });
+
+
+ t = this .settings['theme' ];
+ if (!tinyMCE.hasTheme(t)) {
+ fn = tinyMCE.callbacks;
+ to = {};
+
+ for (i=0; i<fn.length; i++) {
+ if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))
+ to[fn[i]] = fu;
+ }
+
+ tinyMCE.addTheme(t, to);
+ }
+
+
+ this .plugins = new Array();
+ p = tinyMCE.getParam('plugins' , '' , true, ',' );
+ if (p.length > 0) {
+ for (i=0; i<p.length; i++) {
+ pn = p[i];
+
+ if (pn.charAt(0) == '-' )
+ pn = pn.substring(1);
+
+ if (!tinyMCE.hasPlugin(pn)) {
+ fn = tinyMCE.callbacks;
+ to = {};
+
+ for (x=0; x<fn.length; x++) {
+ if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))
+ to[fn[x]] = fu;
+ }
+
+ tinyMCE.addPlugin(pn, to);
+ }
+
+ this .plugins[this .plugins.length] = pn;
+ }
+ }
+};
+
+TinyMCE_Control.prototype = {
+
+ hasPlugin : function (n) {
+ var i;
+
+ for (i=0; i<this .plugins.length; i++) {
+ if (this .plugins[i] == n)
+ return true;
+ }
+
+ return false;
+ },
+
+
+ addPlugin : function (n, p) {
+ if (!this .hasPlugin(n)) {
+ tinyMCE.addPlugin(n, p);
+ this .plugins[this .plugins.length] = n;
+ }
+ },
+
+
+ repaint : function () {
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ return ;
+
+ try {
+ var s = this .selection;
+ var b = s.getBookmark(true);
+ this .getBody().style.display = 'none' ;
+ this .getDoc().execCommand('selectall' , false, null);
+ this .getSel().collapseToStart();
+ this .getBody().style.display = 'block' ;
+ s.moveToBookmark(b);
+ } catch (ex) {
+
+ }
+ },
+
+
+ switchSettings : function () {
+ if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this .settings['index' ]) {
+ tinyMCE.settings = this .settings;
+ tinyMCE.currentConfig = this .settings['index' ];
+ }
+ },
+
+
+ getBody : function () {
+ return this .getDoc().body;
+ },
+
+
+ getDoc : function () {
+ return this .contentWindow.document;
+ },
+
+
+ getWin : function () {
+ return this .contentWindow;
+ },
+
+
+ addShortcut : function (m, k, d, cmd, ui, va) {
+ var n = typeof(k) == "number" , ie = tinyMCE.isMSIE, c, sc, i;
+ var scl = this .shortcuts;
+
+ if (!tinyMCE.getParam('custom_shortcuts' ))
+ return false;
+
+ m = m.toLowerCase();
+ k = ie && !n ? k.toUpperCase() : k;
+ c = n ? null : k.charCodeAt(0);
+ d = d && d.indexOf('lang_' ) == 0 ? tinyMCE.getLang(d) : d;
+
+ sc = {
+ alt : m.indexOf('alt' ) != -1,
+ ctrl : m.indexOf('ctrl' ) != -1,
+ shift : m.indexOf('shift' ) != -1,
+ charCode : c,
+ keyCode : n ? k : (ie ? c : null),
+ desc : d,
+ cmd : cmd,
+ ui : ui,
+ val : va
+ };
+
+ for (i=0; i<scl.length; i++) {
+ if (sc.alt == scl[i].alt && sc.ctrl == scl[i].ctrl && sc.shift == scl[i].shift
+ && sc.charCode == scl[i].charCode && sc.keyCode == scl[i].keyCode) {
+ return false;
+ }
+ }
+
+ scl[scl.length] = sc;
+
+ return true;
+ },
+
+
+ handleShortcut : function (e) {
+ var i, s = this .shortcuts, o;
+
+ for (i=0; i<s.length; i++) {
+ o = s[i];
+ if (o.alt == e.altKey && o.ctrl == e.ctrlKey && (o.keyCode == e.keyCode || o.charCode == e.charCode)) {
+ if (o.cmd && (e.type == "keydown" || (e.type == "keypress" && !tinyMCE.isOpera)))
+ tinyMCE.execCommand(o.cmd, o.ui, o.val);
+
+ tinyMCE.cancelEvent(e);
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+
+ autoResetDesignMode : function () {
+
+ if (!tinyMCE.isMSIE && this .isHidden() && tinyMCE.getParam('auto_reset_designmode' ))
+ eval('try { this.getDoc().designMode = "On"; } catch(e) {}' );
+ },
+
+
+ isHidden : function () {
+ if (tinyMCE.isMSIE)
+ return false;
+
+ var s = this .getSel();
+
+
+ return (!s || !s.rangeCount || s.rangeCount == 0);
+ },
+
+
+ isDirty : function () {
+
+ return this .startContent != tinyMCE.trim(this .getBody().innerHTML) && !tinyMCE.isNotDirty;
+ },
+
+
+ _mergeElements : function (scmd, pa, ch, override) {
+ if (scmd == "removeformat" ) {
+ pa.className = "" ;
+ pa.style.cssText = "" ;
+ ch.className = "" ;
+ ch.style.cssText = "" ;
+ return ;
+ }
+
+ var st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style" ));
+ var stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style" ));
+ var className = tinyMCE.getAttrib(pa, "class" );
+
+ className += " " + tinyMCE.getAttrib(ch, "class" );
+
+ if (override) {
+ for (var n in st) {
+ if (typeof(st[n]) == 'function' )
+ continue;
+
+ stc[n] = st[n];
+ }
+ } else {
+ for (var n in stc) {
+ if (typeof(stc[n]) == 'function' )
+ continue;
+
+ st[n] = stc[n];
+ }
+ }
+
+ tinyMCE.setAttrib(pa, "style" , tinyMCE.serializeStyle(st));
+ tinyMCE.setAttrib(pa, "class" , tinyMCE.trim(className));
+ ch.className = "" ;
+ ch.style.cssText = "" ;
+ ch.removeAttribute("class" );
+ ch.removeAttribute("style" );
+ },
+
+
+ _setUseCSS : function (b) {
+ var d = this .getDoc();
+
+ try {d.execCommand("useCSS" , false, !b);} catch (ex) {}
+ try {d.execCommand("styleWithCSS" , false, b);} catch (ex) {}
+
+ if (!tinyMCE.getParam("table_inline_editing" ))
+ try {d.execCommand('enableInlineTableEditing' , false, "false" );} catch (ex) {}
+
+ if (!tinyMCE.getParam("object_resizing" ))
+ try {d.execCommand('enableObjectResizing' , false, "false" );} catch (ex) {}
+ },
+
+
+ execCommand : function (command, user_interface, value) {
+ var doc = this .getDoc();
+ var win = this .getWin();
+ var focusElm = this .getFocusElement();
+
+
+ if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel' , 'gi' ).test(command))
+ this .undoBookmark = null;
+
+ if (this .lastSafariSelection && !new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel' , 'gi' ).test(command)) {
+ this .selection.moveToBookmark(this .lastSafariSelection);
+ tinyMCE.selectedElement = this .lastSafariSelectedElement;
+ }
+
+
+ if (!tinyMCE.isMSIE && !this .useCSS) {
+ this ._setUseCSS(false);
+ this .useCSS = true;
+ }
+
+
+ this .contentDocument = doc;
+
+ if (tinyMCE.execCommandCallback(this , 'execcommand_callback' , 'execCommand' , this .editorId, this .getBody(), command, user_interface, value))
+ return ;
+
+
+ if (focusElm && focusElm.nodeName == "IMG" ) {
+ var align = focusElm.getAttribute('align' );
+ var img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm;
+
+ switch (command) {
+ case "JustifyLeft" :
+ if (align == 'left' )
+ img.removeAttribute('align' );
+ else
+ img.setAttribute('align' , 'left' );
+
+
+ var div = focusElm.parentNode;
+ if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
+ div.parentNode.replaceChild(img, div);
+
+ this .selection.selectNode(img);
+ this .repaint();
+ tinyMCE.triggerNodeChange();
+ return ;
+
+ case "JustifyCenter" :
+ img.removeAttribute('align' );
+
+
+ var div = tinyMCE.getParentElement(focusElm, "div" );
+ if (div && div.style.textAlign == "center" ) {
+
+ if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
+ div.parentNode.replaceChild(img, div);
+ } else {
+
+ var div = this .getDoc().createElement("div" );
+ div.style.textAlign = 'center' ;
+ div.appendChild(img);
+ focusElm.parentNode.replaceChild(div, focusElm);
+ }
+
+ this .selection.selectNode(img);
+ this .repaint();
+ tinyMCE.triggerNodeChange();
+ return ;
+
+ case "JustifyRight" :
+ if (align == 'right' )
+ img.removeAttribute('align' );
+ else
+ img.setAttribute('align' , 'right' );
+
+
+ var div = focusElm.parentNode;
+ if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)
+ div.parentNode.replaceChild(img, div);
+
+ this .selection.selectNode(img);
+ this .repaint();
+ tinyMCE.triggerNodeChange();
+ return ;
+ }
+ }
+
+ if (tinyMCE.settings['force_br_newlines' ]) {
+ var alignValue = "" ;
+
+ if (doc.selection.type != "Control" ) {
+ switch (command) {
+ case "JustifyLeft" :
+ alignValue = "left" ;
+ break;
+
+ case "JustifyCenter" :
+ alignValue = "center" ;
+ break;
+
+ case "JustifyFull" :
+ alignValue = "justify" ;
+ break;
+
+ case "JustifyRight" :
+ alignValue = "right" ;
+ break;
+ }
+
+ if (alignValue != "" ) {
+ var rng = doc.selection.createRange();
+
+ if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div" )) != null)
+ divElm.setAttribute("align" , alignValue);
+ else if (rng.pasteHTML && rng.htmlText.length > 0)
+ rng.pasteHTML('<div align="' + alignValue + '">' + rng.htmlText + "</div>" );
+
+ tinyMCE.triggerNodeChange();
+ return ;
+ }
+ }
+ }
+
+ switch (command) {
+ case "mceRepaint" :
+ this .repaint();
+ return true;
+
+ case "InsertUnorderedList" :
+ case "InsertOrderedList" :
+ var tag = (command == "InsertUnorderedList" ) ? "ul" : "ol" ;
+
+ if (tinyMCE.isSafari)
+ this .execCommand("mceInsertContent" , false, "<" + tag + "><li> </li><" + tag + ">" );
+ else
+ this .getDoc().execCommand(command, user_interface, value);
+
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "Strikethrough" :
+ if (tinyMCE.isSafari)
+ this .execCommand("mceInsertContent" , false, "<strike>" + this .selection.getSelectedHTML() + "</strike>" );
+ else
+ this .getDoc().execCommand(command, user_interface, value);
+
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceSelectNode" :
+ this .selection.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,blockquote,dt,dl,dd,samp" );
+
+ if (elm)
+ this .execCommand("mceRemoveNode" , false, elm);
+ } else {
+ if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>' , 'gi' ).test(value))
+ value = value.replace(/[^a-z]/gi, '' );
+
+ if (tinyMCE.isMSIE && new RegExp('blockquote|code|samp' , 'gi' ).test(value)) {
+ var b = this .selection.getBookmark();
+ this .getDoc().execCommand("FormatBlock" , false, '<p>' );
+ tinyMCE.renameElement(tinyMCE.getParentBlockElement(this .getFocusElement()), value);
+ this .selection.moveToBookmark(b);
+ } 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 .selection.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 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;
+
+
+ if (tinyMCE.isMSIE) {
+
+ 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 || (new RegExp('td|tr|tbody|table' , 'gi' ).test(felm.nodeName) && sel.anchorNode == felm.parentNode))
+ parentElm = felm;
+ }
+
+
+ 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' , '' );
+ }
+
+
+ var ch = tinyMCE.getNodeTree(parentElm, new Array(), 1);
+ for (var z=0; z<ch.length; z++) {
+ if (ch[z] == parentElm)
+ continue;
+
+ if (scmd == "setstyle" )
+ tinyMCE.setStyleAttrib(ch[z], sname, '' );
+
+ if (scmd == "setattrib" )
+ tinyMCE.setAttrib(ch[z], sname, '' );
+
+ if (scmd == "removeformat" ) {
+ ch[z].style.cssText = '' ;
+ tinyMCE.setAttrib(ch[z], 'class' , '' );
+ }
+ }
+ } else {
+ this ._setUseCSS(false);
+ doc.execCommand("FontName" , false, "#mce_temp_font#" );
+ var elementArray = tinyMCE.getElementsByAttributeValue(this .getBody(), "font" , "face" , "#mce_temp_font#" );
+
+
+ for (var x=0; x<elementArray.length; x++) {
+ elm = elementArray[x];
+ if (elm) {
+ var spanElm = doc.createElement(wrapper);
+
+ if (scmd == "setstyle" )
+ tinyMCE.setStyleAttrib(spanElm, sname, svalue);
+
+ if (scmd == "setattrib" )
+ tinyMCE.setAttrib(spanElm, sname, svalue);
+
+ if (scmd == "removeformat" ) {
+ spanElm.style.cssText = '' ;
+ tinyMCE.setAttrib(spanElm, 'class' , '' );
+ }
+
+ if (elm.hasChildNodes()) {
+ for (var i=0; i<elm.childNodes.length; i++)
+ spanElm.appendChild(elm.childNodes[i].cloneNode(true));
+ }
+
+ spanElm.setAttribute("mce_new" , "true" );
+ elm.parentNode.replaceChild(spanElm, elm);
+
+
+ var ch = tinyMCE.getNodeTree(spanElm, new Array(), 1);
+ for (var z=0; z<ch.length; z++) {
+ if (ch[z] == spanElm)
+ continue;
+
+ if (scmd == "setstyle" )
+ tinyMCE.setStyleAttrib(ch[z], sname, '' );
+
+ if (scmd == "setattrib" )
+ tinyMCE.setAttrib(ch[z], sname, '' );
+
+ if (scmd == "removeformat" ) {
+ ch[z].style.cssText = '' ;
+ tinyMCE.setAttrib(ch[z], 'class' , '' );
+ }
+ }
+ }
+ }
+ }
+
+
+ var nodes = doc.getElementsByTagName(wrapper);
+ for (var i=nodes.length-1; i>=0; i--) {
+ var elm = nodes[i];
+ var isNew = tinyMCE.getAttrib(elm, "mce_new" ) == "true" ;
+
+ elm.removeAttribute("mce_new" );
+
+
+ if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {
+
+ this ._mergeElements(scmd, elm, elm.childNodes[0], isNew);
+ continue;
+ }
+
+
+ if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {
+
+ if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))
+ this ._mergeElements(scmd, elm.parentNode, elm, false);
+ }
+ }
+
+
+ var nodes = doc.getElementsByTagName(wrapper);
+ for (var i=nodes.length-1; i>=0; i--) {
+ var elm = nodes[i];
+ var isEmpty = true;
+
+
+ var tmp = doc.createElement("body" );
+ tmp.appendChild(elm.cloneNode(false));
+
+
+ tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""' , 'gi' ), '' );
+
+ if (new RegExp('<span>' , 'gi' ).test(tmp.innerHTML)) {
+ for (var x=0; x<elm.childNodes.length; x++) {
+ if (elm.parentNode != null)
+ elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);
+ }
+
+ elm.parentNode.removeChild(elm);
+ }
+ }
+
+
+ if (scmd == "removeformat" )
+ tinyMCE.handleVisualAid(this .getBody(), true, this .visualAid, this );
+
+ tinyMCE.triggerNodeChange();
+
+ break;
+
+ case "FontName" :
+ if (value == null) {
+ var s = this .getSel();
+
+
+ if (tinyMCE.isGecko && s.isCollapsed) {
+ var f = tinyMCE.getParentElement(this .getFocusElement(), "font" );
+
+ if (f != null)
+ this .selection.selectNode(f, false);
+ }
+
+
+ this .getDoc().execCommand("RemoveFormat" , false, null);
+
+
+ if (f != null && tinyMCE.isGecko) {
+ var r = this .getRng().cloneRange();
+ r.collapse(true);
+ s.removeAllRanges();
+ s.addRange(r);
+ }
+ } else
+ this .getDoc().execCommand('FontName' , false, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);' , 1);
+
+ return ;
+
+ case "FontSize" :
+ this .getDoc().execCommand('FontSize' , false, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);' , 1);
+
+ return ;
+
+ case "forecolor" :
+ this .getDoc().execCommand('forecolor' , false, value);
+ break;
+
+ case "HiliteColor" :
+ if (tinyMCE.isGecko) {
+ this ._setUseCSS(true);
+ this .getDoc().execCommand('hilitecolor' , false, value);
+ this ._setUseCSS(false);
+ } else
+ this .getDoc().execCommand('BackColor' , false, value);
+ break;
+
+ case "Cut" :
+ case "Copy" :
+ case "Paste" :
+ var cmdFailed = false;
+
+
+ eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}' );
+
+ if (tinyMCE.isOpera && cmdFailed)
+ alert('Currently not supported by your browser, use keyboard shortcuts instead.' );
+
+
+ if (tinyMCE.isGecko && cmdFailed) {
+
+ if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg' ))))
+ window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html' , 'mceExternal' );
+
+ return ;
+ } else
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceSetContent" :
+ if (!value)
+ value = "" ;
+
+
+ value = tinyMCE.storeAwayURLs(value);
+ value = tinyMCE._customCleanup(this , "insert_to_editor" , value);
+ tinyMCE._setHTML(doc, value);
+ tinyMCE.setInnerHTML(doc.body, tinyMCE._cleanupHTML(this , doc, tinyMCE.settings, doc.body));
+ tinyMCE.convertAllRelativeURLs(doc.body);
+
+
+ tinyMCE._removeInternal(this .getBody());
+
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertSpansToFonts(doc);
+
+ tinyMCE.handleVisualAid(doc.body, true, this .visualAid, this );
+ tinyMCE._setEventsEnabled(doc.body, false);
+ return true;
+
+ case "mceCleanup" :
+ var b = this .selection.getBookmark();
+ tinyMCE._setHTML(this .contentDocument, this .getBody().innerHTML);
+ tinyMCE.setInnerHTML(this .getBody(), tinyMCE._cleanupHTML(this , this .contentDocument, this .settings, this .getBody(), this .visualAid));
+ tinyMCE.convertAllRelativeURLs(doc.body);
+
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertSpansToFonts(doc);
+
+ tinyMCE.handleVisualAid(this .getBody(), true, this .visualAid, this );
+ tinyMCE._setEventsEnabled(this .getBody(), false);
+ this .repaint();
+ this .selection.moveToBookmark(b);
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceReplaceContent" :
+
+ if (!value)
+ value = '' ;
+
+ this .getWin().focus();
+
+ var selectedText = "" ;
+
+ if (tinyMCE.isMSIE) {
+ var rng = doc.selection.createRange();
+ selectedText = rng.text;
+ } else
+ selectedText = this .getSel().toString();
+
+ if (selectedText.length > 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' );
+
+
+ this .execCommand('mceInsertContent' , false, key);
+
+
+ var scrollX = this .getDoc().body.scrollLeft + this .getDoc().documentElement.scrollLeft;
+ var scrollY = this .getDoc().body.scrollTop + this .getDoc().documentElement.scrollTop;
+
+
+ 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));
+
+
+ this .contentWindow.scrollTo(scrollX, scrollY);
+
+ this .execCommand('mceEndUndoLevel' );
+
+ break;
+
+ case "mceInsertContent" :
+
+ if (!value)
+ value = '' ;
+
+ var insertHTMLFailed = false;
+ this .getWin().focus();
+
+ if (tinyMCE.isGecko || tinyMCE.isOpera) {
+ try {
+
+ if (value.indexOf('<' ) == -1 && !value.match(/(&| |<|>)/g)) {
+ var r = this .getRng();
+ var n = this .getDoc().createTextNode(tinyMCE.entityDecode(value));
+ var s = this .getSel();
+ var r2 = r.cloneRange();
+
+
+ s.removeAllRanges();
+ r.deleteContents();
+ r.insertNode(n);
+
+
+ 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 ;
+ }
+ }
+
+
+ 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 {
+
+ var el = document.createElement("div" );
+ el.innerHTML = value;
+ value = el.firstChild.nodeValue;
+ value = doc.createTextNode(value);
+ }
+
+
+ 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 (rng.startContainer.nodeType == 3) {
+ var node = rng.startContainer.splitText(rng.startOffset);
+ node.parentNode.insertBefore(value, node);
+ } else
+ rng.insertNode(value);
+
+ if (!isHTML) {
+
+ sel.selectAllChildren(doc.body);
+ sel.removeAllRanges();
+
+
+ var rng = doc.createRange();
+
+ rng.selectNode(value);
+ rng.collapse(false);
+
+ sel.addRange(rng);
+ } else
+ rng.collapse(false);
+
+ tinyMCE.fixGeckoBaseHREFBug(2, this .getDoc(), value);
+ } else {
+ var rng = doc.selection.createRange();
+ var c = value.indexOf('<!--' ) != -1;
+
+
+ if (c)
+ value = tinyMCE.uniqueTag + value;
+
+ if (rng.item)
+ rng.item(0).outerHTML = value;
+ else
+ rng.pasteHTML(value);
+
+
+ if (c) {
+ var e = this .getDoc().getElementById('mceTMPElement' );
+ e.parentNode.removeChild(e);
+ }
+ }
+
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceStartTyping" :
+ if (tinyMCE.settings['custom_undo_redo' ] && this .undoRedo.typingUndoIndex == -1) {
+ this .undoRedo.typingUndoIndex = this .undoRedo.undoIndex;
+ this .execCommand('mceAddUndoLevel' );
+
+ }
+ break;
+
+ case "mceEndTyping" :
+ if (tinyMCE.settings['custom_undo_redo' ] && this .undoRedo.typingUndoIndex != -1) {
+ this .execCommand('mceAddUndoLevel' );
+ this .undoRedo.typingUndoIndex = -1;
+
+ }
+ break;
+
+ case "mceBeginUndoLevel" :
+ this .undoRedoLevel = false;
+ break;
+
+ case "mceEndUndoLevel" :
+ this .undoRedoLevel = true;
+ this .execCommand('mceAddUndoLevel' );
+ break;
+
+ case "mceAddUndoLevel" :
+ if (tinyMCE.settings['custom_undo_redo' ] && this .undoRedoLevel) {
+ if (this .undoRedo.add())
+ tinyMCE.triggerNodeChange(false);
+ }
+ break;
+
+ case "Undo" :
+ if (tinyMCE.settings['custom_undo_redo' ]) {
+ tinyMCE.execCommand("mceEndTyping" );
+ this .undoRedo.undo();
+ tinyMCE.triggerNodeChange();
+ } else
+ this .getDoc().execCommand(command, user_interface, value);
+ break;
+
+ case "Redo" :
+ if (tinyMCE.settings['custom_undo_redo' ]) {
+ tinyMCE.execCommand("mceEndTyping" );
+ this .undoRedo.redo();
+ tinyMCE.triggerNodeChange();
+ } else
+ this .getDoc().execCommand(command, user_interface, value);
+ break;
+
+ case "mceToggleVisualAid" :
+ this .visualAid = !this .visualAid;
+ tinyMCE.handleVisualAid(this .getBody(), true, this .visualAid, this );
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "Indent" :
+ this .getDoc().execCommand(command, user_interface, value);
+ tinyMCE.triggerNodeChange();
+ if (tinyMCE.isMSIE) {
+ var n = tinyMCE.getParentElement(this .getFocusElement(), "blockquote" );
+ do {
+ if (n && n.nodeName == "BLOCKQUOTE" ) {
+ n.removeAttribute("dir" );
+ n.removeAttribute("style" );
+ }
+ } while (n != null && (n = n.parentNode) != null);
+ }
+ break;
+
+ case "removeformat" :
+ var text = this .selection.getSelectedText();
+
+ if (tinyMCE.isOpera) {
+ this .getDoc().execCommand("RemoveFormat" , false, null);
+ return ;
+ }
+
+ if (tinyMCE.isMSIE) {
+ try {
+ var rng = doc.selection.createRange();
+ rng.execCommand("RemoveFormat" , false, null);
+ } catch (e) {
+
+ }
+
+ this .execCommand("SetStyleInfo" , false, {command : "removeformat" });
+ } else {
+ this .getDoc().execCommand(command, user_interface, value);
+
+ this .execCommand("SetStyleInfo" , false, {command : "removeformat" });
+ }
+
+
+ if (text.length == 0)
+ this .execCommand("mceSetCSSClass" , false, "" );
+
+ tinyMCE.triggerNodeChange();
+ break;
+
+ default:
+ this .getDoc().execCommand(command, user_interface, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);' , 1);
+ else
+ tinyMCE.triggerNodeChange();
+ }
+
+
+ if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceStartTyping" && command != "mceEndTyping" )
+ tinyMCE.execCommand("mceAddUndoLevel" );
+ },
+
+
+ queryCommandValue : function (c) {
+ try {
+ return this .getDoc().queryCommandValue(c);
+ } catch (e) {
+ return null;
+ }
+ },
+
+
+ queryCommandState : function (c) {
+ return this .getDoc().queryCommandState(c);
+ },
+
+
+ _onAdd : function (replace_element, form_element_name, target_document) {
+ var hc, th, to, editorTemplate;
+
+ th = this .settings['theme' ];
+ to = tinyMCE.themes[th];
+
+ var targetDoc = target_document ? target_document : document;
+
+ this .targetDoc = targetDoc;
+
+ tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" + this .settings['theme' ];
+ this .settings['themeurl' ] = tinyMCE.themeURL;
+
+ if (!replace_element) {
+ alert("Error: Could not find the target element." );
+ return false;
+ }
+
+ if (to.getEditorTemplate)
+ editorTemplate = to.getEditorTemplate(this .settings, this .editorId);
+
+ var deltaWidth = editorTemplate['delta_width' ] ? editorTemplate['delta_width' ] : 0;
+ var deltaHeight = editorTemplate['delta_height' ] ? editorTemplate['delta_height' ] : 0;
+ var html = '<span id="' + this .editorId + '_parent" class="mceEditorContainer">' + editorTemplate['html' ];
+
+ html = tinyMCE.replaceVar(html, "editor_id" , this .editorId);
+ this .settings['default_document' ] = tinyMCE.baseURL + "/blank.htm" ;
+
+ this .settings['old_width' ] = this .settings['width' ];
+ this .settings['old_height' ] = this .settings['height' ];
+
+
+ if (this .settings['width' ] == -1)
+ this .settings['width' ] = replace_element.offsetWidth;
+
+ if (this .settings['height' ] == -1)
+ this .settings['height' ] = replace_element.offsetHeight;
+
+
+ if (this .settings['width' ] == 0)
+ this .settings['width' ] = replace_element.style.width;
+
+
+ if (this .settings['height' ] == 0)
+ this .settings['height' ] = replace_element.style.height;
+
+
+ if (this .settings['width' ] == 0)
+ this .settings['width' ] = 320;
+
+ if (this .settings['height' ] == 0)
+ this .settings['height' ] = 240;
+
+ this .settings['area_width' ] = parseInt(this .settings['width' ]);
+ this .settings['area_height' ] = parseInt(this .settings['height' ]);
+ this .settings['area_width' ] += deltaWidth;
+ this .settings['area_height' ] += deltaHeight;
+
+
+ if (("" + this .settings['width' ]).indexOf('%' ) != -1)
+ this .settings['area_width' ] = "100%" ;
+
+ if (("" + this .settings['height' ]).indexOf('%' ) != -1)
+ this .settings['area_height' ] = "100%" ;
+
+ if (("" + replace_element.style.width).indexOf('%' ) != -1) {
+ this .settings['width' ] = replace_element.style.width;
+ this .settings['area_width' ] = "100%" ;
+ }
+
+ if (("" + replace_element.style.height).indexOf('%' ) != -1) {
+ this .settings['height' ] = replace_element.style.height;
+ this .settings['area_height' ] = "100%" ;
+ }
+
+ html = tinyMCE.applyTemplate(html);
+
+ this .settings['width' ] = this .settings['old_width' ];
+ this .settings['height' ] = this .settings['old_height' ];
+
+ this .visualAid = this .settings['visual' ];
+ this .formTargetElementId = form_element_name;
+
+
+ if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT" )
+ this .startContent = replace_element.value;
+ else
+ this .startContent = replace_element.innerHTML;
+
+
+ if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT" ) {
+ this .oldTargetElement = replace_element;
+
+
+ if (tinyMCE.settings['debug' ]) {
+ hc = '<textarea wrap="off" id="' + form_element_name + '" name="' + form_element_name + '" cols="100" rows="15"></textarea>' ;
+ } else {
+ hc = '<input type="hidden" type="text" id="' + form_element_name + '" name="' + form_element_name + '" />' ;
+ this .oldTargetElement.style.display = "none" ;
+ }
+
+ html += '</span>' ;
+
+ if (tinyMCE.isGecko)
+ html = hc + html;
+ else
+ html += hc;
+
+
+ if (tinyMCE.isGecko) {
+ var rng = replace_element.ownerDocument.createRange();
+ rng.setStartBefore(replace_element);
+
+ var fragment = rng.createContextualFragment(html);
+ tinyMCE.insertAfter(fragment, replace_element);
+ } else
+ replace_element.insertAdjacentHTML("beforeBegin" , html);
+ } else {
+ html += '</span>' ;
+
+
+ this .oldTargetElement = replace_element;
+
+ if (!tinyMCE.settings['debug' ])
+ this .oldTargetElement.style.display = "none" ;
+
+
+ if (tinyMCE.isGecko) {
+ var rng = replace_element.ownerDocument.createRange();
+ rng.setStartBefore(replace_element);
+
+ var fragment = rng.createContextualFragment(html);
+ tinyMCE.insertAfter(fragment, replace_element);
+ } else
+ replace_element.insertAdjacentHTML("beforeBegin" , html);
+ }
+
+
+ var dynamicIFrame = false;
+ var tElm = targetDoc.getElementById(this .editorId);
+
+ if (!tinyMCE.isMSIE) {
+ if (tElm && tElm.nodeName == "SPAN" ) {
+ tElm = tinyMCE._createIFrame(tElm, targetDoc);
+ dynamicIFrame = true;
+ }
+
+ this .targetElement = tElm;
+ this .iframeElement = tElm;
+ this .contentDocument = tElm.contentDocument;
+ this .contentWindow = tElm.contentWindow;
+
+
+ } else {
+ if (tElm && tElm.nodeName == "SPAN" )
+ tElm = tinyMCE._createIFrame(tElm, targetDoc, targetDoc.parentWindow);
+ else
+ tElm = targetDoc.frames[this .editorId];
+
+ this .targetElement = tElm;
+ this .iframeElement = targetDoc.getElementById(this .editorId);
+
+ if (tinyMCE.isOpera) {
+ this .contentDocument = this .iframeElement.contentDocument;
+ this .contentWindow = this .iframeElement.contentWindow;
+ dynamicIFrame = true;
+ } else {
+ this .contentDocument = tElm.window.document;
+ this .contentWindow = tElm.window;
+ }
+
+ this .getDoc().designMode = "on" ;
+ }
+
+
+ var doc = this .contentDocument;
+ if (dynamicIFrame) {
+ var html = tinyMCE.getParam('doctype' ) + '<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="' + tinyMCE.settings['base_href' ] + '" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>' ;
+
+ try {
+ if (!this .isHidden())
+ this .getDoc().designMode = "on" ;
+
+ doc.open();
+ doc.write(html);
+ doc.close();
+ } catch (e) {
+
+ this .getDoc().location.href = tinyMCE.baseURL + "/blank.htm" ;
+ }
+ }
+
+
+
+ if (tinyMCE.isMSIE)
+ window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\" " + this.editorId + " \"]);" , 1);
+
+ tinyMCE.setupContent(this .editorId, true);
+
+ return true;
+ },
+
+
+ setBaseHREF : function (u) {
+ var h, b, d, nl;
+
+ d = this .getDoc();
+ nl = d.getElementsByTagName("base" );
+ b = nl.length > 0 ? nl[0] : null;
+
+ if (!b) {
+ nl = d.getElementsByTagName("head" );
+ h = nl.length > 0 ? nl[0] : null;
+
+ b = d.createElement("base" );
+ b.setAttribute('href' , u);
+ h.appendChild(b);
+ } else {
+ if (u == "" || u == null)
+ b.parentNode.removeChild(b);
+ else
+ b.setAttribute('href' , u);
+ }
+ },
+
+
+ getFocusElement : function () {
+ return this .selection.getFocusElement();
+ },
+
+
+ getSel : function () {
+ return this .selection.getSel();
+ },
+
+
+ getRng : function () {
+ return this .selection.getRng();
+ },
+
+
+ triggerSave : function (skip_cleanup, skip_callback) {
+ this .switchSettings();
+
+ tinyMCE.settings['preformatted' ] = false;
+
+
+ if (typeof(skip_cleanup) == "undefined" )
+ skip_cleanup = false;
+
+
+ if (typeof(skip_callback) == "undefined" )
+ skip_callback = false;
+
+ tinyMCE._setHTML(this .getDoc(), this .getBody().innerHTML);
+
+
+ if (this .settings['cleanup' ] == false) {
+ tinyMCE.handleVisualAid(this .getBody(), true, false, this );
+ tinyMCE._setEventsEnabled(this .getBody(), true);
+ }
+
+ tinyMCE._customCleanup(this , "submit_content_dom" , this .contentWindow.document.body);
+ var htm = skip_cleanup ? this .getBody().innerHTML : tinyMCE._cleanupHTML(this , this .getDoc(), this .settings, this .getBody(), tinyMCE.visualAid, true, true);
+ htm = tinyMCE._customCleanup(this , "submit_content" , htm);
+
+ if (!skip_callback && tinyMCE.settings['save_callback' ] != "" )
+ var content = eval(tinyMCE.settings['save_callback' ] + "(this.formTargetElementId,htm,this.getBody());" );
+
+
+ if ((typeof(content) != "undefined" ) && content != null)
+ htm = content;
+
+
+ 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 (this .formElement)
+ this .formElement.value = htm;
+
+ if (tinyMCE.isSafari && this .formElement)
+ this .formElement.innerText = htm;
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_DOMUtils.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_DOMUtils.class.js.html
new file mode 100644
index 000000000..759d94ee8
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_DOMUtils.class.js.html
@@ -0,0 +1,707 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_DOMUtils.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_DOMUtils.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.prototype .getElementByAttributeValue = function (n, e, a, v) {
+ return (n = this .getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];
+};
+
+
+TinyMCE_Engine.prototype .getElementsByAttributeValue = function (n, e, a, v) {
+ var i, nl = n.getElementsByTagName(e), o = new Array();
+
+ for (i=0; i<nl.length; i++) {
+ if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)
+ o[o.length] = nl[i];
+ }
+
+ return o;
+};
+
+
+TinyMCE_Engine.prototype .isBlockElement = function (n) {
+ return n != null && n.nodeType == 1 && this .blockRegExp.test(n.nodeName);
+};
+
+
+TinyMCE_Engine.prototype .getParentBlockElement = function (n) {
+ while (n) {
+ if (this .isBlockElement(n))
+ return n;
+
+ n = n.parentNode;
+ }
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype .insertAfter = function (n, r){
+ if (r.nextSibling)
+ r.parentNode.insertBefore(n, r.nextSibling);
+ else
+ r.parentNode.appendChild(n);
+};
+
+
+TinyMCE_Engine.prototype .setInnerHTML = function (e, h) {
+ var i, nl, n;
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
+
+
+ h = h.replace(/\s\/>/g, '>' );
+
+
+ h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true"> </p>' );
+ h = h.replace(/<p([^>]*)>\s* \s*<\/p>/gi, '<p$1 mce_keep="true"> </p>' );
+ h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true"> </p>' );
+
+
+ e.innerHTML = tinyMCE.uniqueTag + h;
+ e.firstChild.removeNode(true);
+
+
+ nl = e.getElementsByTagName("p" );
+ for (i=nl.length-1; i>=0; i--) {
+ n = nl[i];
+
+ if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep)
+ n.parentNode.removeChild(n);
+ }
+ } else {
+ h = this .fixGeckoBaseHREFBug(1, e, h);
+ e.innerHTML = h;
+ this .fixGeckoBaseHREFBug(2, e, h);
+ }
+};
+
+
+TinyMCE_Engine.prototype .getOuterHTML = function (e) {
+ if (tinyMCE.isMSIE)
+ return e.outerHTML;
+
+ var d = e.ownerDocument.createElement("body" );
+ d.appendChild(e);
+ return d.innerHTML;
+};
+
+
+TinyMCE_Engine.prototype .setOuterHTML = function (e, h) {
+ if (tinyMCE.isMSIE) {
+ e.outerHTML = h;
+ return ;
+ }
+
+ var d = e.ownerDocument.createElement("body" );
+ d.innerHTML = h;
+ e.parentNode.replaceChild(d.firstChild, e);
+};
+
+
+TinyMCE_Engine.prototype ._getElementById = function (id, d) {
+ var e, i, j, f;
+
+ if (typeof(d) == "undefined" )
+ d = document;
+
+ e = d.getElementById(id);
+ if (!e) {
+ f = d.forms;
+
+ for (i=0; i<f.length; i++) {
+ for (j=0; j<f[i].elements.length; j++) {
+ if (f[i].elements[j].name == id) {
+ e = f[i].elements[j];
+ break;
+ }
+ }
+ }
+ }
+
+ return e;
+};
+
+
+TinyMCE_Engine.prototype .getNodeTree = function (n, na, t, nn) {
+ var i;
+
+ if (typeof(t) == "undefined" || n.nodeType == t && (typeof(nn) == "undefined" || n.nodeName == nn))
+ na[na.length] = n;
+
+ if (n.hasChildNodes()) {
+ for (i=0; i<n.childNodes.length; i++)
+ tinyMCE.getNodeTree(n.childNodes[i], na, t, nn);
+ }
+
+ return na;
+};
+
+
+TinyMCE_Engine.prototype .getParentElement = function (node, names, attrib_name, attrib_value) {
+ if (typeof(names) == "undefined" ) {
+ if (node.nodeType == 1)
+ return node;
+
+
+ while ((node = node.parentNode) != null && node.nodeType != 1) ;
+
+ return node;
+ }
+
+ if (node == null)
+ return null;
+
+ var namesAr = names.toUpperCase().split(',' );
+
+ do {
+ for (var i=0; i<namesAr.length; i++) {
+ if (node.nodeName == namesAr[i] || names == "*" ) {
+ if (typeof(attrib_name) == "undefined" )
+ return node;
+ else if (node.getAttribute(attrib_name)) {
+ if (typeof(attrib_value) == "undefined" ) {
+ if (node.getAttribute(attrib_name) != "" )
+ return node;
+ } else if (node.getAttribute(attrib_name) == attrib_value)
+ return node;
+ }
+ }
+ }
+ } while ((node = node.parentNode) != null);
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype .getParentNode = function (n, f) {
+ while (n) {
+ if (f(n))
+ return n;
+
+ n = n.parentNode;
+ }
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype .getAttrib = function (elm, name, default_value) {
+ if (typeof(default_value) == "undefined" )
+ default_value = "" ;
+
+
+ if (!elm || elm.nodeType != 1)
+ return default_value;
+
+ var v = elm.getAttribute(name);
+
+
+ if (name == "class" && !v)
+ v = elm.className;
+
+
+ if (tinyMCE.isGecko && name == "src" && elm.src != null && elm.src != "" )
+ v = elm.src;
+
+
+ if (tinyMCE.isGecko && name == "href" && elm.href != null && elm.href != "" )
+ v = elm.href;
+
+ if (name == "http-equiv" && tinyMCE.isMSIE)
+ v = elm.httpEquiv;
+
+ if (name == "style" && !tinyMCE.isOpera)
+ v = elm.style.cssText;
+
+ return (v && v != "" ) ? v : default_value;
+};
+
+
+TinyMCE_Engine.prototype .setAttrib = function (element, name, value, fix_value) {
+ if (typeof(value) == "number" && value != null)
+ value = "" + value;
+
+ if (fix_value) {
+ if (value == null)
+ value = "" ;
+
+ var re = new RegExp('[^0-9%]' , 'g' );
+ value = value.replace(re, '' );
+ }
+
+ if (name == "style" )
+ element.style.cssText = value;
+
+ if (name == "class" )
+ element.className = value;
+
+ if (value != null && value != "" && value != -1)
+ element.setAttribute(name, value);
+ else
+ element.removeAttribute(name);
+};
+
+
+TinyMCE_Engine.prototype .setStyleAttrib = function (elm, name, value) {
+ eval('elm.style.' + name + '=value;' );
+
+
+ if (tinyMCE.isMSIE && value == null || value == '' ) {
+ var str = tinyMCE.serializeStyle(tinyMCE.parseStyle(elm.style.cssText));
+ elm.style.cssText = str;
+ elm.setAttribute("style" , str);
+ }
+};
+
+
+TinyMCE_Engine.prototype .switchClass = function (ei, c) {
+ var e;
+
+ if (tinyMCE.switchClassCache[ei])
+ e = tinyMCE.switchClassCache[ei];
+ else
+ e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);
+
+ if (e) {
+
+ if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton' ) == 0)
+ c = 'mceTiledButton ' + c;
+
+ e.className = c;
+ }
+};
+
+
+TinyMCE_Engine.prototype .getAbsPosition = function (n) {
+ var p = {absLeft : 0, absTop : 0};
+
+ while (n) {
+ p.absLeft += n.offsetLeft;
+ p.absTop += n.offsetTop;
+ n = n.offsetParent;
+ }
+
+ return p;
+};
+
+
+TinyMCE_Engine.prototype .prevNode = function (e, n) {
+ var a = n.split(',' ), i;
+
+ while ((e = e.previousSibling) != null) {
+ for (i=0; i<a.length; i++) {
+ if (e.nodeName == a[i])
+ return e;
+ }
+ }
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype .nextNode = function (e, n) {
+ var a = n.split(',' ), i;
+
+ while ((e = e.nextSibling) != null) {
+ for (i=0; i<a.length; i++) {
+ if (e.nodeName == a[i])
+ return e;
+ }
+ }
+
+ return null;
+};
+
+
+TinyMCE_Engine.prototype .selectNodes = function (n, f, a) {
+ var i;
+
+ if (!a)
+ a = new Array();
+
+ if (f(n))
+ a[a.length] = n;
+
+ if (n.hasChildNodes()) {
+ for (i=0; i<n.childNodes.length; i++)
+ tinyMCE.selectNodes(n.childNodes[i], f, a);
+ }
+
+ return a;
+};
+
+
+TinyMCE_Engine.prototype .addCSSClass = function (e, c, b) {
+ var o = this .removeCSSClass(e, c);
+
+ return e.className = b ? c + (o != '' ? (' ' + o) : '' ) : (o != '' ? (o + ' ' ) : '' ) + c;
+};
+
+
+TinyMCE_Engine.prototype .removeCSSClass = function (e, c) {
+ var a = this .explode(' ' , e.className), i;
+
+ for (i=0; i<a.length; i++) {
+ if (a[i] == c)
+ a[i] = '' ;
+ }
+
+ return e.className = a.join(' ' );
+};
+
+
+TinyMCE_Engine.prototype .renameElement = function (e, n, d) {
+ var ne, i, ar;
+
+ d = typeof(d) == "undefined" ? tinyMCE.selectedInstance.getDoc() : d;
+
+ if (e) {
+ ne = d.createElement(n);
+
+ ar = e.attributes;
+ for (i=ar.length-1; i>-1; i--) {
+ if (ar[i].specified && ar[i].nodeValue)
+ ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue);
+ }
+
+ ar = e.childNodes;
+ for (i=0; i<ar.length; i++)
+ ne.appendChild(ar[i].cloneNode(true));
+
+ e.parentNode.replaceChild(ne, e);
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Debug.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Debug.class.js.html
new file mode 100644
index 000000000..6367643bb
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Debug.class.js.html
@@ -0,0 +1,193 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Debug.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Debug.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.prototype .debug = function () {
+ var m = "" , e, a, i;
+
+ e = document.getElementById("tinymce_debug" );
+ if (!e) {
+ var d = document.createElement("div" );
+ d.setAttribute("className" , "debugger" );
+ d.className = "debugger" ;
+ d.innerHTML = 'Debug output:<textarea id="tinymce_debug" style="width: 100%; height: 300px" wrap="nowrap" mce_editable="false"></textarea>' ;
+
+ document.body.appendChild(d);
+ e = document.getElementById("tinymce_debug" );
+ }
+
+ a = this .debug.arguments;
+ for (i=0; i<a.length; i++) {
+ m += a[i];
+ if (i<a.length-1)
+ m += ', ' ;
+ }
+
+ e.value += m + "\n" ;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Engine.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Engine.class.js.html
new file mode 100644
index 000000000..407c5ef2b
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Engine.class.js.html
@@ -0,0 +1,2890 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Engine.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Engine.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_Engine() {
+ this .majorVersion = "2" ;
+ this .minorVersion = "0.6" ;
+ this .releaseDate = "2006-xx-xx" ;
+
+ this .instances = new Array();
+ this .switchClassCache = new Array();
+ this .windowArgs = new Array();
+ this .loadedFiles = new Array();
+ this .configs = new Array();
+ this .currentConfig = 0;
+ this .eventHandlers = new Array();
+
+
+ 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;
+ this .plugins = new Array();
+ this .themes = new Array();
+ this .menus = new Array();
+ this .loadedPlugins = new Array();
+ this .buttonMap = new Array();
+ this .isLoaded = false;
+
+
+ if (this .isOpera) {
+ this .isMSIE = true;
+ this .isGecko = false;
+ this .isSafari = false;
+ }
+
+
+ this .idCounter = 0;
+};
+
+TinyMCE_Engine.prototype = {
+
+ init : function (settings) {
+ var theme;
+
+ this .settings = settings;
+
+
+ if (typeof(document.execCommand) == 'undefined' )
+ return ;
+
+
+ if (!tinyMCE.baseURL) {
+ var elements = document.getElementsByTagName('script' );
+
+ for (var i=0; i<elements.length; i++) {
+ if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js" ) != -1 || elements[i].src.indexOf("tiny_mce_dev.js" ) != -1 || elements[i].src.indexOf("tiny_mce_src.js" ) != -1 || elements[i].src.indexOf("tiny_mce_gzip" ) != -1)) {
+ var src = elements[i].src;
+
+ tinyMCE.srcMode = (src.indexOf('_src' ) != -1 || src.indexOf('_dev' ) != -1) ? '_src' : '' ;
+ tinyMCE.gzipMode = src.indexOf('_gzip' ) != -1;
+ src = src.substring(0, src.lastIndexOf('/' ));
+
+ if (settings.exec_mode == "src" || settings.exec_mode == "normal" )
+ tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' : '' ;
+
+ tinyMCE.baseURL = src;
+ break;
+ }
+ }
+ }
+
+
+ this .documentBasePath = document.location.href;
+ if (this .documentBasePath.indexOf('?' ) != -1)
+ this .documentBasePath = this .documentBasePath.substring(0, this .documentBasePath.indexOf('?' ));
+ this .documentURL = this .documentBasePath;
+ this .documentBasePath = this .documentBasePath.substring(0, this .documentBasePath.lastIndexOf('/' ));
+
+
+ if (tinyMCE.baseURL.indexOf('://' ) == -1 && tinyMCE.baseURL.charAt(0) != '/' ) {
+
+ tinyMCE.baseURL = this .documentBasePath + "/" + tinyMCE.baseURL;
+ }
+
+
+ this ._def("mode" , "none" );
+ this ._def("theme" , "advanced" );
+ this ._def("plugins" , "" , true);
+ this ._def("language" , "en" );
+ this ._def("docs_language" , this .settings['language' ]);
+ this ._def("elements" , "" );
+ this ._def("textarea_trigger" , "mce_editable" );
+ this ._def("editor_selector" , "" );
+ this ._def("editor_deselector" , "mceNoEditor" );
+ this ._def("valid_elements" , "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],-td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang]" );
+ this ._def("extended_valid_elements" , "" );
+ this ._def("invalid_elements" , "" );
+ this ._def("encoding" , "" );
+ this ._def("urlconverter_callback" , tinyMCE.getParam("urlconvertor_callback" , "TinyMCE_Engine.prototype.convertURL" ));
+ this ._def("save_callback" , "" );
+ this ._def("debug" , false);
+ this ._def("force_br_newlines" , false);
+ this ._def("force_p_newlines" , true);
+ this ._def("add_form_submit_trigger" , true);
+ this ._def("relative_urls" , true);
+ this ._def("remove_script_host" , true);
+ this ._def("focus_alert" , true);
+ this ._def("document_base_url" , this .documentURL);
+ this ._def("visual" , true);
+ this ._def("visual_table_class" , "mceVisualAid" );
+ this ._def("setupcontent_callback" , "" );
+ this ._def("fix_content_duplication" , true);
+ this ._def("custom_undo_redo" , true);
+ this ._def("custom_undo_redo_levels" , -1);
+ this ._def("custom_undo_redo_keyboard_shortcuts" , true);
+ this ._def("custom_undo_redo_restore_selection" , true);
+ this ._def("verify_html" , true);
+ this ._def("apply_source_formatting" , false);
+ this ._def("directionality" , "ltr" );
+ this ._def("cleanup_on_startup" , false);
+ this ._def("inline_styles" , false);
+ this ._def("convert_newlines_to_brs" , false);
+ this ._def("auto_reset_designmode" , true);
+ this ._def("entities" , "39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro" , true);
+ this ._def("entity_encoding" , "named" );
+ this ._def("cleanup_callback" , "" );
+ this ._def("add_unload_trigger" , true);
+ this ._def("ask" , false);
+ this ._def("nowrap" , false);
+ this ._def("auto_resize" , false);
+ this ._def("auto_focus" , false);
+ this ._def("cleanup" , true);
+ this ._def("remove_linebreaks" , true);
+ this ._def("button_tile_map" , false);
+ this ._def("submit_patch" , true);
+ this ._def("browsers" , "msie,safari,gecko,opera" , true);
+ this ._def("dialog_type" , "window" );
+ this ._def("accessibility_warnings" , true);
+ this ._def("accessibility_focus" , true);
+ this ._def("merge_styles_invalid_parents" , "" );
+ this ._def("force_hex_style_colors" , true);
+ this ._def("trim_span_elements" , true);
+ this ._def("convert_fonts_to_spans" , false);
+ this ._def("doctype" , '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">' );
+ this ._def("font_size_classes" , '' );
+ this ._def("font_size_style_values" , 'xx-small,x-small,small,medium,large,x-large,xx-large' , true);
+ this ._def("event_elements" , 'a,img' , true);
+ this ._def("convert_urls" , true);
+ this ._def("table_inline_editing" , false);
+ this ._def("object_resizing" , true);
+ this ._def("custom_shortcuts" , true);
+ this ._def("convert_on_click" , false);
+ this ._def("content_css" , '' );
+ this ._def("fix_list_elements" , false);
+ this ._def("fix_table_elements" , false);
+
+
+ if (this .isMSIE && this .settings['browsers' ].indexOf('msie' ) == -1)
+ return ;
+
+
+ if (this .isGecko && this .settings['browsers' ].indexOf('gecko' ) == -1)
+ return ;
+
+
+ if (this .isSafari && this .settings['browsers' ].indexOf('safari' ) == -1)
+ return ;
+
+
+ if (this .isOpera && this .settings['browsers' ].indexOf('opera' ) == -1)
+ return ;
+
+
+ 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;
+ }
+
+
+ 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|dt|dd|dir|fieldset|form|noscript|noframes|menu|isindex|samp)$" , "i" );
+ this .posKeyCodes = new Array(13,45,36,35,33,34,37,38,39,40);
+ this .uniqueURL = 'javascript:TINYMCE_UNIQUEURL();' ;
+ this .uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>' ;
+ this .callbacks = new Array('onInit' , 'getInfo' , 'getEditorTemplate' , 'setupContent' , 'onChange' , 'onPageLoad' , 'handleNodeChange' , 'initInstance' , 'execCommand' , 'getControlHTML' , 'handleEvent' , 'cleanup' );
+
+
+ this .settings['theme_href' ] = tinyMCE.baseURL + "/themes/" + theme;
+
+ if (!tinyMCE.isMSIE)
+ this .settings['force_br_newlines' ] = false;
+
+ if (tinyMCE.getParam("popups_css" , false)) {
+ var cssPath = tinyMCE.getParam("popups_css" , "" );
+
+
+ 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" , "" );
+
+
+ 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);
+ }
+
+
+ if (this .configs.length == 0) {
+
+ if (this .isSafari && this .getParam('safari_warning' , false))
+ 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" );
+
+ if (typeof(TinyMCECompressed) == "undefined" ) {
+ tinyMCE.addEvent(window, "DOMContentLoaded" , TinyMCE_Engine.prototype .onLoad);
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
+ if (document.body)
+ tinyMCE.addEvent(document.body, "readystatechange" , TinyMCE_Engine.prototype .onLoad);
+ else
+ tinyMCE.addEvent(document, "readystatechange" , TinyMCE_Engine.prototype .onLoad);
+ }
+
+ tinyMCE.addEvent(window, "load" , TinyMCE_Engine.prototype .onLoad);
+ tinyMCE._addUnloadEvents();
+ }
+ }
+
+ 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' ]);
+
+
+ var p = tinyMCE.getParam('plugins' , '' , true, ',' );
+ if (p.length > 0) {
+ for (var i=0; i<p.length; i++) {
+ if (p[i].charAt(0) != '-' )
+ this .loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js' );
+ }
+ }
+
+
+ settings['cleanup_entities' ] = new Array();
+ var entities = tinyMCE.getParam('entities' , '' , true, ',' );
+ for (var i=0; i<entities.length; i+=2)
+ settings['cleanup_entities' ]['c' + entities[i]] = entities[i+1];
+
+
+ settings['index' ] = this .configs.length;
+ this .configs[this .configs.length] = settings;
+ },
+
+
+ _addUnloadEvents : function () {
+ if (tinyMCE.isMSIE) {
+ if (tinyMCE.settings['add_unload_trigger' ]) {
+ tinyMCE.addEvent(window, "unload" , TinyMCE_Engine.prototype .unloadHandler);
+ tinyMCE.addEvent(window.document, "beforeunload" , TinyMCE_Engine.prototype .unloadHandler);
+ }
+ } else {
+ if (tinyMCE.settings['add_unload_trigger' ])
+ tinyMCE.addEvent(window, "unload" , function () {tinyMCE.triggerSave(true, true);});
+ }
+ },
+
+
+ _def : function (key, def_val, t) {
+ var v = tinyMCE.getParam(key, def_val);
+
+ v = t ? v.replace(/\s+/g,"" ) : v;
+
+ this .settings[key] = v;
+ },
+
+
+ hasPlugin : function (n) {
+ return typeof(this .plugins[n]) != "undefined" && this .plugins[n] != null;
+ },
+
+
+ addPlugin : function (n, p) {
+ var op = this .plugins[n];
+
+
+ p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;
+ this .plugins[n] = p;
+ },
+
+
+ setPluginBaseURL : function (n, u) {
+ var op = this .plugins[n];
+
+ if (op)
+ op.baseURL = u;
+ else
+ this .plugins[n] = {baseURL : u};
+ },
+
+
+ loadPlugin : function (n, u) {
+ u = u.indexOf('.js' ) != -1 ? u.substring(0, u.lastIndexOf('/' )) : u;
+ u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u;
+ this .plugins[n] = {baseURL : u};
+ this .loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '' ) + ".js" );
+ },
+
+
+ hasTheme : function (n) {
+ return typeof(this .themes[n]) != "undefined" && this .themes[n] != null;
+ },
+
+
+ addTheme : function (n, t) {
+ this .themes[n] = t;
+ },
+
+
+ addMenu : function (n, m) {
+ this .menus[n] = m;
+ },
+
+
+ hasMenu : function (n) {
+ return typeof(this .plugins[n]) != "undefined" && this .plugins[n] != null;
+ },
+
+
+ loadScript : function (url) {
+ for (var i=0; i<this .loadedFiles.length; i++) {
+ if (this .loadedFiles[i] == url)
+ return ;
+ }
+
+ document.write('<sc' +'ript language="javascript" type="text/javascript" src="' + url + '"></script>' );
+
+ this .loadedFiles[this .loadedFiles.length] = url;
+ },
+
+
+ loadCSS : function (url) {
+ var ar = url.replace(/\s+/, '' ).split(',' );
+ var lflen = 0, csslen = 0;
+ var skip = false;
+ var x = 0, i = 0;
+
+ for (x = 0,csslen = ar.length; x<csslen; x++) {
+ ignore_css = false;
+
+ if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {
+
+ for (i=0, lflen=this .loadedFiles.length; i<lflen; i++) {
+ if (this .loadedFiles[i] == ar[x]) {
+ skip = true;
+ break;
+ }
+ }
+
+ if (!skip) {
+ document.write('<link href="' + ar[x] + '" rel="stylesheet" type="text/css" />' );
+ this .loadedFiles[this .loadedFiles.length] = ar[x];
+ }
+ }
+ }
+ },
+
+
+ importCSS : function (doc, css) {
+ var css_ary = css.replace(/\s+/, '' ).split(',' );
+ var csslen, elm, headArr, x, css_file;
+
+ for (x = 0, csslen = css_ary.length; x<csslen; x++) {
+ css_file = css_ary[x];
+
+ if (css_file != null && css_file != 'null' && css_file.length > 0) {
+
+ if (css_file.indexOf('://' ) == -1 && css_file.charAt(0) != '/' )
+ css_file = this .documentBasePath + "/" + css_file;
+
+ if (typeof(doc.createStyleSheet) == "undefined" ) {
+ 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
+ doc.createStyleSheet(css_file);
+ }
+ }
+ },
+
+
+ confirmAdd : function (e, settings) {
+ var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
+ var elementId = elm.name ? elm.name : elm.id;
+
+ tinyMCE.settings = settings;
+
+ if (tinyMCE.settings['convert_on_click' ] || (!elm.getAttribute('mce_noask' ) && confirm(tinyMCELang['lang_edit_confirm' ])))
+ tinyMCE.addMCEControl(elm, elementId);
+
+ elm.setAttribute('mce_noask' , 'true' );
+ },
+
+
+ updateContent : function (form_element_name) {
+
+ 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);
+ }
+ }
+ },
+
+
+ addMCEControl : function (replace_element, form_element_name, target_document) {
+ var id = "mce_editor_" + tinyMCE.idCounter++;
+ var inst = new TinyMCE_Control(tinyMCE.settings);
+
+ inst.editorId = id;
+ this .instances[id] = inst;
+
+ inst._onAdd(replace_element, form_element_name, target_document);
+ },
+
+
+ removeMCEControl : function (editor_id) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+
+ if (inst) {
+ inst.switchSettings();
+
+ editor_id = inst.editorId;
+ var html = tinyMCE.getContent(editor_id);
+
+
+ var tmpInstances = new Array();
+ for (var instanceName in tinyMCE.instances) {
+ var instance = tinyMCE.instances[instanceName];
+ if (!tinyMCE.isInstance(instance))
+ continue;
+
+ if (instanceName != editor_id)
+ tmpInstances[instanceName] = instance;
+ }
+ tinyMCE.instances = tmpInstances;
+
+ tinyMCE.selectedElement = null;
+ tinyMCE.selectedInstance = null;
+
+
+ var replaceElement = document.getElementById(editor_id + "_parent" );
+ var oldTargetElement = inst.oldTargetElement;
+ var targetName = oldTargetElement.nodeName.toLowerCase();
+
+ if (targetName == "textarea" || targetName == "input" ) {
+
+ replaceElement.parentNode.removeChild(replaceElement);
+ oldTargetElement.style.display = "inline" ;
+ oldTargetElement.value = html;
+ } else {
+ oldTargetElement.innerHTML = html;
+ oldTargetElement.style.display = 'block' ;
+
+ replaceElement.parentNode.insertBefore(oldTargetElement, replaceElement);
+ replaceElement.parentNode.removeChild(replaceElement);
+ }
+ }
+ },
+
+
+ triggerSave : function (skip_cleanup, skip_callback) {
+ var inst, n;
+
+
+ if (typeof(skip_cleanup) == "undefined" )
+ skip_cleanup = false;
+
+
+ if (typeof(skip_callback) == "undefined" )
+ skip_callback = false;
+
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (!tinyMCE.isInstance(inst))
+ continue;
+
+ inst.triggerSave(skip_cleanup, skip_callback);
+ }
+ },
+
+
+ resetForm : function (form_index) {
+ var i, inst, n, formObj = document.forms[form_index];
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (!tinyMCE.isInstance(inst))
+ continue;
+
+ inst.switchSettings();
+
+ for (i=0; i<formObj.elements.length; i++) {
+ if (inst.formTargetElementId == formObj.elements[i].name)
+ inst.getBody().innerHTML = inst.startContent;
+ }
+ }
+ },
+
+
+ execInstanceCommand : function (editor_id, command, user_interface, value, focus) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+ if (inst) {
+ if (typeof(focus) == "undefined" )
+ focus = true;
+
+ if (focus)
+ inst.contentWindow.focus();
+
+
+ inst.autoResetDesignMode();
+
+ this .selectedElement = inst.getFocusElement();
+ this .selectedInstance = inst;
+ tinyMCE.execCommand(command, user_interface, value);
+
+
+ if (tinyMCE.isMSIE && window.event != null)
+ tinyMCE.cancelEvent(window.event);
+ }
+ },
+
+
+ execCommand : function (command, user_interface, value) {
+
+ user_interface = user_interface ? user_interface : false;
+ value = value ? value : null;
+
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.switchSettings();
+
+ switch (command) {
+ case 'mceHelp' :
+ tinyMCE.openWindow({
+ file : 'about.htm' ,
+ width : 480,
+ height : 380
+ }, {
+ tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
+ tinymce_releasedate : tinyMCE.releaseDate,
+ inline : "yes"
+ });
+ return ;
+
+ case 'mceFocus' :
+ var inst = tinyMCE.getInstanceById(value);
+ if (inst)
+ inst.contentWindow.focus();
+ return ;
+
+ case "mceAddControl" :
+ case "mceAddEditor" :
+ tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
+ return ;
+
+ case "mceAddFrameControl" :
+ tinyMCE.addMCEControl(tinyMCE._getElementById(value['element' ], value['document' ]), value['element' ], value['document' ]);
+ return ;
+
+ case "mceRemoveControl" :
+ case "mceRemoveEditor" :
+ tinyMCE.removeMCEControl(value);
+ return ;
+
+ case "mceResetDesignMode" :
+
+ if (!tinyMCE.isMSIE) {
+ for (var n in tinyMCE.instances) {
+ if (!tinyMCE.isInstance(tinyMCE.instances[n]))
+ continue;
+
+ try {
+ tinyMCE.instances[n].getDoc().designMode = "on" ;
+ } catch (e) {
+
+ }
+ }
+ }
+
+ return ;
+ }
+
+ if (this .selectedInstance) {
+ this .selectedInstance.execCommand(command, user_interface, value);
+ } else if (tinyMCE.settings['focus_alert' ])
+ alert(tinyMCELang['lang_focus_alert' ]);
+ },
+
+
+ _createIFrame : function (replace_element, doc, win) {
+ var iframe, id = replace_element.getAttribute("id" );
+ var aw, ah;
+
+ if (typeof(doc) == "undefined" )
+ doc = document;
+
+ if (typeof(win) == "undefined" )
+ win = window;
+
+ iframe = doc.createElement("iframe" );
+
+ aw = "" + tinyMCE.settings['area_width' ];
+ ah = "" + tinyMCE.settings['area_height' ];
+
+ if (aw.indexOf('%' ) == -1) {
+ aw = parseInt(aw);
+ aw = aw < 0 ? 300 : aw;
+ aw = aw + "px" ;
+ }
+
+ if (ah.indexOf('%' ) == -1) {
+ ah = parseInt(ah);
+ ah = ah < 0 ? 240 : ah;
+ ah = ah + "px" ;
+ }
+
+ iframe.setAttribute("id" , id);
+ iframe.setAttribute("className" , "mceEditorIframe" );
+ iframe.setAttribute("border" , "0" );
+ iframe.setAttribute("frameBorder" , "0" );
+ iframe.setAttribute("marginWidth" , "0" );
+ iframe.setAttribute("marginHeight" , "0" );
+ iframe.setAttribute("leftMargin" , "0" );
+ iframe.setAttribute("topMargin" , "0" );
+ iframe.setAttribute("width" , aw);
+ iframe.setAttribute("height" , ah);
+ iframe.setAttribute("allowtransparency" , "true" );
+
+ if (tinyMCE.settings["auto_resize" ])
+ iframe.setAttribute("scrolling" , "no" );
+
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ iframe.setAttribute("src" , this .settings['default_document' ]);
+
+ iframe.style.width = aw;
+ iframe.style.height = ah;
+
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ replace_element.outerHTML = iframe.outerHTML;
+ else
+ replace_element.parentNode.replaceChild(iframe, replace_element);
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ return win.frames[id];
+ else
+ return iframe;
+ },
+
+
+ setupContent : function (editor_id) {
+ var inst = tinyMCE.instances[editor_id];
+ var doc = inst.getDoc();
+ var head = doc.getElementsByTagName('head' ).item(0);
+ var content = inst.startContent;
+
+ inst.switchSettings();
+
+
+ if (!tinyMCE.isMSIE && tinyMCE.getParam("setupcontent_reload" , false) && doc.title != "blank_page" ) {
+
+
+ try {doc.location.href = tinyMCE.baseURL + "/blank.htm" ;} catch (ex) {}
+ window.setTimeout("tinyMCE.setupContent('" + editor_id + "');" , 1000);
+ return ;
+ }
+
+ if (!head) {
+ window.setTimeout("tinyMCE.setupContent('" + editor_id + "');" , 10);
+ return ;
+ }
+
+
+ tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings['theme' ] + "/css/editor_content.css" );
+ tinyMCE.importCSS(inst.getDoc(), inst.settings['content_css' ]);
+ tinyMCE.dispatchCallback(inst, 'init_instance_callback' , 'initInstance' , inst);
+
+
+ if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts' )) {
+ inst.addShortcut('ctrl' , 'z' , 'lang_undo_desc' , 'Undo' );
+ inst.addShortcut('ctrl' , 'y' , 'lang_redo_desc' , 'Redo' );
+ }
+
+
+ if (tinyMCE.isGecko) {
+ inst.addShortcut('ctrl' , 'b' , 'lang_bold_desc' , 'Bold' );
+ inst.addShortcut('ctrl' , 'i' , 'lang_italic_desc' , 'Italic' );
+ inst.addShortcut('ctrl' , 'u' , 'lang_underline_desc' , 'Underline' );
+ }
+
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ inst.getDoc().body.setAttribute('id' , 'mceSpanFonts' );
+
+ if (tinyMCE.settings['nowrap' ])
+ doc.body.style.whiteSpace = "nowrap" ;
+
+ doc.body.dir = this .settings['directionality' ];
+ doc.editorId = editor_id;
+
+
+ if (!tinyMCE.isMSIE)
+ doc.documentElement.editorId = editor_id;
+
+ inst.setBaseHREF(tinyMCE.settings['base_href' ]);
+
+
+ if (tinyMCE.settings['convert_newlines_to_brs' ]) {
+ content = tinyMCE.regexpReplace(content, "\r\n" , "<br />" , "gi" );
+ content = tinyMCE.regexpReplace(content, "\r" , "<br />" , "gi" );
+ content = tinyMCE.regexpReplace(content, "\n" , "<br />" , "gi" );
+ }
+
+
+
+
+
+ content = tinyMCE.storeAwayURLs(content);
+ content = tinyMCE._customCleanup(inst, "insert_to_editor" , content);
+
+ if (tinyMCE.isMSIE) {
+
+ window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}' , 500);
+
+ if (tinyMCE.settings["force_br_newlines" ])
+ doc.styleSheets[0].addRule("p" , "margin: 0;" );
+
+ var body = inst.getBody();
+ body.editorId = editor_id;
+ }
+
+ content = tinyMCE.cleanupHTMLCode(content);
+
+
+ if (!tinyMCE.isMSIE) {
+ var contentElement = inst.getDoc().createElement("body" );
+ var doc = inst.getDoc();
+
+ contentElement.innerHTML = content;
+
+
+ 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 {
+
+ content = tinyMCE.regexpReplace(content, "<strong" , "<b" , "gi" );
+ content = tinyMCE.regexpReplace(content, "<em(/?)>" , "<i$1>" , "gi" );
+ content = tinyMCE.regexpReplace(content, "<em " , "<i " , "gi" );
+ content = tinyMCE.regexpReplace(content, "</strong>" , "</b>" , "gi" );
+ content = tinyMCE.regexpReplace(content, "</em>" , "</i>" , "gi" );
+ tinyMCE.setInnerHTML(inst.getBody(), content);
+ }
+
+ tinyMCE.convertAllRelativeURLs(inst.getBody());
+ } else {
+ if (tinyMCE.settings['cleanup_on_startup' ]) {
+ tinyMCE._setHTML(inst.getDoc(), content);
+
+
+ eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}' );
+ } else
+ tinyMCE._setHTML(inst.getDoc(), content);
+ }
+
+
+
+
+
+ var parentElm = inst.targetDoc.getElementById(inst.editorId + '_parent' );
+ inst.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;
+
+ tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual' ], inst);
+ tinyMCE.dispatchCallback(inst, 'setupcontent_callback' , 'setupContent' , editor_id, inst.getBody(), inst.getDoc());
+
+
+ if (!tinyMCE.isMSIE)
+ tinyMCE.addEventHandlers(inst);
+
+
+ if (tinyMCE.isMSIE) {
+ tinyMCE.addEvent(inst.getBody(), "blur" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(inst.getBody(), "beforedeactivate" , TinyMCE_Engine.prototype ._eventPatch);
+
+
+ if (!tinyMCE.isOpera) {
+ tinyMCE.addEvent(doc.body, "mousemove" , TinyMCE_Engine.prototype .onMouseMove);
+ tinyMCE.addEvent(doc.body, "beforepaste" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(doc.body, "drop" , TinyMCE_Engine.prototype ._eventPatch);
+ }
+ }
+
+
+ tinyMCE.selectedInstance = inst;
+ tinyMCE.selectedElement = inst.contentWindow.document.body;
+
+
+ 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.undoRedo.add({ content : inst.startContent });
+
+
+ if (tinyMCE.isGecko) {
+
+ tinyMCE.selectNodes(inst.getBody(), function (n) {
+ if (n.nodeType == 3 || n.nodeType == 8) {
+ n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"' , 'gi' ), "" );
+ n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"' , 'gi' ), "" );
+ }
+
+ return false;
+ });
+ }
+
+
+ tinyMCE._removeInternal(inst.getBody());
+
+ tinyMCE.selectedInstance = inst;
+ tinyMCE.triggerNodeChange(false, true);
+ },
+
+
+ storeAwayURLs : function (s) {
+
+
+
+
+ if (!s.match(/(mce_src|mce_href)/gi, s)) {
+ 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;
+ },
+
+
+ _removeInternal : function (n) {
+ if (tinyMCE.isGecko) {
+
+ tinyMCE.selectNodes(n, function (n) {
+ if (n.nodeType == 3 || n.nodeType == 8) {
+ n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"' , 'gi' ), "" );
+ n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"' , 'gi' ), "" );
+ }
+
+ return false;
+ });
+ }
+ },
+
+
+ removeTinyMCEFormElements : function (form_obj) {
+
+ if (typeof(form_obj) == "undefined" || form_obj == null)
+ return ;
+
+
+ if (form_obj.nodeName != "FORM" ) {
+ if (form_obj.form)
+ form_obj = form_obj.form;
+ else
+ form_obj = tinyMCE.getParentElement(form_obj, "form" );
+ }
+
+
+ if (form_obj == null)
+ return ;
+
+
+ for (var i=0; i<form_obj.elements.length; i++) {
+ var elementId = form_obj.elements[i].name ? form_obj.elements[i].name : form_obj.elements[i].id;
+
+ if (elementId.indexOf('mce_editor_' ) == 0)
+ form_obj.elements[i].disabled = true;
+ }
+ },
+
+
+ handleEvent : function (e) {
+ var inst = tinyMCE.selectedInstance;
+
+
+ if (typeof(tinyMCE) == "undefined" )
+ return true;
+
+
+
+ if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback' , 'handleEvent' , e))
+ return false;
+
+ switch (e.type) {
+ case "beforedeactivate" :
+ case "blur" :
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.execCommand('mceEndTyping' );
+
+ tinyMCE.hideMenus();
+
+ return ;
+
+
+ case "drop" :
+ case "beforepaste" :
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.setBaseHREF(null);
+
+ window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings['base_href']);" , 1);
+ return ;
+
+ case "submit" :
+ tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE ? window.event.srcElement : e.target);
+ tinyMCE.triggerSave();
+ tinyMCE.isNotDirty = true;
+ return ;
+
+ case "reset" :
+ var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+
+ for (var i=0; i<document.forms.length; i++) {
+ if (document.forms[i] == formObj)
+ window.setTimeout('tinyMCE.resetForm(' + i + ');' , 10);
+ }
+
+ return ;
+
+ case "keypress" :
+ if (inst && inst.handleShortcut(e))
+ return false;
+
+ if (e.target.editorId) {
+ tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+ } else {
+ if (e.target.ownerDocument.editorId)
+ tinyMCE.selectedInstance = tinyMCE.instances[e.target.ownerDocument.editorId];
+ }
+
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.switchSettings();
+
+
+ if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines' ] && e.keyCode == 13 && !e.shiftKey) {
+
+ if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
+
+ tinyMCE.execCommand("mceAddUndoLevel" );
+ tinyMCE.cancelEvent(e);
+ return false;
+ }
+ }
+
+
+ if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines' ] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
+
+ if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
+
+ tinyMCE.execCommand("mceAddUndoLevel" );
+ tinyMCE.cancelEvent(e);
+ return false;
+ }
+ }
+
+
+ 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;
+
+
+ e.returnValue = false;
+ e.cancelBubble = true;
+
+
+ rng.pasteHTML("<br />" );
+ rng.collapse(false);
+ rng.select();
+
+ tinyMCE.execCommand("mceAddUndoLevel" );
+ tinyMCE.triggerNodeChange(false);
+ return false;
+ }
+ }
+
+
+ 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" :
+ tinyMCE.hideMenus();
+ tinyMCE.hasMouseMoved = false;
+
+ if (inst && inst.handleShortcut(e))
+ return false;
+
+ if (e.target.editorId)
+ tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+ else
+ return ;
+
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.switchSettings();
+
+ var inst = tinyMCE.selectedInstance;
+
+
+ if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines' ] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
+
+ if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
+
+ 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;
+
+
+ if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)
+ tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings['visual' ], tinyMCE.selectedInstance);
+
+
+ if (tinyMCE.isMSIE && e.type == "keydown" && e.keyCode == 13)
+ tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
+
+
+ if (tinyMCE.isMSIE && e.type == "keyup" && e.keyCode == 13) {
+ var elm = tinyMCE.enterKeyElement;
+ if (elm) {
+ var re = new RegExp('^HR|IMG|BR$' ,'g' );
+ var dre = new RegExp('^H[1-6]$' ,'g' );
+
+ if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {
+ if (dre.test(elm.nodeName))
+ elm.innerHTML = " " ;
+ else
+ elm.innerHTML = " " ;
+ }
+ }
+ }
+
+
+ var keys = tinyMCE.posKeyCodes;
+ var posKey = false;
+ for (var i=0; i<keys.length; i++) {
+ if (keys[i] == e.keyCode) {
+ posKey = true;
+ break;
+ }
+ }
+
+
+ if (tinyMCE.isMSIE && tinyMCE.settings['custom_undo_redo' ]) {
+ var keys = new Array(8,46);
+ for (var i=0; i<keys.length; i++) {
+ if (keys[i] == e.keyCode) {
+ if (e.type == "keyup" )
+ tinyMCE.triggerNodeChange(false);
+ }
+ }
+ }
+
+
+ if (e.keyCode == 17)
+ return true;
+
+
+
+
+ if (!posKey && e.type == "keyup" )
+ tinyMCE.execCommand("mceStartTyping" );
+
+
+ if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
+ inst.undoBookmark = inst.selection.getBookmark();
+
+
+ if (e.type == "keyup" && (posKey || e.ctrlKey))
+ tinyMCE.execCommand("mceEndTyping" );
+
+ if (posKey && e.type == "keyup" )
+ tinyMCE.triggerNodeChange(false);
+
+ if (tinyMCE.isMSIE && e.ctrlKey)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);' , 1);
+ break;
+
+ case "mousedown" :
+ case "mouseup" :
+ case "click" :
+ case "focus" :
+ tinyMCE.hideMenus();
+
+ if (tinyMCE.selectedInstance) {
+ tinyMCE.selectedInstance.switchSettings();
+ tinyMCE.selectedInstance.isFocused = true;
+ }
+
+
+ var targetBody = tinyMCE.getParentElement(e.target, "body" );
+ for (var instanceName in tinyMCE.instances) {
+ if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
+ continue;
+
+ var inst = tinyMCE.instances[instanceName];
+
+
+ inst.autoResetDesignMode();
+
+ if (inst.getBody() == targetBody) {
+ tinyMCE.selectedInstance = inst;
+ tinyMCE.selectedElement = e.target;
+ tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a" );
+ tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img" );
+ break;
+ }
+ }
+
+
+ if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark)
+ tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();
+
+ if (tinyMCE.isSafari) {
+ tinyMCE.selectedInstance.lastSafariSelection = tinyMCE.selectedInstance.selection.getBookmark();
+ tinyMCE.selectedInstance.lastSafariSelectedElement = tinyMCE.selectedElement;
+
+ var lnk = tinyMCE.getParentElement(tinyMCE.selectedElement, "a" );
+
+
+ if (lnk && e.type == "mousedown" ) {
+ lnk.setAttribute("mce_real_href" , lnk.getAttribute("href" ));
+ lnk.setAttribute("href" , "javascript:void(0);" );
+ }
+
+
+ if (lnk && e.type == "click" ) {
+ window.setTimeout(function () {
+ lnk.setAttribute("href" , lnk.getAttribute("mce_real_href" ));
+ lnk.removeAttribute("mce_real_href" );
+ }, 10);
+ }
+ }
+
+
+ if (e.type != "focus" )
+ tinyMCE.selectedNode = null;
+
+ tinyMCE.triggerNodeChange(false);
+ tinyMCE.execCommand("mceEndTyping" );
+
+ if (e.type == "mouseup" )
+ tinyMCE.execCommand("mceAddUndoLevel" );
+
+
+ if (!tinyMCE.selectedInstance && e.target.editorId)
+ tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+
+ return false;
+ break;
+ }
+ },
+
+
+ getButtonHTML : function (id, lang, img, cmd, ui, val) {
+ var h = '' , m, x;
+
+ cmd = 'tinyMCE.execInstanceCommand(\' {$editor_id}\',\' ' + cmd + ' \'' ;
+
+ if (typeof(ui) != "undefined" && ui != null)
+ cmd += ',' + ui;
+
+ if (typeof(val) != "undefined" && val != null)
+ cmd += ",'" + val + "'" ;
+
+ cmd += ');' ;
+
+
+ if (tinyMCE.getParam('button_tile_map' ) && (!tinyMCE.isMSIE || tinyMCE.isOpera) && (m = this .buttonMap[id]) != null && (tinyMCE.getParam("language" ) == "en" || img.indexOf('$lang' ) == -1)) {
+
+ x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
+ h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceButtonNormal" target="_self">' ;
+ h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" title="{$' + lang + '}" />' ;
+ h += '</a>' ;
+ } else {
+
+ h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceButtonNormal" target="_self">' ;
+ h += '<img src="' + img + '" title="{$' + lang + '}" />' ;
+ h += '</a>' ;
+ }
+
+ return h;
+ },
+
+
+ addButtonMap : function (m) {
+ var i, a = m.replace(/\s+/, '' ).split(',' );
+
+ for (i=0; i<a.length; i++)
+ this .buttonMap[a[i]] = i;
+ },
+
+
+ submitPatch : function () {
+ tinyMCE.removeTinyMCEFormElements(this );
+ tinyMCE.triggerSave();
+ this .mceOldSubmit();
+ tinyMCE.isNotDirty = true;
+ },
+
+
+ onLoad : function () {
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera && window.event.type == "readystatechange" && document.readyState != "complete" )
+ return true;
+
+ if (tinyMCE.isLoaded)
+ return true;
+
+ tinyMCE.isLoaded = true;
+
+ tinyMCE.dispatchCallback(null, 'onpageload' , 'onPageLoad' );
+
+ for (var c=0; c<tinyMCE.configs.length; c++) {
+ tinyMCE.settings = tinyMCE.configs[c];
+
+ var selector = tinyMCE.getParam("editor_selector" );
+ var deselector = tinyMCE.getParam("editor_deselector" );
+ var elementRefAr = new Array();
+
+
+ if (document.forms && tinyMCE.settings['add_form_submit_trigger' ] && !tinyMCE.submitTriggers) {
+ for (var i=0; i<document.forms.length; i++) {
+ var form = document.forms[i];
+
+ tinyMCE.addEvent(form, "submit" , TinyMCE_Engine.prototype .handleEvent);
+ tinyMCE.addEvent(form, "reset" , TinyMCE_Engine.prototype .handleEvent);
+ tinyMCE.submitTriggers = true;
+
+
+ if (tinyMCE.settings['submit_patch' ]) {
+ try {
+ form.mceOldSubmit = form.submit;
+ form.submit = TinyMCE_Engine.prototype .submitPatch;
+ } catch (e) {
+
+ }
+ }
+ }
+ }
+
+
+ var mode = tinyMCE.settings['mode' ];
+ switch (mode) {
+ case "exact" :
+ var elements = tinyMCE.getParam('elements' , '' , true, ',' );
+
+ for (var i=0; i<elements.length; i++) {
+ var element = tinyMCE._getElementById(elements[i]);
+ var trigger = element ? element.getAttribute(tinyMCE.settings['textarea_trigger' ]) : "" ;
+
+ if (tinyMCE.getAttrib(element, "class" ).indexOf(deselector) != -1)
+ continue;
+
+ if (trigger == "false" )
+ continue;
+
+ if ((tinyMCE.settings['ask' ] || tinyMCE.settings['convert_on_click' ]) && element) {
+ elementRefAr[elementRefAr.length] = element;
+ continue;
+ }
+
+ if (element)
+ tinyMCE.addMCEControl(element, elements[i]);
+ else if (tinyMCE.settings['debug' ])
+ alert("Error: Could not find element by id or name: " + elements[i]);
+ }
+ break;
+
+ case "specific_textareas" :
+ case "textareas" :
+ var nodeList = document.getElementsByTagName("textarea" );
+
+ for (var i=0; i<nodeList.length; i++) {
+ var elm = nodeList.item(i);
+ var trigger = elm.getAttribute(tinyMCE.settings['textarea_trigger' ]);
+
+ if (selector != '' && tinyMCE.getAttrib(elm, "class" ).indexOf(selector) == -1)
+ continue;
+
+ if (selector != '' )
+ trigger = selector != "" ? "true" : "" ;
+
+ if (tinyMCE.getAttrib(elm, "class" ).indexOf(deselector) != -1)
+ continue;
+
+ if ((mode == "specific_textareas" && trigger == "true" ) || (mode == "textareas" && trigger != "false" ))
+ elementRefAr[elementRefAr.length] = elm;
+ }
+ break;
+ }
+
+ for (var i=0; i<elementRefAr.length; i++) {
+ var element = elementRefAr[i];
+ var elementId = element.name ? element.name : element.id;
+
+ if (tinyMCE.settings['ask' ] || tinyMCE.settings['convert_on_click' ]) {
+
+ if (tinyMCE.isGecko) {
+ var settings = tinyMCE.settings;
+
+ tinyMCE.addEvent(element, "focus" , function (e) {window.setTimeout(function () {TinyMCE_Engine.prototype .confirmAdd(e, settings);}, 10);});
+
+ if (element.nodeName != "TEXTAREA" && element.nodeName != "INPUT" )
+ tinyMCE.addEvent(element, "click" , function (e) {window.setTimeout(function () {TinyMCE_Engine.prototype .confirmAdd(e, settings);}, 10);});
+
+ } else {
+ var settings = tinyMCE.settings;
+
+ tinyMCE.addEvent(element, "focus" , function () { TinyMCE_Engine.prototype .confirmAdd(null, settings); });
+ tinyMCE.addEvent(element, "click" , function () { TinyMCE_Engine.prototype .confirmAdd(null, settings); });
+
+ }
+ } else
+ tinyMCE.addMCEControl(element, elementId);
+ }
+
+
+ if (tinyMCE.settings['auto_focus' ]) {
+ window.setTimeout(function () {
+ var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus' ]);
+ inst.selection.selectNode(inst.getBody(), true, true);
+ inst.contentWindow.focus();
+ }, 10);
+ }
+
+ tinyMCE.dispatchCallback(null, 'oninit' , 'onInit' );
+ }
+ },
+
+
+ isInstance : function (o) {
+ return o != null && typeof(o) == "object" && o.isTinyMCE_Control;
+ },
+
+
+ getParam : function (name, default_value, strip_whitespace, split_chr) {
+ var value = (typeof(this .settings[name]) == "undefined" ) ? default_value : this .settings[name];
+
+
+ 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<value.length; i++) {
+ if (value[i] && value[i] != "" )
+ outArray[outArray.length] = value[i];
+ }
+
+ value = outArray;
+ }
+
+ return value;
+ },
+
+
+ getLang : function (name, default_value, parse_entities, va) {
+ var v = (typeof(tinyMCELang[name]) == "undefined" ) ? default_value : tinyMCELang[name], n;
+
+ if (parse_entities)
+ v = tinyMCE.entityDecode(v);
+
+ if (va) {
+ for (n in va)
+ v = this .replaceVar(v, n, va[n]);
+ }
+
+ return v;
+ },
+
+
+ entityDecode : function (s) {
+ var e = document.createElement("div" );
+ e.innerHTML = s;
+ return e.innerHTML;
+ },
+
+
+ addToLang : function (prefix, ar) {
+ for (var key in ar) {
+ if (typeof(ar[key]) == 'function' )
+ continue;
+
+ tinyMCELang[(key.indexOf('lang_' ) == -1 ? 'lang_' : '' ) + (prefix != '' ? (prefix + "_" ) : '' ) + key] = ar[key];
+ }
+
+
+
+ },
+
+
+ triggerNodeChange : function (focus, setup_content) {
+ if (tinyMCE.selectedInstance) {
+ var inst = tinyMCE.selectedInstance;
+ var editorId = inst.editorId;
+ var elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();
+ var undoIndex = -1;
+ var undoLevels = -1;
+ var anySelection = false;
+ var selectedText = inst.selection.getSelectedText();
+
+ if (setup_content && tinyMCE.isGecko && inst.isHidden())
+ elm = inst.getBody();
+
+ inst.switchSettings();
+
+ if (tinyMCE.settings["auto_resize" ]) {
+ var doc = inst.getDoc();
+
+ inst.iframeElement.style.width = doc.body.offsetWidth + "px" ;
+ inst.iframeElement.style.height = doc.body.offsetHeight + "px" ;
+ }
+
+ if (tinyMCE.selectedElement)
+ anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img" ) || (selectedText && selectedText.length > 0);
+
+ if (tinyMCE.settings['custom_undo_redo' ]) {
+ undoIndex = inst.undoRedo.undoIndex;
+ undoLevels = inst.undoRedo.undoLevels.length;
+ }
+
+ tinyMCE.dispatchCallback(inst, 'handle_node_change_callback' , 'handleNodeChange' , editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content);
+ }
+
+ if (this .selectedInstance && (typeof(focus) == "undefined" || focus))
+ this .selectedInstance.contentWindow.focus();
+ },
+
+
+ _customCleanup : function (inst, type, content) {
+ var pl, po, i;
+
+
+ var customCleanup = tinyMCE.settings['cleanup_callback' ];
+ if (customCleanup != "" && eval("typeof(" + customCleanup + ")" ) != "undefined" )
+ content = eval(customCleanup + "(type, content, inst);" );
+
+
+ pl = inst.plugins;
+ for (i=0; i<pl.length; i++) {
+ po = tinyMCE.plugins[pl[i]];
+
+ if (po && po.cleanup)
+ content = po.cleanup(type, content, inst);
+ }
+
+ return content;
+ },
+
+
+ setContent : function (h) {
+ if (tinyMCE.selectedInstance) {
+ tinyMCE.selectedInstance.execCommand('mceSetContent' , false, h);
+ tinyMCE.selectedInstance.repaint();
+ }
+ },
+
+
+ importThemeLanguagePack : function (name) {
+ if (typeof(name) == "undefined" )
+ name = tinyMCE.settings['theme' ];
+
+ tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings['language' ] + '.js' );
+ },
+
+
+ importPluginLanguagePack : function (name, valid_languages) {
+ var lang = "en" , b = tinyMCE.baseURL + '/plugins/' + name;
+
+ valid_languages = valid_languages.split(',' );
+ for (var i=0; i<valid_languages.length; i++) {
+ if (tinyMCE.settings['language' ] == valid_languages[i])
+ lang = tinyMCE.settings['language' ];
+ }
+
+ if (this .plugins[name])
+ b = this .plugins[name].baseURL;
+
+ tinyMCE.loadScript(b + '/langs/' + lang + '.js' );
+ },
+
+
+ applyTemplate : function (h, as) {
+ var i, s, ar = h.match(new RegExp('\\{\\$[a-z0-9_]+\\}' , 'gi' ));
+
+ if (ar && ar.length > 0) {
+ for (i=ar.length-1; i>=0; i--) {
+ s = ar[i].substring(2, ar[i].length-1);
+
+ if (s.indexOf('lang_' ) == 0 && tinyMCELang[s])
+ h = tinyMCE.replaceVar(h, s, tinyMCELang[s]);
+ else if (as && as[s])
+ h = tinyMCE.replaceVar(h, s, as[s]);
+ else if (tinyMCE.settings[s])
+ h = tinyMCE.replaceVar(h, s, tinyMCE.settings[s]);
+ }
+ }
+
+ h = tinyMCE.replaceVar(h, "themeurl" , tinyMCE.themeURL);
+
+ return h;
+ },
+
+
+ replaceVar : function (h, r, v) {
+ return h.replace(new RegExp('{\\\$' + r + '}' , 'g' ), v);
+ },
+
+
+ openWindow : function (template, args) {
+ var html, width, height, x, y, resizable, scrollbars, url;
+
+ args['mce_template_file' ] = template['file' ];
+ args['mce_width' ] = template['width' ];
+ args['mce_height' ] = template['height' ];
+ tinyMCE.windowArgs = args;
+
+ html = template['html' ];
+ if (!(width = parseInt(template['width' ])))
+ width = 320;
+
+ if (!(height = parseInt(template['height' ])))
+ height = 200;
+
+
+ if (tinyMCE.isMSIE)
+ height += 40;
+ else
+ height += 20;
+
+ x = parseInt(screen.width / 2.0) - (width / 2.0);
+ y = parseInt(screen.height / 2.0) - (height / 2.0);
+
+ resizable = (args && args['resizable' ]) ? args['resizable' ] : "no" ;
+ scrollbars = (args && args['scrollbars' ]) ? args['scrollbars' ] : "no" ;
+
+ if (template['file' ].charAt(0) != '/' && template['file' ].indexOf('://' ) == -1)
+ url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme" ) + "/" + template['file' ];
+ else
+ url = template['file' ];
+
+
+ for (var name in args) {
+ if (typeof(args[name]) == 'function' )
+ continue;
+
+ url = tinyMCE.replaceVar(url, name, escape(args[name]));
+ }
+
+ if (html) {
+ html = tinyMCE.replaceVar(html, "css" , this .settings['popups_css' ]);
+ html = tinyMCE.applyTemplate(html, args);
+
+ var win = window.open("" , "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable);
+ if (win == null) {
+ alert(tinyMCELang['lang_popup_blocked' ]);
+ return ;
+ }
+
+ win.document.write(html);
+ win.document.close();
+ win.resizeTo(width, height);
+ win.focus();
+ } else {
+ if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && resizable != 'yes' && tinyMCE.settings["dialog_type" ] == "modal" ) {
+ height += 10;
+
+ var features = "resizable:" + resizable
+ + ";scroll:"
+ + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:"
+ + width + "px;dialogHeight:" + height + "px;" ;
+
+ window.showModalDialog(url, window, features);
+ } else {
+ var modal = (resizable == "yes" ) ? "no" : "yes" ;
+
+ if (tinyMCE.isGecko && tinyMCE.isMac)
+ modal = "no" ;
+
+ if (template['close_previous' ] != "no" )
+ try {tinyMCE.lastWindow.close();} catch (ex) {}
+
+ var win = window.open(url, "mcePopup" + new Date().getTime(), "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=" + modal + ",minimizable=" + resizable + ",modal=" + modal + ",width=" + width + ",height=" + height + ",resizable=" + resizable);
+ if (win == null) {
+ alert(tinyMCELang['lang_popup_blocked' ]);
+ return ;
+ }
+
+ if (template['close_previous' ] != "no" )
+ tinyMCE.lastWindow = win;
+
+ eval('try { win.resizeTo(width, height); } catch(e) { }' );
+
+
+ if (tinyMCE.isGecko) {
+ if (win.document.defaultView.statusbar.visible)
+ win.resizeBy(0, tinyMCE.isMac ? 10 : 24);
+ }
+
+ win.focus();
+ }
+ }
+ },
+
+
+ closeWindow : function (win) {
+ win.close();
+ },
+
+
+ getVisualAidClass : function (class_name, state) {
+ var aidClass = tinyMCE.settings['visual_table_class' ];
+
+ if (typeof(state) == "undefined" )
+ state = tinyMCE.settings['visual' ];
+
+
+ var classNames = new Array();
+ var ar = class_name.split(' ' );
+ for (var i=0; i<ar.length; i++) {
+ if (ar[i] == aidClass)
+ ar[i] = "" ;
+
+ if (ar[i] != "" )
+ classNames[classNames.length] = ar[i];
+ }
+
+ if (state)
+ classNames[classNames.length] = aidClass;
+
+
+ var className = "" ;
+ for (var i=0; i<classNames.length; i++) {
+ if (i > 0)
+ className += " " ;
+
+ className += classNames[i];
+ }
+
+ return className;
+ },
+
+
+ handleVisualAid : function (el, deep, state, inst, skip_dispatch) {
+ if (!el)
+ return ;
+
+ if (!skip_dispatch)
+ tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback' , 'handleVisualAid' , el, deep, state, inst);
+
+ 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<el.rows.length; y++) {
+ for (var x=0; x<el.rows[y].cells.length; x++) {
+ var cn = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x], "class" ), state && bo);
+ tinyMCE.setAttrib(el.rows[y].cells[x], "class" , cn);
+ }
+ }
+
+ break;
+
+ case "A" :
+ var anchorName = tinyMCE.getAttrib(el, "name" );
+
+ if (anchorName != '' && state) {
+ el.title = anchorName;
+ el.className = 'mceItemAnchor' ;
+ } else if (anchorName != '' && !state)
+ el.className = '' ;
+
+ break;
+ }
+
+ if (deep && el.hasChildNodes()) {
+ for (var i=0; i<el.childNodes.length; i++)
+ tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);
+ }
+ },
+
+
+
+
+ fixGeckoBaseHREFBug : function (m, e, h) {
+ var nl, i, a, n, xsrc, xhref, el;
+
+ if (tinyMCE.isGecko) {
+ if (m == 1) {
+ h = h.replace(/\ssrc=/gi, " mce_tsrc=" );
+ h = h.replace(/\shref=/gi, " mce_thref=" );
+
+ return h;
+ } else {
+ el = new Array('a' ,'img' ,'select' ,'area' ,'iframe' ,'base' ,'input' ,'script' ,'embed' ,'object' ,'link' );
+
+ for (a=0; a<el.length; a++) {
+ n = e.getElementsByTagName(el[a]);
+
+ for (i=0; i<n.length; i++) {
+ xsrc = tinyMCE.getAttrib(n[i], "mce_tsrc" );
+ xhref = tinyMCE.getAttrib(n[i], "mce_thref" );
+
+ if (xsrc != "" ) {
+ try {
+ n[i].src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], xsrc);
+ } catch (e) {
+
+ }
+
+ n[i].removeAttribute("mce_tsrc" );
+ }
+
+ if (xhref != "" ) {
+ try {
+ n[i].href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], xhref);
+ } catch (e) {
+
+ }
+
+ n[i].removeAttribute("mce_thref" );
+ }
+ }
+ }
+
+ el = tinyMCE.selectNodes(e, function (n) {
+ if (n.nodeType == 3 || n.nodeType == 8) {
+ n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=" );
+ n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=" );
+ }
+
+ return false;
+ });
+ }
+ }
+
+ return h;
+ },
+
+
+ _setHTML : function (doc, html_content) {
+
+
+
+ html_content = tinyMCE.cleanupHTMLCode(html_content);
+
+
+ try {
+ tinyMCE.setInnerHTML(doc.body, html_content);
+ } catch (e) {
+ if (this .isMSIE)
+ doc.body.createTextRange().pasteHTML(html_content);
+ }
+
+
+ if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication' ]) {
+
+ var paras = doc.getElementsByTagName("P" );
+ for (var i=0; i<paras.length; i++) {
+ var node = paras[i];
+ while ((node = node.parentNode) != null) {
+ if (node.nodeName == "P" )
+ node.outerHTML = node.innerHTML;
+ }
+ }
+
+
+ var html = doc.body.innerHTML;
+
+
+
+ tinyMCE.setInnerHTML(doc.body, html);
+ }
+
+ tinyMCE.cleanupAnchors(doc);
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertSpansToFonts(doc);
+ },
+
+
+ getEditorId : function (form_element) {
+ var inst = this .getInstanceById(form_element);
+ if (!inst)
+ return null;
+
+ return inst.editorId;
+ },
+
+
+ getInstanceById : function (editor_id) {
+ var inst = this .instances[editor_id];
+ if (!inst) {
+ for (var n in tinyMCE.instances) {
+ var instance = tinyMCE.instances[n];
+ if (!tinyMCE.isInstance(instance))
+ continue;
+
+ if (instance.formTargetElementId == editor_id) {
+ inst = instance;
+ break;
+ }
+ }
+ }
+
+ return inst;
+ },
+
+
+ queryInstanceCommandValue : function (editor_id, command) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+ if (inst)
+ return inst.queryCommandValue(command);
+
+ return false;
+ },
+
+
+ queryInstanceCommandState : function (editor_id, command) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+ if (inst)
+ return inst.queryCommandState(command);
+
+ return null;
+ },
+
+
+ setWindowArg : function (n, v) {
+ this .windowArgs[n] = v;
+ },
+
+
+ getWindowArg : function (n, d) {
+ return (typeof(this .windowArgs[n]) == "undefined" ) ? d : this .windowArgs[n];
+ },
+
+
+ getCSSClasses : function (editor_id, doc) {
+ var output = new Array();
+
+
+ if (typeof(tinyMCE.cssClasses) != "undefined" )
+ return tinyMCE.cssClasses;
+
+ if (typeof(editor_id) == "undefined" && typeof(doc) == "undefined" ) {
+ var instance;
+
+ for (var instanceName in tinyMCE.instances) {
+ instance = tinyMCE.instances[instanceName];
+ if (!tinyMCE.isInstance(instance))
+ continue;
+
+ break;
+ }
+
+ doc = instance.getDoc();
+ }
+
+ if (typeof(doc) == "undefined" ) {
+ var instance = tinyMCE.getInstanceById(editor_id);
+ doc = instance.getDoc();
+ }
+
+ if (doc) {
+ var styles = doc.styleSheets;
+
+ if (styles && styles.length > 0) {
+ for (var x=0; x<styles.length; x++) {
+ var csses = null;
+
+
+ eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(" + x + ").rules : styles[" + x + "].cssRules;} catch(e) {}" );
+ if (!csses)
+ return new Array();
+
+ for (var i=0; i<csses.length; i++) {
+ var selectorText = csses[i].selectorText;
+
+
+ if (selectorText) {
+ var rules = selectorText.split(',' );
+ for (var c=0; c<rules.length; c++) {
+ var rule = rules[c];
+
+
+ while (rule.indexOf(' ' ) == 0)
+ rule = rule.substring(1);
+
+
+ if (rule.indexOf(' ' ) != -1 || rule.indexOf(':' ) != -1 || rule.indexOf('mceItem' ) != -1)
+ continue;
+
+ if (rule.indexOf(tinyMCE.settings['visual_table_class' ]) != -1 || rule.indexOf('mceEditable' ) != -1 || rule.indexOf('mceNonEditable' ) != -1)
+ continue;
+
+
+ if (rule.indexOf('.' ) != -1) {
+ var cssClass = rule.substring(rule.indexOf('.' ) + 1);
+ var addClass = true;
+
+ for (var p=0; p<output.length && addClass; p++) {
+ if (output[p] == cssClass)
+ addClass = false;
+ }
+
+ if (addClass)
+ output[output.length] = cssClass;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ if (output.length > 0)
+ tinyMCE.cssClasses = output;
+
+ return output;
+ },
+
+
+ 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);
+ },
+
+
+ trim : function (s) {
+ return s.replace(/^\s*|\s*$/g, "" );
+ },
+
+
+ cleanupEventStr : function (s) {
+ s = "" + s;
+ s = s.replace('function anonymous()\n{\n' , '' );
+ s = s.replace('\n}' , '' );
+ s = s.replace(/^return true;/gi, '' );
+
+ return s;
+ },
+
+
+ getControlHTML : function (c) {
+ var i, l, n, o, v;
+
+ l = tinyMCE.plugins;
+ for (n in l) {
+ o = l[n];
+
+ if (o.getControlHTML && (v = o.getControlHTML(c)) != '' )
+ return tinyMCE.replaceVar(v, "pluginurl" , o.baseURL);
+ }
+
+ o = tinyMCE.themes[tinyMCE.settings['theme' ]];
+ if (o.getControlHTML && (v = o.getControlHTML(c)) != '' )
+ return v;
+
+ return '' ;
+ },
+
+
+ evalFunc : function (f, idx, a) {
+ var s = '(' , i;
+
+ for (i=idx; i<a.length; i++) {
+ s += 'a[' + i + ']' ;
+
+ if (i < a.length-1)
+ s += ',' ;
+ }
+
+ s += ');' ;
+
+ return eval("f" + s);
+ },
+
+
+ dispatchCallback : function (i, p, n) {
+ return this .callFunc(i, p, n, 0, this .dispatchCallback.arguments);
+ },
+
+
+ executeCallback : function (i, p, n) {
+ return this .callFunc(i, p, n, 1, this .executeCallback.arguments);
+ },
+
+
+ execCommandCallback : function (i, p, n) {
+ return this .callFunc(i, p, n, 2, this .execCommandCallback.arguments);
+ },
+
+
+ callFunc : function (ins, p, n, m, a) {
+ var l, i, on, o, s, v;
+
+ s = m == 2;
+
+ l = tinyMCE.getParam(p, '' );
+
+ if (l != '' && (v = tinyMCE.evalFunc(typeof(l) == "function" ? l : eval(l), 3, a)) == s && m > 0)
+ return true;
+
+ if (ins != null) {
+ for (i=0, l = ins.plugins; i<l.length; i++) {
+ o = tinyMCE.plugins[l[i]];
+
+ if (o[n] && (v = tinyMCE.evalFunc(o[n], 3, a)) == s && m > 0)
+ return true;
+ }
+ }
+
+ l = tinyMCE.themes;
+ for (on in l) {
+ o = l[on];
+
+ if (o[n] && (v = tinyMCE.evalFunc(o[n], 3, a)) == s && m > 0)
+ return true;
+ }
+
+ return false;
+ },
+
+
+ xmlEncode : function (s) {
+ s = "" + s;
+ s = s.replace(/&/g, '&' );
+ s = s.replace(new RegExp('"' , 'g' ), '"' );
+ s = s.replace(/\'/g, ' ''); // ' is not working in MSIE
+ s = s.replace(/</g, ' <');
+ s = s.replace(/>/g, ' >');
+
+ return s;
+ },
+
+
+ extend : function (p, np) {
+ var o = {};
+
+ o.parent = p;
+
+ for (n in p)
+ o[n] = p[n];
+
+ for (n in np)
+ o[n] = np[n];
+
+ return o;
+ },
+
+
+ hideMenus : function () {
+ var e = tinyMCE.lastSelectedMenuBtn;
+
+ if (tinyMCE.lastMenu) {
+ tinyMCE.lastMenu.hide();
+ tinyMCE.lastMenu = null;
+ }
+
+ if (e) {
+ tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass);
+ tinyMCE.lastSelectedMenuBtn = null;
+ }
+ },
+
+
+ explode : function (d, s) {
+ var ar = s.split(d), oar = new Array(), i;
+
+ for (i = 0; i<ar.length; i++) {
+ if (ar[i] != "" )
+ oar[oar.length] = ar[i];
+ }
+
+ return oar;
+ }
+};
+
+
+var TinyMCE = TinyMCE_Engine;
+var tinyMCE = new TinyMCE_Engine();
+var tinyMCELang = {};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Event.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Event.class.js.html
new file mode 100644
index 000000000..e6578872f
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Event.class.js.html
@@ -0,0 +1,403 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Event.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Event.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.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<evs.length; y++){
+ var elms = node.getElementsByTagName(evs[y]);
+ for (var i=0; i<elms.length; i++) {
+ var event = "" ;
+
+ for (var x=0; x<events.length; x++) {
+ if ((event = tinyMCE.getAttrib(elms[i], events[x])) != '' ) {
+ event = tinyMCE.cleanupEventStr("" + event);
+
+ if (!state)
+ event = "return true;" + event;
+ else
+ event = event.replace(/^return true;/gi, '' );
+
+ elms[i].removeAttribute(events[x]);
+ elms[i].setAttribute(events[x], event);
+ }
+ }
+ }
+ }
+};
+
+
+TinyMCE_Engine.prototype ._eventPatch = function (editor_id) {
+ var n, inst, win, e;
+
+
+ if (typeof(tinyMCE) == "undefined" )
+ return true;
+
+ try {
+
+ if (tinyMCE.selectedInstance) {
+ win = tinyMCE.selectedInstance.getWin();
+
+ if (win && win.event) {
+ e = win.event;
+
+ if (!e.target)
+ e.target = e.srcElement;
+
+ TinyMCE_Engine.prototype .handleEvent(e);
+ return ;
+ }
+ }
+
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (!tinyMCE.isInstance(inst))
+ continue;
+
+ tinyMCE.selectedInstance = inst;
+ win = inst.getWin();
+
+ if (win && win.event) {
+ e = win.event;
+
+ if (!e.target)
+ e.target = e.srcElement;
+
+ TinyMCE_Engine.prototype .handleEvent(e);
+ return ;
+ }
+ }
+ } catch (ex) {
+
+ }
+};
+
+
+TinyMCE_Engine.prototype .unloadHandler = function () {
+ tinyMCE.triggerSave(true, true);
+};
+
+
+TinyMCE_Engine.prototype .addEventHandlers = function (inst) {
+ var doc = inst.getDoc();
+
+ inst.switchSettings();
+
+ if (tinyMCE.isMSIE) {
+ tinyMCE.addEvent(doc, "keypress" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(doc, "keyup" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(doc, "keydown" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(doc, "mouseup" , TinyMCE_Engine.prototype ._eventPatch);
+ tinyMCE.addEvent(doc, "click" , TinyMCE_Engine.prototype ._eventPatch);
+ } else {
+ tinyMCE.addEvent(doc, "keypress" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "keydown" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "keyup" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "click" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "mouseup" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "mousedown" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "focus" , tinyMCE.handleEvent);
+ tinyMCE.addEvent(doc, "blur" , tinyMCE.handleEvent);
+
+ eval('try { doc.designMode = "On"; } catch(e) {}' );
+ }
+};
+
+
+TinyMCE_Engine.prototype .onMouseMove = function () {
+ var inst;
+
+ if (!tinyMCE.hasMouseMoved) {
+ inst = tinyMCE.selectedInstance;
+
+
+ if (inst.isFocused) {
+ inst.undoBookmark = inst.selection.getBookmark();
+ tinyMCE.hasMouseMoved = true;
+ }
+ }
+
+
+
+};
+
+
+TinyMCE_Engine.prototype .cancelEvent = function (e) {
+ if (tinyMCE.isMSIE) {
+ e.returnValue = false;
+ e.cancelBubble = true;
+ } else
+ e.preventDefault();
+};
+
+
+TinyMCE_Engine.prototype .addEvent = function (o, n, h) {
+ if (o.attachEvent)
+ o.attachEvent("on" + n, h);
+ else
+ o.addEventListener(n, h, false);
+};
+
+
+TinyMCE_Engine.prototype .addSelectAccessibility = function (e, s, w) {
+
+ if (!s._isAccessible) {
+ s.onkeydown = tinyMCE.accessibleEventHandler;
+ s.onblur = tinyMCE.accessibleEventHandler;
+ s._isAccessible = true;
+ s._win = w;
+ }
+
+ return false;
+};
+
+
+TinyMCE_Engine.prototype .accessibleEventHandler = function (e) {
+ var win = this ._win;
+ e = tinyMCE.isMSIE ? win.event : e;
+ var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
+
+
+ if (e.type == "blur" ) {
+ if (elm.oldonchange) {
+ elm.onchange = elm.oldonchange;
+ elm.oldonchange = null;
+ }
+
+ return true;
+ }
+
+
+ if (elm.nodeName == "SELECT" && !elm.oldonchange) {
+ elm.oldonchange = elm.onchange;
+ elm.onchange = null;
+ }
+
+
+ if (e.keyCode == 13 || e.keyCode == 32) {
+ elm.onchange = elm.oldonchange;
+ elm.onchange();
+ elm.oldonchange = null;
+
+ tinyMCE.cancelEvent(e);
+ return false;
+ }
+
+ return true;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_ForceParagraphs.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_ForceParagraphs.class.js.html
new file mode 100644
index 000000000..2ab32aa05
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_ForceParagraphs.class.js.html
@@ -0,0 +1,460 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_ForceParagraphs.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_ForceParagraphs.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var TinyMCE_ForceParagraphs = {
+
+ _insertPara : function (inst, e) {
+ function isEmpty(para) {
+ function isEmptyHTML(html) {
+ return html.replace(new RegExp('[ \t\r\n]+' , 'g' ), '' ).toLowerCase() == "" ;
+ }
+
+
+ if (para.getElementsByTagName("img" ).length > 0)
+ return false;
+
+
+ if (para.getElementsByTagName("table" ).length > 0)
+ return false;
+
+
+ if (para.getElementsByTagName("hr" ).length > 0)
+ return false;
+
+
+ var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
+ for (var i=0; i<nodes.length; i++) {
+ if (!isEmptyHTML(nodes[i].nodeValue))
+ return false;
+ }
+
+
+ return true;
+ }
+
+ var doc = inst.getDoc();
+ var sel = inst.getSel();
+ var win = inst.contentWindow;
+ var rng = sel.getRangeAt(0);
+ var body = doc.body;
+ var rootElm = doc.documentElement;
+ var blockName = "P" ;
+
+
+
+
+
+
+ var rngBefore = doc.createRange();
+ rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
+ rngBefore.collapse(true);
+
+
+ var rngAfter = doc.createRange();
+ rngAfter.setStart(sel.focusNode, sel.focusOffset);
+ rngAfter.collapse(true);
+
+
+ var direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
+ var startNode = direct ? sel.anchorNode : sel.focusNode;
+ var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
+ var endNode = direct ? sel.focusNode : sel.anchorNode;
+ var endOffset = direct ? sel.focusOffset : sel.anchorOffset;
+
+ startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
+ endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
+
+
+
+
+ var startBlock = tinyMCE.getParentBlockElement(startNode);
+ var endBlock = tinyMCE.getParentBlockElement(endNode);
+
+
+ if (startBlock && new RegExp('absolute|relative|static' , 'gi' ).test(startBlock.style.position))
+ startBlock = null;
+
+ if (endBlock && new RegExp('absolute|relative|static' , 'gi' ).test(endBlock.style.position))
+ endBlock = null;
+
+
+ if (startBlock != null) {
+ blockName = startBlock.nodeName;
+
+
+ if (blockName == "TD" || blockName == "TABLE" || (blockName == "DIV" && new RegExp('left|right' , 'gi' ).test(startBlock.style.cssFloat)))
+ blockName = "P" ;
+ }
+
+
+ if (tinyMCE.getParentElement(startBlock, "OL,UL" ) != null)
+ return false;
+
+
+ if ((startBlock != null && startBlock.nodeName == "TABLE" ) || (endBlock != null && endBlock.nodeName == "TABLE" ))
+ startBlock = endBlock = null;
+
+
+ var paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
+ var paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
+
+
+ if (/^(H[1-6])$/.test(blockName))
+ paraAfter = doc.createElement("p" );
+
+
+ var startChop = startNode;
+ var endChop = endNode;
+
+
+ node = startChop;
+ do {
+ if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+ break;
+
+ startChop = node;
+ } while ((node = node.previousSibling ? node.previousSibling : node.parentNode));
+
+
+ node = endChop;
+ do {
+ if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+ break;
+
+ endChop = node;
+ } while ((node = node.nextSibling ? node.nextSibling : node.parentNode));
+
+
+ if (startChop.nodeName == "TD" )
+ startChop = startChop.firstChild;
+
+ if (endChop.nodeName == "TD" )
+ endChop = endChop.lastChild;
+
+
+ if (startBlock == null) {
+
+ rng.deleteContents();
+ sel.removeAllRanges();
+
+ if (startChop != rootElm && endChop != rootElm) {
+
+ rngBefore = rng.cloneRange();
+
+ if (startChop == body)
+ rngBefore.setStart(startChop, 0);
+ else
+ rngBefore.setStartBefore(startChop);
+
+ paraBefore.appendChild(rngBefore.cloneContents());
+
+
+ if (endChop.parentNode.nodeName == blockName)
+ endChop = endChop.parentNode;
+
+
+
+ rng.setEndAfter(endChop);
+
+ if (endChop.nodeName != "#text" && endChop.nodeName != "BODY" )
+ rngBefore.setEndAfter(endChop);
+
+ var contents = rng.cloneContents();
+ if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY" ))
+ paraAfter.innerHTML = contents.firstChild.innerHTML;
+ else
+ paraAfter.appendChild(contents);
+
+
+ if (isEmpty(paraBefore))
+ paraBefore.innerHTML = " " ;
+
+
+ if (isEmpty(paraAfter))
+ paraAfter.innerHTML = " " ;
+
+
+ rng.deleteContents();
+ rngAfter.deleteContents();
+ rngBefore.deleteContents();
+
+
+ paraAfter.normalize();
+ rngBefore.insertNode(paraAfter);
+ paraBefore.normalize();
+ rngBefore.insertNode(paraBefore);
+
+
+ } else {
+ body.innerHTML = "<" + blockName + "> </" + blockName + "><" + blockName + "> </" + blockName + ">" ;
+ paraAfter = body.childNodes[1];
+ }
+
+ inst.selection.selectNode(paraAfter, true, true);
+
+ return true;
+ }
+
+
+ if (startChop.nodeName == blockName)
+ rngBefore.setStart(startChop, 0);
+ else
+ rngBefore.setStartBefore(startChop);
+
+ rngBefore.setEnd(startNode, startOffset);
+ paraBefore.appendChild(rngBefore.cloneContents());
+
+
+ rngAfter.setEndAfter(endChop);
+ rngAfter.setStart(endNode, endOffset);
+ var contents = rngAfter.cloneContents();
+
+ if (contents.firstChild && contents.firstChild.nodeName == blockName) {
+
+ paraAfter.innerHTML = contents.firstChild.innerHTML;
+ } else
+ paraAfter.appendChild(contents);
+
+
+ if (isEmpty(paraBefore))
+ paraBefore.innerHTML = " " ;
+
+
+ if (isEmpty(paraAfter))
+ paraAfter.innerHTML = " " ;
+
+
+ var rng = doc.createRange();
+
+ if (!startChop.previousSibling && startChop.parentNode.nodeName.toUpperCase() == blockName) {
+ rng.setStartBefore(startChop.parentNode);
+ } else {
+ if (rngBefore.startContainer.nodeName.toUpperCase() == blockName && rngBefore.startOffset == 0)
+ rng.setStartBefore(rngBefore.startContainer);
+ else
+ rng.setStart(rngBefore.startContainer, rngBefore.startOffset);
+ }
+
+ if (!endChop.nextSibling && endChop.parentNode.nodeName.toUpperCase() == blockName)
+ rng.setEndAfter(endChop.parentNode);
+ else
+ rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
+
+
+ rng.deleteContents();
+ rng.insertNode(paraAfter);
+ rng.insertNode(paraBefore);
+
+
+
+ paraAfter.normalize();
+ paraBefore.normalize();
+
+ inst.selection.selectNode(paraAfter, true, true);
+
+ return true;
+ },
+
+
+ _handleBackSpace : function (inst) {
+ var r = inst.getRng(), sn = r.startContainer, nv, s = false;
+
+ if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" ) {
+ nv = sn.nodeValue;
+
+
+ if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ' )
+ s = true;
+
+
+ if (nv != null && r.startOffset == nv.length)
+ sn.nextSibling.parentNode.removeChild(sn.nextSibling);
+ }
+
+ return s;
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Layer.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Layer.class.js.html
new file mode 100644
index 000000000..e1798adc8
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Layer.class.js.html
@@ -0,0 +1,455 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Layer.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Layer.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_Layer(id, bm) {
+ this .id = id;
+ this .blockerElement = null;
+ this .events = false;
+ this .element = null;
+ this .blockMode = typeof(bm) != 'undefined' ? bm : true;
+ this .doc = document;
+};
+
+TinyMCE_Layer.prototype = {
+
+ moveRelativeTo : function (re, p) {
+ var rep = this .getAbsPosition(re);
+ var w = parseInt(re.offsetWidth);
+ var h = parseInt(re.offsetHeight);
+ var e = this .getElement();
+ var ew = parseInt(e.offsetWidth);
+ var eh = parseInt(e.offsetHeight);
+ var x, y;
+
+ switch (p) {
+ case "tl" :
+ x = rep.absLeft;
+ y = rep.absTop;
+ break;
+
+ case "tr" :
+ x = rep.absLeft + w;
+ y = rep.absTop;
+ break;
+
+ case "bl" :
+ x = rep.absLeft;
+ y = rep.absTop + h;
+ break;
+
+ case "br" :
+ x = rep.absLeft + w;
+ y = rep.absTop + h;
+ break;
+
+ case "cc" :
+ x = rep.absLeft + (w / 2) - (ew / 2);
+ y = rep.absTop + (h / 2) - (eh / 2);
+ break;
+ }
+
+ this .moveTo(x, y);
+ },
+
+
+ moveBy : function (x, y) {
+ var e = this .getElement();
+ this .moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
+ },
+
+
+ moveTo : function (x, y) {
+ var e = this .getElement();
+
+ e.style.left = x + "px" ;
+ e.style.top = y + "px" ;
+
+ this .updateBlocker();
+ },
+
+
+ resizeBy : function (w, h) {
+ var e = this .getElement();
+ this .resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h);
+ },
+
+
+ resizeTo : function (w, h) {
+ var e = this .getElement();
+
+ if (w != null)
+ e.style.width = w + "px" ;
+
+ if (h != null)
+ e.style.height = h + "px" ;
+
+ this .updateBlocker();
+ },
+
+
+ show : function () {
+ this .getElement().style.display = 'block' ;
+ this .updateBlocker();
+ },
+
+
+ hide : function () {
+ this .getElement().style.display = 'none' ;
+ this .updateBlocker();
+ },
+
+
+ isVisible : function () {
+ return this .getElement().style.display == 'block' ;
+ },
+
+
+ getElement : function () {
+ if (!this .element)
+ this .element = this .doc.getElementById(this .id);
+
+ return this .element;
+ },
+
+
+ setBlockMode : function (s) {
+ this .blockMode = s;
+ },
+
+
+ updateBlocker : function () {
+ var e, b, x, y, w, h;
+
+ b = this .getBlocker();
+ if (b) {
+ if (this .blockMode) {
+ e = this .getElement();
+ x = this .parseInt(e.style.left);
+ y = this .parseInt(e.style.top);
+ w = this .parseInt(e.offsetWidth);
+ h = this .parseInt(e.offsetHeight);
+
+ b.style.left = x + 'px' ;
+ b.style.top = y + 'px' ;
+ b.style.width = w + 'px' ;
+ b.style.height = h + 'px' ;
+ b.style.display = e.style.display;
+ } else
+ b.style.display = 'none' ;
+ }
+ },
+
+
+ getBlocker : function () {
+ var d, b;
+
+ if (!this .blockerElement && this .blockMode) {
+ d = this .doc;
+ b = d.createElement("iframe" );
+
+ b.style.cssText = 'display: none; position: absolute; left: 0; top: 0' ;
+ b.src = 'javascript:false;' ;
+ b.frameBorder = '0' ;
+ b.scrolling = 'no' ;
+
+ d.body.appendChild(b);
+ this .blockerElement = b;
+ }
+
+ return this .blockerElement;
+ },
+
+
+ getAbsPosition : function (n) {
+ var p = {absLeft : 0, absTop : 0};
+
+ while (n) {
+ p.absLeft += n.offsetLeft;
+ p.absTop += n.offsetTop;
+ n = n.offsetParent;
+ }
+
+ return p;
+ },
+
+
+ create : function (n, c, p) {
+ var d = this .doc, e = d.createElement(n);
+
+ e.setAttribute('id' , this .id);
+
+ if (c)
+ e.className = c;
+
+ if (!p)
+ p = d.body;
+
+ p.appendChild(e);
+
+ return this .element = e;
+ },
+
+
+ parseInt : function (s) {
+ if (s == null || s == '' )
+ return 0;
+
+ return parseInt(s);
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Menu.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Menu.class.js.html
new file mode 100644
index 000000000..cc23ba3b6
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Menu.class.js.html
@@ -0,0 +1,361 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Menu.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Menu.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method Summary
+
+
+
+
+
+
+
+
+ static void
+
+
+
+
+
+ TinyMCE_Menu ()
+
+
+
+ Constructor for the menu layer class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_Menu() {
+ var id;
+
+ if (typeof(tinyMCE.menuCounter) == "undefined" )
+ tinyMCE.menuCounter = 0;
+
+ id = "mc_menu_" + tinyMCE.menuCounter++;
+
+ TinyMCE_Layer.call(this , id, true);
+
+ this .id = id;
+ this .items = new Array();
+ this .needsUpdate = true;
+};
+
+
+TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype , {
+
+ init : function (s) {
+ var n;
+
+
+ this .settings = {
+ separator_class : 'mceMenuSeparator' ,
+ title_class : 'mceMenuTitle' ,
+ disabled_class : 'mceMenuDisabled' ,
+ menu_class : 'mceMenu' ,
+ drop_menu : true
+ };
+
+ for (n in s)
+ this .settings[n] = s[n];
+
+ this .create('div' , this .settings.menu_class);
+ },
+
+
+ clear : function () {
+ this .items = new Array();
+ },
+
+
+ addTitle : function (t) {
+ this .add({type : 'title' , text : t});
+ },
+
+
+ addDisabled : function (t) {
+ this .add({type : 'disabled' , text : t});
+ },
+
+
+ addSeparator : function () {
+ this .add({type : 'separator' });
+ },
+
+
+ addItem : function (t, js) {
+ this .add({text : t, js : js});
+ },
+
+
+ add : function (mi) {
+ this .items[this .items.length] = mi;
+ this .needsUpdate = true;
+ },
+
+
+ update : function () {
+ var e = this .getElement(), h = '' , i, t, m = this .items, s = this .settings;
+
+ if (this .settings.drop_menu)
+ h += '<span class="mceMenuLine"></span>' ;
+
+ h += '<table border="0" cellpadding="0" cellspacing="0">' ;
+
+ for (i=0; i<m.length; i++) {
+ t = tinyMCE.xmlEncode(m[i].text);
+ c = m[i].class_name ? ' class="' + m[i].class_name + '"' : '' ;
+
+ switch (m[i].type) {
+ case 'separator' :
+ h += '<tr class="' + s.separator_class + '"><td>' ;
+ break;
+
+ case 'title' :
+ h += '<tr class="' + s.title_class + '"><td><span' + c +'>' + t + '</span>' ;
+ break;
+
+ case 'disabled' :
+ h += '<tr class="' + s.disabled_class + '"><td><span' + c +'>' + t + '</span>' ;
+ break;
+
+ default:
+ h += '<tr><td><a href="javascript:void(0);" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return false;"><span' + c +'>' + t + '</span></a>' ;
+ }
+
+ h += '</td></tr>' ;
+ }
+
+ h += '</table>' ;
+
+ e.innerHTML = h;
+
+ this .needsUpdate = false;
+ this .updateBlocker();
+ },
+
+
+ show : function () {
+ var nl, i;
+
+ if (tinyMCE.lastMenu == this )
+ return ;
+
+ if (this .needsUpdate)
+ this .update();
+
+ if (tinyMCE.lastMenu && tinyMCE.lastMenu != this )
+ tinyMCE.lastMenu.hide();
+
+ TinyMCE_Layer.prototype .show.call(this );
+
+ if (!tinyMCE.isOpera) {
+
+
+ }
+
+ tinyMCE.lastMenu = this ;
+ }
+});
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Popup.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Popup.class.js.html
new file mode 100644
index 000000000..dcbfad14d
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Popup.class.js.html
@@ -0,0 +1,511 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Popup.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Popup.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var tinyMCE = null, tinyMCELang = null;
+
+
+function TinyMCE_Popup() {
+};
+
+
+TinyMCE_Popup.prototype .init = function () {
+ var win = window.opener ? window.opener : window.dialogArguments;
+ var inst;
+
+ if (!win) {
+
+ win = parent.parent;
+
+
+ if (typeof(win.tinyMCE) == "undefined" )
+ win = top;
+ }
+
+ window.opener = win;
+ this .windowOpener = win;
+ this .onLoadEval = "" ;
+
+
+ tinyMCE = win.tinyMCE;
+ tinyMCELang = win.tinyMCELang;
+
+ if (!tinyMCE) {
+ alert("tinyMCE object reference not found from popup." );
+ return ;
+ }
+
+ inst = tinyMCE.selectedInstance;
+ this .isWindow = tinyMCE.getWindowArg('mce_inside_iframe' , false) == false;
+ this .storeSelection = (tinyMCE.isMSIE && !tinyMCE.isOpera) && !this .isWindow && tinyMCE.getWindowArg('mce_store_selection' , true);
+
+ if (this .isWindow)
+ window.focus();
+
+
+ if (this .storeSelection)
+ inst.selectionBookmark = inst.selection.getBookmark(true);
+
+
+ if (tinyMCELang['lang_dir' ])
+ document.dir = tinyMCELang['lang_dir' ];
+
+
+ var re = new RegExp('{|\\\$|}' , 'g' );
+ var title = document.title.replace(re, "" );
+ if (typeof tinyMCELang[title] != "undefined" ) {
+ var divElm = document.createElement("div" );
+ divElm.innerHTML = tinyMCELang[title];
+ document.title = divElm.innerHTML;
+
+ if (tinyMCE.setWindowTitle != null)
+ tinyMCE.setWindowTitle(window, divElm.innerHTML);
+ }
+
+
+ document.write('<link href="' + tinyMCE.getParam("popups_css" ) + '" rel="stylesheet" type="text/css">' );
+
+ tinyMCE.addEvent(window, "load" , this .onLoad);
+};
+
+
+TinyMCE_Popup.prototype .onLoad = function () {
+ var dir, i, elms, body = document.body;
+
+ if (tinyMCE.getWindowArg('mce_replacevariables' , true))
+ body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
+
+ dir = tinyMCE.selectedInstance.settings['directionality' ];
+ if (dir == "rtl" && document.forms && document.forms.length > 0) {
+ elms = document.forms[0].elements;
+ for (i=0; i<elms.length; i++) {
+ if ((elms[i].type == "text" || elms[i].type == "textarea" ) && elms[i].getAttribute("dir" ) != "ltr" )
+ elms[i].dir = dir;
+ }
+ }
+
+ if (body.style.display == 'none' )
+ body.style.display = 'block' ;
+
+
+ if (tinyMCEPopup.onLoadEval != "" )
+ eval(tinyMCEPopup.onLoadEval);
+};
+
+
+TinyMCE_Popup.prototype .executeOnLoad = function (str) {
+ if (tinyMCE.isOpera)
+ this .onLoadEval = str;
+ else
+ eval(str);
+};
+
+
+TinyMCE_Popup.prototype .resizeToInnerSize = function () {
+
+ if (this .isWindow && tinyMCE.isNS71) {
+ window.resizeBy(0, 10);
+ return ;
+ }
+
+ if (this .isWindow) {
+ var doc = document;
+ var body = doc.body;
+ var oldMargin, wrapper, iframe, nodes, dx, dy;
+
+ if (body.style.display == 'none' )
+ body.style.display = 'block' ;
+
+
+ oldMargin = body.style.margin;
+ body.style.margin = '0' ;
+
+
+ wrapper = doc.createElement("div" );
+ wrapper.id = 'mcBodyWrapper' ;
+ wrapper.style.display = 'none' ;
+ wrapper.style.margin = '0' ;
+
+
+ nodes = doc.body.childNodes;
+ for (var i=nodes.length-1; i>=0; i--) {
+ if (wrapper.hasChildNodes())
+ wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
+ else
+ wrapper.appendChild(nodes[i].cloneNode(true));
+
+ nodes[i].parentNode.removeChild(nodes[i]);
+ }
+
+
+ doc.body.appendChild(wrapper);
+
+
+ iframe = document.createElement("iframe" );
+ iframe.id = "mcWinIframe" ;
+ iframe.src = document.location.href.toLowerCase().indexOf('https' ) == -1 ? "about:blank" : tinyMCE.settings['default_document' ];
+ iframe.width = "100%" ;
+ iframe.height = "100%" ;
+ iframe.style.margin = '0' ;
+
+
+ doc.body.appendChild(iframe);
+
+
+ iframe = document.getElementById('mcWinIframe' );
+ dx = tinyMCE.getWindowArg('mce_width' ) - iframe.clientWidth;
+ dy = tinyMCE.getWindowArg('mce_height' ) - iframe.clientHeight;
+
+
+
+ window.resizeBy(dx, dy);
+
+
+ body.style.margin = oldMargin;
+ iframe.style.display = 'none' ;
+ wrapper.style.display = 'block' ;
+ }
+};
+
+
+TinyMCE_Popup.prototype .resizeToContent = function () {
+ var isMSIE = (navigator.appName == "Microsoft Internet Explorer" );
+ var isOpera = (navigator.userAgent.indexOf("Opera" ) != -1);
+
+ if (isOpera)
+ return ;
+
+ if (isMSIE) {
+ try { window.resizeTo(10, 10); } catch (e) {}
+
+ var elm = document.body;
+ var width = elm.offsetWidth;
+ var height = elm.offsetHeight;
+ var dx = (elm.scrollWidth - width) + 4;
+ var dy = elm.scrollHeight - height;
+
+ try { window.resizeBy(dx, dy); } catch (e) {}
+ } else {
+ window.scrollBy(1000, 1000);
+ if (window.scrollX > 0 || window.scrollY > 0) {
+ window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
+ window.sizeToContent();
+ window.scrollTo(0, 0);
+ var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
+ var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
+ window.moveTo(x, y);
+ }
+ }
+};
+
+
+TinyMCE_Popup.prototype .getWindowArg = function (name, default_value) {
+ return tinyMCE.getWindowArg(name, default_value);
+};
+
+
+TinyMCE_Popup.prototype .restoreSelection = function () {
+ if (this .storeSelection) {
+ var inst = tinyMCE.selectedInstance;
+
+ inst.getWin().focus();
+
+ if (inst.selectionBookmark)
+ inst.selection.moveToBookmark(inst.selectionBookmark);
+ }
+};
+
+
+TinyMCE_Popup.prototype .execCommand = function (command, user_interface, value) {
+ var inst = tinyMCE.selectedInstance;
+
+ this .restoreSelection();
+ inst.execCommand(command, user_interface, value);
+
+
+ if (this .storeSelection)
+ inst.selectionBookmark = inst.selection.getBookmark(true);
+};
+
+
+TinyMCE_Popup.prototype .close = function () {
+ tinyMCE.closeWindow(window);
+};
+
+
+TinyMCE_Popup.prototype .pickColor = function (e, element_id) {
+ tinyMCE.selectedInstance.execCommand('mceColorPicker' , true, {
+ element_id : element_id,
+ document : document,
+ window : window,
+ store_selection : false
+ });
+};
+
+
+TinyMCE_Popup.prototype .openBrowser = function (element_id, type, option) {
+ var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback" ));
+ var url = document.getElementById(element_id).value;
+
+ tinyMCE.setWindowArg("window" , window);
+ tinyMCE.setWindowArg("document" , document);
+
+
+ if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')' ) == "undefined" )
+ alert("Callback function: " + cb + " could not be found." );
+ else
+ eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);" );
+};
+
+
+TinyMCE_Popup.prototype .importClass = function (c) {
+ window[c] = function () {};
+
+ for (var n in window.opener[c].prototype )
+ window[c].prototype [n] = window.opener[c].prototype [n];
+
+ window[c].constructor = window.opener[c].constructor;
+};
+
+
+var tinyMCEPopup = new TinyMCE_Popup();
+
+tinyMCEPopup.init();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Selection.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Selection.class.js.html
new file mode 100644
index 000000000..b5d061731
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_Selection.class.js.html
@@ -0,0 +1,646 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_Selection.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_Selection.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_Selection(inst) {
+ this .instance = inst;
+};
+
+TinyMCE_Selection.prototype = {
+
+ getSelectedHTML : function () {
+ var inst = this .instance;
+ var e, r = this .getRng(), h;
+
+ if (tinyMCE.isSafari) {
+
+ return r.toString();
+ }
+
+ e = document.createElement("body" );
+
+ if (tinyMCE.isGecko)
+ e.appendChild(r.cloneContents());
+ else
+ e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
+
+ h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
+
+
+ if (tinyMCE.getParam("convert_fonts_to_spans" ))
+ tinyMCE.convertSpansToFonts(inst.getDoc());
+
+ return h;
+ },
+
+
+ getSelectedText : function () {
+ var inst = this .instance;
+ var d, r, s, t;
+
+ if (tinyMCE.isMSIE) {
+ d = inst.getDoc();
+
+ if (d.selection.type == "Text" ) {
+ r = d.selection.createRange();
+ t = r.text;
+ } else
+ t = '' ;
+ } else {
+ s = this .getSel();
+
+ if (s && s.toString)
+ t = s.toString();
+ else
+ t = '' ;
+ }
+
+ return t;
+ },
+
+
+ getBookmark : function (simple) {
+ var rng = this .getRng();
+ var doc = this .instance.getDoc();
+ var sp, le, s, e, nl, i, si, ei;
+ var trng, sx, sy, xx = -999999999;
+
+
+ if (tinyMCE.isOpera)
+ return null;
+
+ sx = doc.body.scrollLeft + doc.documentElement.scrollLeft;
+ sy = doc.body.scrollTop + doc.documentElement.scrollTop;
+
+ if (tinyMCE.isSafari || tinyMCE.isGecko)
+ return {rng : rng, scrollX : sx, scrollY : sy};
+
+ if (tinyMCE.isMSIE) {
+ if (simple)
+ return {rng : rng};
+
+ if (rng.item) {
+ e = rng.item(0);
+
+ nl = doc.getElementsByTagName(e.nodeName);
+ for (i=0; i<nl.length; i++) {
+ if (e == nl[i]) {
+ sp = i;
+ break;
+ }
+ }
+
+ return {
+ tag : e.nodeName,
+ index : sp,
+ scrollX : sx,
+ scrollY : sy
+ };
+ } else {
+ trng = rng.duplicate();
+ trng.collapse(true);
+ sp = Math.abs(trng.move('character' , xx));
+
+ trng = rng.duplicate();
+ trng.collapse(false);
+ le = Math.abs(trng.move('character' , xx)) - sp;
+
+ return {
+ start : sp,
+ length : le,
+ scrollX : sx,
+ scrollY : sy
+ };
+ }
+ }
+
+ if (tinyMCE.isGecko) {
+ s = tinyMCE.getParentElement(rng.startContainer);
+ for (si=0; si<s.childNodes.length && s.childNodes[si] != rng.startContainer; si++) ;
+
+ nl = doc.getElementsByTagName(s.nodeName);
+ for (i=0; i<nl.length; i++) {
+ if (s == nl[i]) {
+ sp = i;
+ break;
+ }
+ }
+
+ e = tinyMCE.getParentElement(rng.endContainer);
+ for (ei=0; ei<e.childNodes.length && e.childNodes[ei] != rng.endContainer; ei++) ;
+
+ nl = doc.getElementsByTagName(e.nodeName);
+ for (i=0; i<nl.length; i++) {
+ if (e == nl[i]) {
+ le = i;
+ break;
+ }
+ }
+
+
+
+
+ return {
+ startTag : s.nodeName,
+ start : sp,
+ startIndex : si,
+ endTag : e.nodeName,
+ end : le,
+ endIndex : ei,
+ startOffset : rng.startOffset,
+ endOffset : rng.endOffset,
+ scrollX : sx,
+ scrollY : sy
+ };
+ }
+
+ return null;
+ },
+
+
+ moveToBookmark : function (bookmark) {
+ var rng, nl, i;
+ var inst = this .instance;
+ var doc = inst.getDoc();
+ var win = inst.getWin();
+ var sel = this .getSel();
+
+ if (!bookmark)
+ return false;
+
+ if (tinyMCE.isSafari) {
+ sel.setBaseAndExtent(bookmark.startContainer, bookmark.startOffset, bookmark.endContainer, bookmark.endOffset);
+ return true;
+ }
+
+ if (tinyMCE.isMSIE) {
+ if (bookmark.rng) {
+ bookmark.rng.select();
+ return true;
+ }
+
+ win.focus();
+
+ if (bookmark.tag) {
+ rng = inst.getBody().createControlRange();
+
+ nl = doc.getElementsByTagName(bookmark.tag);
+
+ if (nl.length > bookmark.index) {
+ try {
+ rng.addElement(nl[bookmark.index]);
+ } catch (ex) {
+
+ }
+ }
+ } else {
+ rng = inst.getSel().createRange();
+ rng.moveToElementText(inst.getBody());
+ rng.collapse(true);
+ rng.moveStart('character' , bookmark.start);
+ rng.moveEnd('character' , bookmark.length);
+ }
+
+ rng.select();
+
+ win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+ return true;
+ }
+
+ if (tinyMCE.isGecko && bookmark.rng) {
+ sel.removeAllRanges();
+ sel.addRange(bookmark.rng);
+ win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+ return true;
+ }
+
+ if (tinyMCE.isGecko) {
+
+ rng = doc.createRange();
+
+ nl = doc.getElementsByTagName(bookmark.startTag);
+ if (nl.length > bookmark.start)
+ rng.setStart(nl[bookmark.start].childNodes[bookmark.startIndex], bookmark.startOffset);
+
+ nl = doc.getElementsByTagName(bookmark.endTag);
+ if (nl.length > bookmark.end)
+ rng.setEnd(nl[bookmark.end].childNodes[bookmark.endIndex], bookmark.endOffset);
+
+ sel.removeAllRanges();
+ sel.addRange(rng);
+
+
+ win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+ return true;
+ }
+
+ return false;
+ },
+
+
+ selectNode : function (node, collapse, select_text_node, to_start) {
+ var inst = this .instance, sel, rng, nodes;
+
+ if (!node)
+ return ;
+
+ if (typeof(collapse) == "undefined" )
+ collapse = true;
+
+ if (typeof(select_text_node) == "undefined" )
+ select_text_node = false;
+
+ if (typeof(to_start) == "undefined" )
+ to_start = true;
+
+ if (tinyMCE.isMSIE) {
+ rng = inst.getBody().createTextRange();
+
+ try {
+ rng.moveToElementText(node);
+
+ if (collapse)
+ rng.collapse(to_start);
+
+ rng.select();
+ } catch (e) {
+
+ }
+ } else {
+ sel = this .getSel();
+
+ if (!sel)
+ return ;
+
+ if (tinyMCE.isSafari) {
+ sel.setBaseAndExtent(node, 0, node, node.innerText.length);
+
+ if (collapse) {
+ if (to_start)
+ sel.collapseToStart();
+ else
+ sel.collapseToEnd();
+ }
+
+ this .scrollToNode(node);
+
+ return ;
+ }
+
+ rng = inst.getDoc().createRange();
+
+ if (select_text_node) {
+
+ nodes = tinyMCE.getNodeTree(node, new Array(), 3);
+ if (nodes.length > 0)
+ rng.selectNodeContents(nodes[0]);
+ else
+ rng.selectNodeContents(node);
+ } else
+ rng.selectNode(node);
+
+ if (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);
+
+
+ tinyMCE.selectedElement = null;
+ if (node.nodeType == 1)
+ tinyMCE.selectedElement = node;
+ },
+
+
+ scrollToNode : function (node) {
+ var inst = this .instance;
+ var pos, doc, scrollX, scrollY, height;
+
+
+ pos = tinyMCE.getAbsPosition(node);
+ doc = inst.getDoc();
+ scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft;
+ scrollY = doc.body.scrollTop + doc.documentElement.scrollTop;
+ height = tinyMCE.isMSIE ? document.getElementById(inst.editorId).style.pixelHeight : inst.targetElement.clientHeight;
+
+
+ if (!tinyMCE.settings['auto_resize' ] && !(pos.absTop > scrollY && pos.absTop < (scrollY - 25 + height)))
+ inst.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25);
+ },
+
+
+ getSel : function () {
+ var inst = this .instance;
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ return inst.getDoc().selection;
+
+ return inst.contentWindow.getSelection();
+ },
+
+
+ getRng : function () {
+ var inst = this .instance;
+ var sel = this .getSel();
+
+ if (sel == null)
+ return null;
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ return sel.createRange();
+
+ if (tinyMCE.isSafari && !sel.getRangeAt)
+ return '' + window.getSelection();
+
+ return sel.getRangeAt(0);
+ },
+
+
+ getFocusElement : function () {
+ var inst = this .instance;
+
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
+ var doc = inst.getDoc();
+ var rng = doc.selection.createRange();
+
+
+
+
+ var elm = rng.item ? rng.item(0) : rng.parentElement();
+ } else {
+ if (inst.isHidden())
+ return inst.getBody();
+
+ var sel = this .getSel();
+ var rng = this .getRng();
+
+ if (!sel || !rng)
+ return null;
+
+ var elm = rng.commonAncestorContainer;
+
+
+
+ if (!rng.collapsed) {
+
+ if (rng.startContainer == rng.endContainer) {
+ if (rng.startOffset - rng.endOffset < 2) {
+ if (rng.startContainer.hasChildNodes())
+ elm = rng.startContainer.childNodes[rng.startOffset];
+ }
+ }
+ }
+
+
+ elm = tinyMCE.getParentElement(elm);
+
+
+
+ }
+
+ return elm;
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_URL.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_URL.class.js.html
new file mode 100644
index 000000000..3ecaaef6e
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_URL.class.js.html
@@ -0,0 +1,530 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_URL.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_URL.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TinyMCE_Engine.prototype .parseURL = function (url_str) {
+ var urlParts = new Array();
+
+ if (url_str) {
+ var pos, lastPos;
+
+
+ pos = url_str.indexOf('://' );
+ if (pos != -1) {
+ urlParts['protocol' ] = url_str.substring(0, pos);
+ lastPos = pos + 3;
+ }
+
+
+ for (var i=lastPos; i<url_str.length; i++) {
+ var chr = url_str.charAt(i);
+
+ if (chr == ':' )
+ break;
+
+ if (chr == '/' )
+ break;
+ }
+ pos = i;
+
+
+ urlParts['host' ] = url_str.substring(lastPos, pos);
+
+
+ urlParts['port' ] = "" ;
+ lastPos = pos;
+ if (url_str.charAt(pos) == ':' ) {
+ pos = url_str.indexOf('/' , lastPos);
+ urlParts['port' ] = url_str.substring(lastPos+1, pos);
+ }
+
+
+ lastPos = pos;
+ pos = url_str.indexOf('?' , lastPos);
+
+ if (pos == -1)
+ pos = url_str.indexOf('#' , lastPos);
+
+ if (pos == -1)
+ pos = url_str.length;
+
+ urlParts['path' ] = url_str.substring(lastPos, pos);
+
+
+ lastPos = pos;
+ if (url_str.charAt(pos) == '?' ) {
+ pos = url_str.indexOf('#' );
+ pos = (pos == -1) ? url_str.length : pos;
+ urlParts['query' ] = url_str.substring(lastPos+1, pos);
+ }
+
+
+ lastPos = pos;
+ if (url_str.charAt(pos) == '#' ) {
+ pos = url_str.length;
+ urlParts['anchor' ] = url_str.substring(lastPos+1, pos);
+ }
+ }
+
+ return urlParts;
+};
+
+
+TinyMCE_Engine.prototype .serializeURL = function (up) {
+ var o = "" ;
+
+ if (up['protocol' ])
+ o += up['protocol' ] + "://" ;
+
+ if (up['host' ])
+ o += up['host' ];
+
+ if (up['port' ])
+ o += ":" + up['port' ];
+
+ if (up['path' ])
+ o += up['path' ];
+
+ if (up['query' ])
+ o += "?" + up['query' ];
+
+ if (up['anchor' ])
+ o += "#" + up['anchor' ];
+
+ return o;
+};
+
+
+TinyMCE_Engine.prototype .convertAbsoluteURLToRelativeURL = function (base_url, url_to_relative) {
+ var baseURL = this .parseURL(base_url);
+ var targetURL = this .parseURL(url_to_relative);
+ var strTok1;
+ var strTok2;
+ var breakPoint = 0;
+ var outPath = "" ;
+ var forceSlash = false;
+
+ if (targetURL.path == "" )
+ targetURL.path = "/" ;
+ else
+ forceSlash = true;
+
+
+ base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/' ));
+ strTok1 = base_url.split('/' );
+ strTok2 = targetURL.path.split('/' );
+
+ if (strTok1.length >= strTok2.length) {
+ for (var i=0; i<strTok1.length; i++) {
+ if (i >= strTok2.length || strTok1[i] != strTok2[i]) {
+ breakPoint = i + 1;
+ break;
+ }
+ }
+ }
+
+ if (strTok1.length < strTok2.length) {
+ for (var i=0; i<strTok2.length; i++) {
+ if (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<strTok2.length; i++) {
+ if (i != (breakPoint-1))
+ outPath += "/" + strTok2[i];
+ else
+ outPath += strTok2[i];
+ }
+
+ targetURL.protocol = null;
+ targetURL.host = null;
+ targetURL.port = null;
+ targetURL.path = outPath == "" && forceSlash ? "/" : outPath;
+
+
+ var fileName = baseURL.path;
+ var pos;
+
+ if ((pos = fileName.lastIndexOf('/' )) != -1)
+ fileName = fileName.substring(pos + 1);
+
+
+ if (fileName == targetURL.path && targetURL.anchor != "" )
+ targetURL.path = "" ;
+
+
+ if (targetURL.path == "" && !targetURL.anchor)
+ targetURL.path = fileName != "" ? fileName : "/" ;
+
+ return this .serializeURL(targetURL);
+};
+
+
+TinyMCE_Engine.prototype .convertRelativeToAbsoluteURL = function (base_url, relative_url) {
+ var baseURL = this .parseURL(base_url);
+ var relURL = this .parseURL(relative_url);
+
+ if (relative_url == "" || relative_url.charAt(0) == '/' || relative_url.indexOf('://' ) != -1 || relative_url.indexOf('mailto:' ) != -1 || relative_url.indexOf('javascript:' ) != -1)
+ return relative_url;
+
+
+ baseURLParts = baseURL['path' ].split('/' );
+ relURLParts = relURL['path' ].split('/' );
+
+
+ var newBaseURLParts = new Array();
+ for (var i=baseURLParts.length-1; i>=0; i--) {
+ if (baseURLParts[i].length == 0)
+ continue;
+
+ newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
+ }
+ baseURLParts = newBaseURLParts.reverse();
+
+
+ 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();
+
+
+ var len = baseURLParts.length-numBack;
+ var absPath = (len <= 0 ? "" : "/" ) + baseURLParts.slice(0, len).join('/' ) + "/" + relURLParts.join('/' );
+ var start = "" , end = "" ;
+
+
+ relURL.protocol = baseURL.protocol;
+ relURL.host = baseURL.host;
+ relURL.port = baseURL.port;
+
+
+ if (relURL.path.charAt(relURL.path.length-1) == "/" )
+ absPath += "/" ;
+
+ relURL.path = absPath;
+
+ return this .serializeURL(relURL);
+};
+
+
+TinyMCE_Engine.prototype .convertURL = function (url, node, on_save) {
+ var prot = document.location.protocol;
+ var host = document.location.hostname;
+ var port = document.location.port;
+
+
+ if (prot == "file:" )
+ return url;
+
+
+ url = tinyMCE.regexpReplace(url, '(http|https):///' , '/' );
+
+
+ if (url.indexOf('mailto:' ) != -1 || url.indexOf('javascript:' ) != -1 || tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20' ,'' ).charAt(0) == "#" )
+ return url;
+
+
+ if (!tinyMCE.isMSIE && !on_save && url.indexOf("://" ) == -1 && url.charAt(0) != '/' )
+ return tinyMCE.settings['base_href' ] + url;
+
+
+ if (on_save && tinyMCE.getParam('relative_urls' )) {
+ var curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], url);
+ if (curl.charAt(0) == '/' )
+ curl = tinyMCE.settings['document_base_prefix' ] + curl;
+
+ var urlParts = tinyMCE.parseURL(curl);
+ var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings['document_base_url' ]);
+
+
+ if (urlParts['host' ] == tmpUrlParts['host' ] && (urlParts['port' ] == tmpUrlParts['port' ]))
+ return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url' ], curl);
+ }
+
+
+ if (!tinyMCE.getParam('relative_urls' )) {
+ var urlParts = tinyMCE.parseURL(url);
+ var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings['base_href' ]);
+
+
+ url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], url);
+
+
+ if (urlParts['anchor' ] && urlParts['path' ] == baseUrlParts['path' ])
+ return "#" + urlParts['anchor' ];
+ }
+
+
+ if (tinyMCE.getParam('remove_script_host' )) {
+ var start = "" , portPart = "" ;
+
+ if (port != "" )
+ portPart = ":" + port;
+
+ start = prot + "//" + host + portPart + "/" ;
+
+ if (url.indexOf(start) == 0)
+ url = url.substring(start.length-1);
+ }
+
+ return url;
+};
+
+
+TinyMCE_Engine.prototype .convertAllRelativeURLs = function (body) {
+
+ var elms = body.getElementsByTagName("img" );
+ for (var i=0; i<elms.length; i++) {
+ var src = tinyMCE.getAttrib(elms[i], 'src' );
+
+ var msrc = tinyMCE.getAttrib(elms[i], 'mce_src' );
+ if (msrc != "" )
+ src = msrc;
+
+ if (src != "" ) {
+ src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], src);
+ elms[i].setAttribute("src" , src);
+ }
+ }
+
+
+ var elms = body.getElementsByTagName("a" );
+ for (var i=0; i<elms.length; i++) {
+ var href = tinyMCE.getAttrib(elms[i], 'href' );
+
+ var mhref = tinyMCE.getAttrib(elms[i], 'mce_href' );
+ if (mhref != "" )
+ href = mhref;
+
+ if (href && href != "" ) {
+ href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href' ], href);
+ elms[i].setAttribute("href" , href);
+ }
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_UndoRedo.class.js.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_UndoRedo.class.js.html
new file mode 100644
index 000000000..74809f5fb
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary-TinyMCE_UndoRedo.class.js.html
@@ -0,0 +1,296 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TinyMCE_UndoRedo.class.js
+
+
+
+
+
+
+Summary
+
+
+ No overview generated for 'TinyMCE_UndoRedo.class.js'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function TinyMCE_UndoRedo(inst) {
+ this .instance = inst;
+ this .undoLevels = new Array();
+ this .undoIndex = 0;
+ this .typingUndoIndex = -1;
+ this .undoRedo = true;
+};
+
+TinyMCE_UndoRedo.prototype = {
+
+ add : function (l) {
+ var b;
+
+ if (l) {
+ this .undoLevels[this .undoLevels.length] = l;
+ return true;
+ }
+
+ var inst = this .instance;
+
+ if (this .typingUndoIndex != -1) {
+ this .undoIndex = this .typingUndoIndex;
+
+ }
+
+ var newHTML = tinyMCE.trim(inst.getBody().innerHTML);
+ if (this .undoLevels[this .undoIndex] && newHTML != this .undoLevels[this .undoIndex].content) {
+
+
+ tinyMCE.dispatchCallback(inst, 'onchange_callback' , 'onChange' , inst);
+
+
+ var customUndoLevels = tinyMCE.settings['custom_undo_redo_levels' ];
+ if (customUndoLevels != -1 && this .undoLevels.length > customUndoLevels) {
+ for (var i=0; i<this .undoLevels.length-1; i++) {
+
+ this .undoLevels[i] = this .undoLevels[i+1];
+ }
+
+ this .undoLevels.length--;
+ this .undoIndex--;
+ }
+
+ b = inst.undoBookmark;
+ if (!b)
+ b = inst.selection.getBookmark();
+
+ this .undoIndex++;
+ this .undoLevels[this .undoIndex] = {
+ content : newHTML,
+ bookmark : b
+ };
+
+ this .undoLevels.length = this .undoIndex + 1;
+
+
+ return true;
+
+
+ }
+
+ return false;
+ },
+
+
+ undo : function () {
+ var inst = this .instance;
+
+
+ if (this .undoIndex > 0) {
+ this .undoIndex--;
+ tinyMCE.setInnerHTML(inst.getBody(), this .undoLevels[this .undoIndex].content);
+ inst.repaint();
+ if (inst.settings.custom_undo_redo_restore_selection)
+ inst.selection.moveToBookmark(this .undoLevels[this .undoIndex].bookmark);
+ }
+
+
+ },
+
+
+ redo : function () {
+ var inst = this .instance;
+
+ tinyMCE.execCommand("mceEndTyping" );
+
+ if (this .undoIndex < (this .undoLevels.length-1)) {
+ this .undoIndex++;
+ tinyMCE.setInnerHTML(inst.getBody(), this .undoLevels[this .undoIndex].content);
+ inst.repaint();
+
+
+ if (inst.settings.custom_undo_redo_restore_selection)
+ inst.selection.moveToBookmark(this .undoLevels[this .undoIndex].bookmark);
+
+ }
+
+ tinyMCE.triggerNodeChange();
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-summary.html b/www/extras/tinymce2/docs/tinymce_api/overview-summary.html
new file mode 100644
index 000000000..efd189df4
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-summary.html
@@ -0,0 +1,231 @@
+
+
+
+
+ Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JSDoc Documentation
+
+
+
+
+Summary
+
+
+ No summary generated for these documents.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/overview-tree.html b/www/extras/tinymce2/docs/tinymce_api/overview-tree.html
new file mode 100644
index 000000000..c1def274b
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/overview-tree.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+ Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Documentation generated by
JSDoc on Fri Apr 14 21:59:23 2006
+
+
diff --git a/www/extras/tinymce2/docs/tinymce_api/stylesheet.css b/www/extras/tinymce2/docs/tinymce_api/stylesheet.css
new file mode 100644
index 000000000..bbad7a426
--- /dev/null
+++ b/www/extras/tinymce2/docs/tinymce_api/stylesheet.css
@@ -0,0 +1,39 @@
+/* JSDoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Table colors */
+.TableHeadingColor { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor { background: #EEEEFF } /* Light mauve */
+.TableRowColor { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
+.FrameHeadingFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
+.FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
+
+/* Example of smaller, sans-serif font in frames */
+/* .FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */
+
+/* Navigation bar fonts and colors */
+.NavBarCell1 { background-color:#EEEEFF;}/* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */
+.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+
+.jsdoc_ctime { font-family: Arial, Helvetica, sans-serif; font-size: 9pt;
+ text-align: right }
+
+/* Sourcecode view */
+.sourceview { background: #FFFFFF }
+.attrib { color: #DD7777 }
+.comment { color: #55AA55 }
+.reserved { color: #FF5555 }
+.literal { color: #5555FF }
+
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_euc-jp.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_euc-jp.js
new file mode 100755
index 000000000..978b291a7
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_euc-jp.js
@@ -0,0 +1,8 @@
+// ja-euc-jp language pack
+
+/* Remember to namespace the language parameters lang__ */
+
+tinyMCE.addToLang('',{
+template_title : '¥Æ¥ó¥×¥ì¡¼¥È¤Î¥Ý¥Ã¥×¥¢¥Ã¥×',
+template_desc : '¥Æ¥ó¥×¥ì¡¼¥È¤Î¥Ü¥¿¥ó'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_shift_jis.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_shift_jis.js
new file mode 100755
index 000000000..8fb4a090d
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_shift_jis.js
@@ -0,0 +1,8 @@
+// ja-ƒVƒtƒgJIS language pack
+
+/* Remember to namespace the language parameters lang__ */
+
+tinyMCE.addToLang('',{
+template_title : 'ƒeƒ“ƒvƒŒ[ƒg‚̃|ƒbƒvƒAƒbƒv',
+template_desc : 'ƒeƒ“ƒvƒŒ[ƒg‚̃{ƒ^ƒ“'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_utf-8.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_utf-8.js
new file mode 100755
index 000000000..90a5bdfba
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/_template/lang/ja_utf-8.js
@@ -0,0 +1,8 @@
+// ja-utf-8 language pack
+
+/* Remember to namespace the language parameters lang__ */
+
+tinyMCE.addToLang('',{
+template_title : 'テンプレートã®ãƒãƒƒãƒ—アップ',
+template_desc : 'テンプレートã®ãƒœã‚¿ãƒ³'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin.js
new file mode 100644
index 000000000..b8b9ee9d4
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin.js
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('layer','en');var TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_layer.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};},initInstance:function(inst){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)inst.getDoc().execCommand('2D-Position');},handleEvent:function(e){var inst=tinyMCE.selectedInstance,self=TinyMCE_LayerPlugin;var w=inst.getWin(),le=inst._lastStyleElm,e;if(tinyMCE.isGecko){e=self._getParentLayer(inst.getFocusElement());if(e){if(!inst._lastStyleElm){e.style.overflow='auto';inst._lastStyleElm=e;}}else if(le){le=inst._lastStyleElm;le.style.width=le.scrollWidth+'px';le.style.height=le.scrollHeight+'px';le.style.overflow='';inst._lastStyleElm=null;}}return true;},handleVisualAid:function(el,deep,state,inst){var nl=inst.getDoc().getElementsByTagName("div"),i;for(i=0;i-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1;}}else{for(i=0;iz[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else nl[ci].style.zIndex=z[ci]+1;}inst.repaint();},_getParentLayer:function(n){return tinyMCE.getParentNode(n,function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position);});},_insertLayer:function(){var inst=tinyMCE.selectedInstance;var e=tinyMCE.getParentElement(inst.getFocusElement());var p=tinyMCE.getAbsPosition(e);var d=inst.getDoc();var ne=d.createElement('div');var h=inst.selection.getSelectedHTML();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100px';ne.style.height='100px';ne.className='mceVisualAid';if(!h)h=tinyMCE.getLang('lang_layer_content');ne.innerHTML=h;d.body.appendChild(ne);},_toggleAbsolute:function(){var inst=tinyMCE.selectedInstance,self=TinyMCE_LayerPlugin;var le=self._getParentLayer(inst.getFocusElement());if(le==null)le=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');if(le){if(le.style.position.toLowerCase()=="absolute"){le.style.position="";le.style.left="";le.style.top="";}else{le.style.position="absolute";if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';tinyMCE.handleVisualAid(inst.getBody(),true,inst.visualAid,inst);}inst.repaint();tinyMCE.triggerNodeChange();}}};tinyMCE.addPlugin("layer",TinyMCE_LayerPlugin);
\ No newline at end of file
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
new file mode 100644
index 000000000..af4934010
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
@@ -0,0 +1,252 @@
+/**
+ * $RCSfile: editor_plugin_src.js,v $
+ * $Revision: 1.2 $
+ * $Date: 2006/05/03 14:12:12 $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('layer', 'en');
+
+var TinyMCE_LayerPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Layer',
+ author : 'Moxiecode Systems',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_layer.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ if (tinyMCE.isMSIE && !tinyMCE.isOpera)
+ inst.getDoc().execCommand('2D-Position');
+ },
+
+ handleEvent : function(e) {
+ var inst = tinyMCE.selectedInstance, self = TinyMCE_LayerPlugin;
+ var w = inst.getWin(), le = inst._lastStyleElm, e;
+
+ if (tinyMCE.isGecko) {
+ e = self._getParentLayer(inst.getFocusElement());
+
+ if (e) {
+ if (!inst._lastStyleElm) {
+ e.style.overflow = 'auto';
+ inst._lastStyleElm = e;
+ }
+ } else if (le) {
+ le = inst._lastStyleElm;
+ le.style.width = le.scrollWidth + 'px';
+ le.style.height = le.scrollHeight + 'px';
+ le.style.overflow = '';
+ inst._lastStyleElm = null;
+ }
+ }
+
+ return true;
+ },
+
+ handleVisualAid : function(el, deep, state, inst) {
+ var nl = inst.getDoc().getElementsByTagName("div"), i;
+
+ for (i=0; i -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else {
+ if (z[ci] > 0)
+ nl[ci].style.zIndex = z[ci] - 1;
+ }
+ } else {
+ // Move forward
+
+ // Try find a higher one
+ for (i=0; i z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else
+ nl[ci].style.zIndex = z[ci] + 1;
+ }
+
+ inst.repaint();
+ },
+
+ _getParentLayer : function(n) {
+ return tinyMCE.getParentNode(n, function(n) {
+ return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);
+ });
+ },
+
+ _insertLayer : function() {
+ var inst = tinyMCE.selectedInstance;
+ var e = tinyMCE.getParentElement(inst.getFocusElement());
+ var p = tinyMCE.getAbsPosition(e);
+ var d = inst.getDoc();
+ var ne = d.createElement('div');
+ var h = inst.selection.getSelectedHTML();
+
+ // Move div
+ ne.style.position = 'absolute';
+ ne.style.left = p.absLeft + 'px';
+ ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px';
+ ne.style.width = '100px';
+ ne.style.height = '100px';
+ ne.className = 'mceVisualAid';
+
+ if (!h)
+ h = tinyMCE.getLang('lang_layer_content');
+
+ ne.innerHTML = h;
+
+ // Add it
+ d.body.appendChild(ne);
+ },
+
+ _toggleAbsolute : function() {
+ var inst = tinyMCE.selectedInstance, self = TinyMCE_LayerPlugin;
+ var le = self._getParentLayer(inst.getFocusElement());
+
+ if (le == null)
+ le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
+
+ if (le) {
+ if (le.style.position.toLowerCase() == "absolute") {
+ le.style.position = "";
+ le.style.left = "";
+ le.style.top = "";
+ } else {
+ le.style.position = "absolute";
+
+ if (le.style.left == "")
+ le.style.left = 20 + 'px';
+
+ if (le.style.top == "")
+ le.style.top = 20 + 'px';
+
+ if (le.style.width == "")
+ le.style.width = le.width ? (le.width + 'px') : '100px';
+
+ if (le.style.height == "")
+ le.style.height = le.height ? (le.height + 'px') : '100px';
+
+ tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+ }
+
+ inst.repaint();
+ tinyMCE.triggerNodeChange();
+ }
+ }
+};
+
+tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin);
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/absolute.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/absolute.gif
new file mode 100644
index 000000000..72cffddc3
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/absolute.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/backward.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/backward.gif
new file mode 100644
index 000000000..466b15865
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/backward.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/forward.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/forward.gif
new file mode 100644
index 000000000..e8b7a5a11
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/forward.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif
new file mode 100644
index 000000000..bc29af076
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/en.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/en.js
new file mode 100755
index 000000000..cdd8c22b2
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/en.js
@@ -0,0 +1,9 @@
+// UK lang variables
+
+tinyMCE.addToLang('layer',{
+insertlayer_desc : 'Insert new layer',
+forward_desc : 'Move forward',
+backward_desc : 'Move backward',
+absolute_desc : 'Toggle absolute positioning',
+content : 'New layer...'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fi.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fi.js
new file mode 100755
index 000000000..0332dc022
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fi.js
@@ -0,0 +1,9 @@
+// FI lang variables
+
+tinyMCE.addToLang('layer',{
+insertlayer_desc : 'Lisää uusi taso',
+forward_desc : 'Liiku eteenpäin',
+backward_desc : 'Liiku taaksepäin',
+absolute_desc : 'Kytke absoluuttinen asettelu päälle/pois',
+content : 'Uusi taso...'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fr.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fr.js
new file mode 100755
index 000000000..8d2de679d
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/fr.js
@@ -0,0 +1,9 @@
+// UK lang variables
+
+tinyMCE.addToLang('layer',{
+insertlayer_desc : 'Insérer un nouveau calque',
+forward_desc : 'Avancer',
+backward_desc : 'Reculer',
+absolute_desc : 'Passer en positionnement absolu',
+content : 'Nouveau calque...'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/it.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/it.js
new file mode 100755
index 000000000..6e85794b8
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/langs/it.js
@@ -0,0 +1,9 @@
+// IT lang variables
+
+tinyMCE.addToLang('layer',{
+insertlayer_desc : 'Inserisci nuovo layer',
+forward_desc : 'Sposta verso l\'alto',
+backward_desc : 'Sposta verso il basso',
+absolute_desc : 'Abilita o disabilita posizionamento assoluto',
+content : 'Nuovo livello...'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/readme.txt b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/readme.txt
new file mode 100644
index 000000000..4fdb78aec
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/layer/readme.txt
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/css/props.css b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/css/props.css
new file mode 100644
index 000000000..3b2e33d77
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/css/props.css
@@ -0,0 +1,63 @@
+#text_font {
+ width: 250px;
+}
+
+#text_size {
+ width: 70px;
+}
+
+.mceAddSelectValue {
+ background-color: #DDDDDD;
+}
+
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {
+ width: 70px;
+}
+
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {
+ width: 70px;
+}
+
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {
+ width: 70px;
+}
+
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {
+ width: 70px;
+}
+
+.panel_wrapper div.current {
+ padding-top: 10px;
+ height: 230px;
+}
+
+.delim {
+ b2ackground-color: #DDDDDD;
+ border-left: 1px solid gray;
+}
+
+.tdelim {
+ border-bottom: 1px solid gray;
+}
+
+#block_display {
+ width: 145px;
+}
+
+#list_type {
+ width: 115px;
+}
+
+.disabled {
+ background-color: #EEEEEE;
+}
+
+#apply {
+ font-weight: bold;
+ width: 78px;
+ height: 21px;
+ border: 0;
+ background-image: url('../images/apply_button_bg.gif');
+ cursor: pointer;
+}
+
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin.js
new file mode 100644
index 000000000..e5a33dc9d
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin.js
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('style','en');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_style.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/style_info.gif','mceStyleProps',true);}return"";},execCommand:function(editor_id,element,command,user_interface,value){var e,inst;switch(command){case"mceStyleProps":TinyMCE_StylePlugin._styleProps();return true;case"mceSetElementStyle":inst=tinyMCE.getInstanceById(editor_id);e=inst.selection.getFocusElement();if(e){e.style.cssText=value;inst.repaint();}return true;}return false;},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusElement();if(!e)return;tinyMCE.openWindow({file:'../../plugins/style/props.htm',width:480+tinyMCE.getLang('lang_style_props_delta_width',0),height:320+tinyMCE.getLang('lang_style_props_delta_height',0)},{editor_id:tinyMCE.selectedInstance.editorId,inline:"yes",style_text:e.style.cssText});}};tinyMCE.addPlugin("style",TinyMCE_StylePlugin);
\ No newline at end of file
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin_src.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
new file mode 100644
index 000000000..27ba20ee8
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
@@ -0,0 +1,81 @@
+/**
+ * $RCSfile: editor_plugin_src.js,v $
+ * $Revision: 1.1 $
+ * $Date: 2006/05/03 10:46:42 $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('style', 'en');
+
+var TinyMCE_StylePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Style',
+ author : 'Moxiecode Systems',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_style.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "styleprops":
+ return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/style_info.gif', 'mceStyleProps', true);
+ }
+
+ return "";
+ },
+
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ var e, inst;
+
+ // Handle commands
+ switch (command) {
+ case "mceStyleProps":
+ TinyMCE_StylePlugin._styleProps();
+ return true;
+
+ case "mceSetElementStyle":
+ inst = tinyMCE.getInstanceById(editor_id);
+ e = inst.selection.getFocusElement();
+
+ if (e) {
+ e.style.cssText = value;
+ inst.repaint();
+ }
+
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+ },
+
+ // Private plugin specific methods
+
+ _styleProps : function() {
+ var e = tinyMCE.selectedInstance.selection.getFocusElement();
+
+ if (!e)
+ return;
+
+ tinyMCE.openWindow({
+ file : '../../plugins/style/props.htm',
+ width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0),
+ height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0)
+ }, {
+ editor_id : tinyMCE.selectedInstance.editorId,
+ inline : "yes",
+ style_text : e.style.cssText
+ });
+ }
+};
+
+tinyMCE.addPlugin("style", TinyMCE_StylePlugin);
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif
new file mode 100644
index 000000000..979e868ab
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/style_info.gif b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/style_info.gif
new file mode 100644
index 000000000..41f227125
Binary files /dev/null and b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/images/style_info.gif differ
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/jscripts/props.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/jscripts/props.js
new file mode 100644
index 000000000..4a6a33043
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/jscripts/props.js
@@ -0,0 +1,630 @@
+var defaultFonts = "" +
+ "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Courier New, Courier, mono=Courier New, Courier, mono;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" +
+ "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" +
+ "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
+
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
+var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";
+var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
+var defaultTextStyle = "normal;italic;oblique";
+var defaultVariant = "normal;small-caps";
+var defaultLineHeight = "normal";
+var defaultAttachment = "fixed;scroll";
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
+var defaultPosH = "left;center;right";
+var defaultPosV = "top;center;bottom";
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
+var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
+var defaultBorderWidth = "thin;medium;thick";
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
+
+function init() {
+ var ce = document.getElementById('container');
+
+ ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
+
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
+ document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
+ document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
+ document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
+ document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
+ document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
+
+ fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
+ fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
+ fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
+ fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
+ fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
+ fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
+ fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
+ fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
+ fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
+
+ fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
+ fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
+
+ fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
+ fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
+ fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
+ fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
+ fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
+ fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
+ fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
+
+ fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
+ fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
+ fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
+
+ fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
+
+ fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
+ fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
+
+ fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
+ fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
+
+ fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
+
+ fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
+
+ TinyMCE_EditableSelects.init();
+ setupFormData();
+ showDisabledControls();
+}
+
+function setupFormData() {
+ var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
+
+ // Setup text fields
+
+ selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
+ selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
+ selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
+ selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
+ selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
+ selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
+ selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
+ selectByValue(f, 'text_case', ce.style.textTransform, true, true);
+ selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
+ f.text_color.value = ce.style.color;
+ updateColor('text_color_pick', 'text_color');
+ f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
+ f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
+ f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
+ f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
+
+ // Setup background fields
+
+ f.background_color.value = ce.style.backgroundColor;
+ updateColor('background_color_pick', 'background_color');
+ f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+ selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
+ selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
+ selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
+ selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
+ selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
+ selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
+
+ // Setup block fields
+
+ selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
+ selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
+ selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
+ selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
+ selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
+ selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
+ f.block_text_indent.value = getNum(ce.style.textIndent);
+ selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
+ selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
+ selectByValue(f, 'block_display', ce.style.display, true, true);
+
+ // Setup box fields
+
+ f.box_width.value = getNum(ce.style.width);
+ selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
+
+ f.box_height.value = getNum(ce.style.height);
+ selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
+
+ if (tinyMCE.isGecko)
+ selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
+ else
+ selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
+
+ selectByValue(f, 'box_clear', ce.style.clear, true, true);
+
+ setupBox(f, ce, 'box_padding', 'padding', '');
+ setupBox(f, ce, 'box_margin', 'margin', '');
+
+ // Setup border fields
+
+ setupBox(f, ce, 'border_style', 'border', 'Style');
+ setupBox(f, ce, 'border_width', 'border', 'Width');
+ setupBox(f, ce, 'border_color', 'border', 'Color');
+
+ updateColor('border_color_top_pick', 'border_color_top');
+ updateColor('border_color_right_pick', 'border_color_right');
+ updateColor('border_color_bottom_pick', 'border_color_bottom');
+ updateColor('border_color_left_pick', 'border_color_left');
+
+ // Setup list fields
+
+ selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
+ selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
+ f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+ // Setup box fields
+
+ selectByValue(f, 'positioning_type', ce.style.position, true, true);
+ selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
+ selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
+ f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
+
+ f.positioning_width.value = getNum(ce.style.width);
+ selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
+
+ f.positioning_height.value = getNum(ce.style.height);
+ selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
+
+ setupBox(f, ce, 'positioning_placement', '', '', new Array('top', 'right', 'bottom', 'left'));
+
+ s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
+ s = s.replace(/,/g, ' ');
+
+ if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)))) {
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+ f.positioning_clip_right.value = getNum(getVal(s, 1));
+ selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
+ f.positioning_clip_bottom.value = getNum(getVal(s, 2));
+ selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
+ f.positioning_clip_left.value = getNum(getVal(s, 3));
+ selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
+ } else {
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+ f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
+ }
+
+// setupBox(f, ce, '', 'border', 'Color');
+}
+
+function getMeasurement(s) {
+ return s.replace(/^([0-9]+)(.*)$/, "$2");
+}
+
+function getNum(s) {
+ if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))
+ return s.replace(/[^0-9]/g, '');
+
+ return s;
+}
+
+function inStr(s, n) {
+ return new RegExp(n, 'gi').test(s);
+}
+
+function getVal(s, i) {
+ var a = tinyMCE.explode(' ', s);
+
+ if (a.length > 1)
+ return a[i];
+
+ return "";
+}
+
+function setValue(f, n, v) {
+ if (f.elements[n].type == "text")
+ f.elements[n].value = v;
+ else
+ selectByValue(f, n, v, true, true);
+}
+
+function setupBox(f, ce, fp, pr, sf, b) {
+ if (typeof(b) == "undefined")
+ b = new Array('Top', 'Right', 'Bottom', 'Left');
+
+ if (isSame(ce, pr, sf, b)) {
+ f.elements[fp + "_same"].checked = true;
+
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_top"].disabled = false;
+
+ f.elements[fp + "_right"].value = "";
+ f.elements[fp + "_right"].disabled = true;
+ f.elements[fp + "_bottom"].value = "";
+ f.elements[fp + "_bottom"].disabled = true;
+ f.elements[fp + "_left"].value = "";
+ f.elements[fp + "_left"].disabled = true;
+
+ if (f.elements[fp + "_top_measurement"]) {
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_left_measurement"].disabled = true;
+ f.elements[fp + "_bottom_measurement"].disabled = true;
+ f.elements[fp + "_right_measurement"].disabled = true;
+ }
+ } else {
+ f.elements[fp + "_same"].checked = false;
+
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_top"].disabled = false;
+
+ setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
+ f.elements[fp + "_right"].disabled = false;
+
+ setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
+ f.elements[fp + "_bottom"].disabled = false;
+
+ setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
+ f.elements[fp + "_left"].disabled = false;
+
+ if (f.elements[fp + "_top_measurement"]) {
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+ selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
+ selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
+ selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
+ f.elements[fp + "_left_measurement"].disabled = false;
+ f.elements[fp + "_bottom_measurement"].disabled = false;
+ f.elements[fp + "_right_measurement"].disabled = false;
+ }
+ }
+}
+
+function isSame(e, pr, sf, b) {
+ var a = new Array(), i, x;
+
+ if (typeof(b) == "undefined")
+ b = new Array('Top', 'Right', 'Bottom', 'Left');
+
+ if (typeof(sf) == "undefined" || sf == null)
+ sf = "";
+
+ a[0] = e.style[pr + b[0] + sf];
+ a[1] = e.style[pr + b[1] + sf];
+ a[2] = e.style[pr + b[2] + sf];
+ a[3] = e.style[pr + b[3] + sf];
+
+ for (i=0; i 0 ? s.substring(1) : s;
+
+ if (f.text_none.checked)
+ s = "none";
+
+ ce.style.textDecoration = s;
+
+ // Build background styles
+
+ ce.style.backgroundColor = f.background_color.value;
+ ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
+ ce.style.backgroundRepeat = f.background_repeat.value;
+ ce.style.backgroundAttachment = f.background_attachment.value;
+
+ if (f.background_hpos.value != "") {
+ s = "";
+ s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
+ s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
+ ce.style.backgroundPosition = s;
+ }
+
+ // Build block styles
+
+ ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
+ ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
+ ce.style.verticalAlign = f.block_vertical_alignment.value;
+ ce.style.textAlign = f.block_text_align.value;
+ ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
+ ce.style.whiteSpace = f.block_whitespace.value;
+ ce.style.display = f.block_display.value;
+
+ // Build box styles
+
+ ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
+ ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
+ ce.style.styleFloat = f.box_float.value;
+
+ if (tinyMCE.isGecko)
+ ce.style.cssFloat = f.box_float.value;
+
+ ce.style.clear = f.box_clear.value;
+
+ if (!f.box_padding_same.checked) {
+ ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+ ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
+ ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
+ ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
+ } else
+ ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+
+ if (!f.box_margin_same.checked) {
+ ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+ ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
+ ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
+ ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
+ } else
+ ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+
+ // Build border styles
+
+ if (!f.border_style_same.checked) {
+ ce.style.borderTopStyle = f.border_style_top.value;
+ ce.style.borderRightStyle = f.border_style_right.value;
+ ce.style.borderBottomStyle = f.border_style_bottom.value;
+ ce.style.borderLeftStyle = f.border_style_left.value;
+ } else
+ ce.style.borderStyle = f.border_style_top.value;
+
+ if (!f.border_width_same.checked) {
+ ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+ ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
+ ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
+ ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
+ } else
+ ce.style.borderWidth = f.border_width_top.value;
+
+ if (!f.border_color_same.checked) {
+ ce.style.borderTopColor = f.border_color_top.value;
+ ce.style.borderRightColor = f.border_color_right.value;
+ ce.style.borderBottomColor = f.border_color_bottom.value;
+ ce.style.borderLeftColor = f.border_color_left.value;
+ } else
+ ce.style.borderColor = f.border_color_top.value;
+
+ // Build list styles
+
+ ce.style.listStyleType = f.list_type.value;
+ ce.style.listStylePosition = f.list_position.value;
+ ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
+
+ // Build positioning styles
+
+ ce.style.position = f.positioning_type.value;
+ ce.style.visibility = f.positioning_visibility.value;
+
+ if (ce.style.width == "")
+ ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
+
+ if (ce.style.height == "")
+ ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
+
+ ce.style.zIndex = f.positioning_zindex.value;
+ ce.style.overflow = f.positioning_overflow.value;
+
+ if (!f.positioning_placement_same.checked) {
+ ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+ ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
+ ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
+ ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
+ } else {
+ s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+ ce.style.top = s;
+ ce.style.right = s;
+ ce.style.bottom = s;
+ ce.style.left = s;
+ }
+
+ if (!f.positioning_clip_same.checked) {
+ s = "rect(";
+ s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
+ s += ")";
+
+ if (s != "rect(auto auto auto auto)")
+ ce.style.clip = s;
+ } else {
+ s = "rect(";
+ t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
+ s += t + " ";
+ s += t + " ";
+ s += t + " ";
+ s += t + ")";
+
+ if (s != "rect(auto auto auto auto)")
+ ce.style.clip = s;
+ }
+
+ ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText));
+}
+
+function isNum(s) {
+ return new RegExp('[0-9]+', 'g').test(s);
+}
+
+function showDisabledControls() {
+ var f = document.forms, i, a;
+
+ for (i=0; i 1) {
+ addSelectValue(f, s, p[0], p[1]);
+
+ if (se)
+ selectByValue(f, s, p[1]);
+ } else {
+ addSelectValue(f, s, p[0], p[0]);
+
+ if (se)
+ selectByValue(f, s, p[0]);
+ }
+ }
+}
+
+function toggleSame(ce, pre) {
+ var el = document.forms[0].elements, i;
+
+ if (ce.checked) {
+ el[pre + "_top"].disabled = false;
+ el[pre + "_right"].disabled = true;
+ el[pre + "_bottom"].disabled = true;
+ el[pre + "_left"].disabled = true;
+
+ if (el[pre + "_top_measurement"]) {
+ el[pre + "_top_measurement"].disabled = false;
+ el[pre + "_right_measurement"].disabled = true;
+ el[pre + "_bottom_measurement"].disabled = true;
+ el[pre + "_left_measurement"].disabled = true;
+ }
+ } else {
+ el[pre + "_top"].disabled = false;
+ el[pre + "_right"].disabled = false;
+ el[pre + "_bottom"].disabled = false;
+ el[pre + "_left"].disabled = false;
+
+ if (el[pre + "_top_measurement"]) {
+ el[pre + "_top_measurement"].disabled = false;
+ el[pre + "_right_measurement"].disabled = false;
+ el[pre + "_bottom_measurement"].disabled = false;
+ el[pre + "_left_measurement"].disabled = false;
+ }
+ }
+
+ showDisabledControls();
+}
+
+function synch(fr, to) {
+ var f = document.forms[0];
+
+ f.elements[to].value = f.elements[fr].value;
+
+ if (f.elements[fr + "_measurement"])
+ selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
+}
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/de.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/de.js
new file mode 100755
index 000000000..2a1416dab
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/de.js
@@ -0,0 +1,60 @@
+// UK lang variables
+
+tinyMCE.addToLang('style',{
+title : 'CSS Stil editieren',
+styleinfo_desc : 'CSS Stil editieren',
+text_tab : 'Text',
+background_tab : 'Hintergrund',
+block_tab : 'Block',
+box_tab : 'Box',
+border_tab : 'Rahmen',
+list_tab : 'Liste',
+positioning_tab : 'Positionierung',
+text_props : 'Text',
+text_font : 'Schriftart',
+text_size : 'Grösse',
+text_weight : 'Dicke',
+text_style : 'Stil',
+text_variant : 'Variante',
+text_lineheight : 'Linienhöhe',
+text_case : 'Gross-/Kleinbuchstaben',
+text_color : 'Farbe',
+text_decoration : 'Dekoration',
+background_color : 'Hintergrundfarbe',
+background_image : 'Hintergrundfoto',
+background_repeat : 'Wiederholen',
+background_attachment : 'Anhang',
+background_hpos : 'Horizontale Position',
+background_vpos : 'Vertikale Position',
+block_wordspacing : 'Wortabstand',
+block_letterspacing : 'Zeichenabstand',
+block_vertical_alignment : 'Vertikale Ausrichtung',
+block_text_align : 'Horizontale Ausrichtung',
+block_text_indent : 'Texteinrückung',
+block_whitespace : 'Textumbruch',
+block_display : 'Anzeigeart',
+box_width : 'Breite',
+box_height : 'Höhe',
+box_float : 'Text umfliessen',
+box_clear : 'Text umfliessen beenden',
+padding : 'Innenabstand',
+same : 'Das gleiche für alle',
+top : 'Oben',
+right : 'Rechts',
+bottom : 'Unten',
+left : 'Links',
+margin : 'Aussenabstand',
+style : 'Stil',
+width : 'Breite',
+height : 'Höhe',
+color : 'Farbe',
+list_type : 'Listentyp',
+bullet_image : 'Grafik',
+position : 'Position',
+positioning_type : 'Typ',
+visibility : 'Sichtbarkeit',
+zindex : 'Z-index',
+overflow : 'Überfluss',
+placement : 'Plazierung',
+clip : 'Abschneiden'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/en.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/en.js
new file mode 100755
index 000000000..6bed70f72
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/en.js
@@ -0,0 +1,66 @@
+// UK lang variables
+
+tinyMCE.addToLang('style',{
+title : 'Edit CSS Style',
+styleinfo_desc : 'Edit CSS Style',
+apply : 'Apply',
+text_tab : 'Text',
+background_tab : 'Background',
+block_tab : 'Block',
+box_tab : 'Box',
+border_tab : 'Border',
+list_tab : 'List',
+positioning_tab : 'Positioning',
+text_props : 'Text',
+text_font : 'Font',
+text_size : 'Size',
+text_weight : 'Weight',
+text_style : 'Style',
+text_variant : 'Variant',
+text_lineheight : 'Line height',
+text_case : 'Case',
+text_color : 'Color',
+text_decoration : 'Decoration',
+text_overline : 'overline',
+text_underline : 'underline',
+text_striketrough : 'strikethrough',
+text_blink : 'blink',
+text_none : 'none',
+background_color : 'Background color',
+background_image : 'Background image',
+background_repeat : 'Repeat',
+background_attachment : 'Attachment',
+background_hpos : 'Horizontal position',
+background_vpos : 'Vertical position',
+block_wordspacing : 'Word spacing',
+block_letterspacing : 'Letter spacing',
+block_vertical_alignment : 'Vertical alignment',
+block_text_align : 'Text align',
+block_text_indent : 'Text indent',
+block_whitespace : 'Whitespace',
+block_display : 'Display',
+box_width : 'Width',
+box_height : 'Height',
+box_float : 'Float',
+box_clear : 'Clear',
+padding : 'Padding',
+same : 'Same for all',
+top : 'Top',
+right : 'Right',
+bottom : 'Bottom',
+left : 'Left',
+margin : 'Margin',
+style : 'Style',
+width : 'Width',
+height : 'Height',
+color : 'Color',
+list_type : 'Type',
+bullet_image : 'Bullet image',
+position : 'Position',
+positioning_type : 'Type',
+visibility : 'Visibility',
+zindex : 'Z-index',
+overflow : 'Overflow',
+placement : 'Placement',
+clip : 'Clip'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fi.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fi.js
new file mode 100755
index 000000000..b4ddf80ad
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fi.js
@@ -0,0 +1,66 @@
+// FI lang variables
+
+tinyMCE.addToLang('style',{
+title : 'Muokkaa CSS tyyliä',
+styleinfo_desc : 'Muokkaa CSS tyyliä',
+apply : 'Päivitä',
+text_tab : 'Teksti',
+background_tab : 'Tausta',
+block_tab : 'Lohko',
+box_tab : 'Laatikko',
+border_tab : 'Reunaviiva',
+list_tab : 'Lista',
+positioning_tab : 'Asettelu',
+text_props : 'Teksti',
+text_font : 'Kirjasin',
+text_size : 'Koko',
+text_weight : 'Lihavointi',
+text_style : 'Tyyli',
+text_variant : 'Variantti',
+text_lineheight : 'Rivikorkeus',
+text_case : 'Isot/pienet kirjaimet',
+text_color : 'Väri',
+text_decoration : 'Koristelu',
+text_overline : 'ylleviivaus',
+text_underline : 'alleviivaus',
+text_striketrough : 'yliviivaus',
+text_blink : 'vilkkuva',
+text_none : 'ei mitään',
+background_color : 'Taustaväri',
+background_image : 'Taustakuva',
+background_repeat : 'Toisto',
+background_attachment : 'Kiinnitys',
+background_hpos : 'Vaakasijoitus',
+background_vpos : 'Pystysijoitus',
+block_wordspacing : 'Sanavälitys',
+block_letterspacing : 'Kirjainvälitys',
+block_vertical_alignment : 'Pystyasettelu',
+block_text_align : 'Tekstin tasaus',
+block_text_indent : 'Tekstin sisennys',
+block_whitespace : 'Rivitys',
+block_display : 'Näyttötapa',
+box_width : 'Leveys',
+box_height : 'Korkeus',
+box_float : 'Float',
+box_clear : 'Clear',
+padding : 'Täyte',
+same : 'Sama kaikille',
+top : 'Ylä',
+right : 'Oikea',
+bottom : 'Ala',
+left : 'Vasen',
+margin : 'Marginaali',
+style : 'Tyyli',
+width : 'Leveys',
+height : 'Korkeus',
+color : 'Väri',
+list_type : 'Tyyppi',
+bullet_image : 'Luettelokuva',
+position : 'Paikka',
+positioning_type : 'Tyyppi',
+visibility : 'Näkyvyys',
+zindex : 'Z-indeksi',
+overflow : 'Overflow',
+placement : 'Asettelu',
+clip : 'Clip'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fr.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fr.js
new file mode 100755
index 000000000..2da3d1f6f
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/fr.js
@@ -0,0 +1,66 @@
+// FR lang variables
+
+tinyMCE.addToLang('style',{
+title : 'Edtiteur de style CSS',
+styleinfo_desc : 'Edtiteur de style CSS',
+apply : 'Appliquer',
+text_tab : 'Texte',
+background_tab : 'Fond',
+block_tab : 'Bloc',
+box_tab : 'Boite',
+border_tab : 'Bord',
+list_tab : 'Liste',
+positioning_tab : 'Positionnement',
+text_props : 'Texte',
+text_font : 'Fonte',
+text_size : 'Taille',
+text_weight : 'Poid',
+text_style : 'Style',
+text_variant : 'Variant',
+text_lineheight : 'Hauteur de ligne',
+text_case : 'Casse',
+text_color : 'Couleur',
+text_decoration : 'Décoration',
+text_overline : 'surligné',
+text_underline : 'souligné',
+text_striketrough : 'barré',
+text_blink : 'clignotant',
+text_none : 'aucun',
+background_color : 'Couleur de fond',
+background_image : 'Image de fond',
+background_repeat : 'Répéter',
+background_attachment : 'Attacher',
+background_hpos : 'Position horizontal',
+background_vpos : 'Position vertical',
+block_wordspacing : 'Espace entre les mots',
+block_letterspacing : 'Espace entre les lettres',
+block_vertical_alignment : 'Aligenement vertical',
+block_text_align : 'Aligement du texte',
+block_text_indent : 'Indentation du texte',
+block_whitespace : 'Espace',
+block_display : 'Afficher',
+box_width : 'Largeur',
+box_height : 'Hauteur',
+box_float : 'Float',
+box_clear : 'Clear',
+padding : 'Padding',
+same : 'Identique pour tous',
+top : 'Haut',
+right : 'Droite',
+bottom : 'Bas',
+left : 'Gauche',
+margin : 'Marge',
+style : 'Style',
+width : 'Largeur',
+height : 'Hauteur',
+color : 'Couleur',
+list_type : 'Type',
+bullet_image : 'Bullet image',
+position : 'Position',
+positioning_type : 'Type',
+visibility : 'Visibilité',
+zindex : 'Z-index',
+overflow : 'Overflow',
+placement : 'Placement',
+clip : 'Clip'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/it.js b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/it.js
new file mode 100755
index 000000000..3540c909c
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/langs/it.js
@@ -0,0 +1,60 @@
+// IT lang variables
+
+tinyMCE.addToLang('style',{
+title : 'Modifica stile CSS',
+styleinfo_desc : 'Modifica stile CSS',
+text_tab : 'Testo',
+background_tab : 'Sfondo',
+block_tab : 'Blocco',
+box_tab : 'Box',
+border_tab : 'Bordo',
+list_tab : 'Lista',
+positioning_tab : 'Posizionamento',
+text_props : 'Testo',
+text_font : 'Font',
+text_size : 'Dimensione',
+text_weight : 'Peso',
+text_style : 'Stile',
+text_variant : 'Variante',
+text_lineheight : 'Altezza linea',
+text_case : 'Caso',
+text_color : 'Colore',
+text_decoration : 'Decorazione',
+background_color : 'Colore di sfondo',
+background_image : 'Immagine di sfondo',
+background_repeat : 'Ripeti',
+background_attachment : 'Ancoraggio',
+background_hpos : 'Posizione orizzontale',
+background_vpos : 'Posizione verticale',
+block_wordspacing : 'Spaziatura parole',
+block_letterspacing : 'Spaziatura lettere',
+block_vertical_alignment : 'Allineamento verticale',
+block_text_align : 'Allineamento del testo',
+block_text_indent : 'Indentazione del testo',
+block_whitespace : 'Whitespace',
+block_display : 'Display',
+box_width : 'Larghezza',
+box_height : 'Altezza',
+box_float : 'Float',
+box_clear : 'Clear',
+padding : 'Spaziatura interna',
+same : 'Uguale per tutti',
+top : 'Alto',
+right : 'Destra',
+bottom : 'Basso',
+left : 'Sinistra',
+margin : 'Margine esterno',
+style : 'Stile',
+width : 'Larghezza',
+height : 'Altezza',
+color : 'Colore',
+list_type : 'Tipo',
+bullet_image : 'Immagine punto elenco',
+position : 'Posizionamento',
+positioning_type : 'Tipo',
+visibility : 'Visibilità',
+zindex : 'Z-index',
+overflow : 'Overflow',
+placement : 'Piazzamento',
+clip : 'Clip'
+});
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/props.htm b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/props.htm
new file mode 100644
index 000000000..cd2788236
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/props.htm
@@ -0,0 +1,580 @@
+
+
+ {$lang_style_title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/readme.txt b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/readme.txt
new file mode 100644
index 000000000..4fdb78aec
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/plugins/style/readme.txt
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/www/extras/tinymce2/jscripts/tiny_mce/utils/editable_selects.js b/www/extras/tinymce2/jscripts/tiny_mce/utils/editable_selects.js
new file mode 100644
index 000000000..81c99eb5c
--- /dev/null
+++ b/www/extras/tinymce2/jscripts/tiny_mce/utils/editable_selects.js
@@ -0,0 +1,63 @@
+/**
+ * $RCSfile: editable_selects.js,v $
+ * $Revision: 1.1 $
+ * $Date: 2006/04/10 09:30:19 $
+ *
+ * Makes select boxes editable.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_EditableSelects = {
+ editSelectElm : null,
+
+ init : function() {
+ var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+ for (i=0; i